Upgrade to Pro — share decks privately, control downloads, hide ads and more …

リクエスト単位でコンピュータリソースを分離可能なWebサーバのリソース制御アーキテクチャ

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 リクエスト単位でコンピュータリソースを分離可能なWebサーバのリソース制御アーキテクチャ

Avatar for MATSUMOTO Ryosuke

MATSUMOTO Ryosuke PRO

September 28, 2013
Tweet

More Decks by MATSUMOTO Ryosuke

Other Decks in Technology

Transcript

  1. 研究の背景 •  Webサーバへのアクセス数の増加   –  スマートフォンの普及   –  Webサービスの無料・低価格化と普及  

    –  よりリッチなWebアプリケーションが求められる   •  Webサービスの低価格化と安定性向上が課題   –  Webサービスの高集積マルチテナント環境   –  テナント単位でセキュリティやリソースを管理   –  既存のWebサーバのリソース制御では困難   4
  2. Webサーバのリソース制御 •  既存のリソース制御アーキテクチャ   –  リソース値を閾値処理で制御   –  閾値を超えるとリクエスト処理を強制切断・拒否  

    –  受けるか受けないかの単純な制御   •  問題点の概要   –  クライアントの印象が悪い・問い合わせ殺到   –  サーバの品質を保つためだと説明するが・・・   –  品質を上げるためのリソース制御が全体としてサー ビス品質が低下させている場合が多い   5
  3. 本研究 •  Webサーバの新しいリソース制御を提案   – 管理者が柔軟にリソース制御ルールを記述可能   – リソースを分離して処理するアーキテクチャ   – リソース分離範囲内で継続的に処理  

    •  高集積マルチテナント環境にも最適   – テナント(ホスト)・リクエスト単位でリソース分離   – 特定のリクエストのリソース占有を防ぐ   – 占有を防ぎつつ継続的に処理   6
  4. Webサーバのリソース制御設定 •  リクエスト単位で閾値によるリソース制御   –  CPU使用時間や同時接続数等   –  リクエスト処理途中で強制切断(CPU使用時間)  

    –  閾値超過中はリクエストを拒否(同時接続数)   •  問題点   –  リクエストの切断・拒否中はサービス停止と同様   –  切断・拒否を伴う場合適切な閾値設定が困難   –  対応が後手に回る場合が多い   –  せいぜいファイルやIP単位での設定で複数の条件に よる制御構造が設定できない等ルール記述の自由 度が低い   8
  5. リソース制御の課題 •  リソース制御の設定を柔軟にできる仕組み   –  Webサービスの大規模・複雑化にも対応   –  Webサーバの内部情報や複数条件で制御構造記述  

    –  リソース制御とアクセス制御やプロキシ処理を連携   •  サービス停止しないようにリソースを制御   –  閾値で処理を停止する事なく継続してリクエスト処理   –  特定のリクエストのリソース占有を防ぐ   9
  6. 提案するリソース制御 •  ドメイン固有言語(DSL)で制御ルールを記述   –  スクリプト言語のようにルール記述が可能   –  リソース制御ルールを変更後即時反映可能  

    –  DSL実行のオーバーヘッドが少ないアーキテクチャ   •  制御ルールに基づいて仮想的にリソースを分離   –  閾値処理ではなくリソース分離内で継続的に処理   –  リクエスト処理同士で影響を受けない   –  CPU、CPUコア、DISK  I/O等のリソースを対象 11
  7. 提案するリソース制御概要(1) 12           Server  Process Client

      仮想リソース領域   CPU  10%・Disk  write  5MB/s   DSL記述設定     CPU  10%   Disk  write  5MB/s   create Request処理時にaIach リソースコントローラ Request 設定読込 •  リクエスト処理中のみサーバプロセスを仮想リソース領域に分離   •  DSL記述によるWebサーバの機能拡張とみなす   •  オーバーヘッドの少ないスクリプト言語による機能拡張機構が必要  
  8. 提案するリソース制御概要(2) 13           Server  Process Client

      仮想リソース領域   DSL記述   create Request処理時にaIach Request DSL実行 機能拡張機構 リソースコントローラ   リソースコントローラ: DSLで使用するメソッドやクラスの定義       機能拡張機構: Webサーバの拡張、DSLの言語仕様の定義、DSLの実行  
  9. 提案するリソース制御詳細(1) •  DSLによる機能拡張機構   –  オーバーヘッドが少なく高速・省メモリに動作   –  mod_mruby[1]  

    –  Rubyを使って柔軟で可読性の高いDSLを定義可能   •  リソースコントローラ + DSL記述設定   –  mrubyの拡張(mrbgem)として実装   •  リソース分離   –  Linux  Cgroups(Linux  Kernel  2.6.24以降)   –  プロセス単位でOSリソースを制御   •  Webサーバソフトウェア   –  Linux  Kernel  3.10+ Apache  HTTP  Server  2.4.6   14 [1]  松本亮介・岡部寿男,  組み込みスクリプト言語mrubyを利用したWebサーバの機能拡張支援機構,  情報処 理学会研究報告 Vol.2012-­‐IOT-­‐18,  No.6,  2012年6月.
  10. 15           Apache  Server  Process Client

      cgroups  1  (cpu.cgi)     CPU  10%         Ruby  DSL     config  1   target  cpu.cgi   CPU  10%       config  2   target  io.cgi   CPU  50%   Disk  Write  1MB/sec     create aIach mod_mruby   cgroups  2  (io.cgi)     CPU  50%     Disk  Write  1MB/sec   mruby   Request   cpu.cgi リソースコントローラ DSL実行 提案するリソース制御詳細(2)
  11. Ruby  DSLによる制御ルール例 16 r = Apache::Request.new! ! if r.filename ==

    “/path/to/cpu.cgi”! cpu = Cgroup::CPU.new “cpu_group”! # CPUを10%に制御したい場合! cpu.cfs_quota_us = 10000! cpu.create ! cpu.attach! end
  12. 実験環境 クライアント CPU Intel  Core2Duo  E6600  3.06GHz Memory 8GB  

    NIC Realtek  RTL8111/8168B  1Gbps OS Fedora  18  Linux  kernel  3.10 18 サーバ CPU Intel  Corei7-­‐4770K  3.5GHz Memory 32GB   NIC Intel  I217V  1Gbps OS Fedora  19  Linux  kernel  3.10 MiddleWare(Web  server) Apache/2.4.6
  13. 評価(2) •  リクエスト処理時間による精度評価   – CPU100%使用するループCGIを使用   – そのCGIをCPU使用率50%にリソース制御   – ループ回数によって1リクエスト処理時間を変化  

    – リクエスト処理時間を変動させ性能制御率を測定   – abコマンドで同時接続数10、総接続数1000   ※ 性能制御率: リソース制御前後で1秒間のリクエスト処理数 が何%低下しているか(本実験では50%に近ければより良い)     20
  14. 考察 •  リソース制御値より低く制御される場合   – 1リクエスト処理時間が0msec〜6msec   – プロセスを仮想リソース領域に分離する処理が オーバーヘッド   • 

    適切にリソース制御が機能するには   – 比較的処理時間の長いコンテンツ   – 本実験環境では7msec以上   22
  15. まとめと今後の予定 •  まとめ   –  管理者が柔軟にリソース制御ルールを記述   –  リクエスト・ホスト単位でリソースを分離  

    –  高集積マルチテナント環境にも適している     •  今後の予定   –  仮想リソース領域の分離処理の最適化   –  Disk  I/O制御の評価   –  トラフィック・メモリも統一的に扱う実装追加   –  リソース消費の統計値を計測する機能追加   24