学部時代の卒研を学会(SIGOS)で発表したときの資料です。
低優先度処理を指定可能なリアルタイム処理向けI/Oスケジューラ 髙村成道,鵜川始陽,岩崎英哉電気通信大学2014年 3月 7日
View Slide
リアルタイムサービスの普及 • リアルタイム性を必要とするWebサービスの例 • ソーシャルゲーム,チャット,SNS... • 定期的なメンテナンスが必須 ⇒ サービスを継続したままメンテナンスを行う 2 オンラインメンテナンス
オンラインメンテナンス • 問題点• 作業負荷によるサービス品質の低下⇒ 本研究では I/O 負荷に着目• I/O 負荷を伴うオンラインメンテナンスの例• データベースサーバ上の巨大なログファイルの削除 3
オンラインメンテナンスの例 (1) 巨大なログの削除(緊急性がない作業)データベースプロセス メンテナンスプロセス 4
オンラインメンテナンスの例 (2) データベースプロセス メンテナンスプロセス メンテナンス処理により本来優先すべき処理が妨げられてしまう データベース処理のスループットが減少5
I/O スケジューラ • I/O 要求を適切に並び替えるソフトウェア• Linux カーネルに組み込まれているリアルタイム処理 I/O 優先度指定 CFQスケジューラ Deadlineスケジューラ 6 ⇒リアルタイム処理向きであり,かつ,優先度指定可能な I/O スケジューラは無い☓
目的・方針 目的オンラインメンテナンスによるサービスの品質低下を防ぐ方針• 低優先度処理が指定可能なリアルタイム向けのI/O スケジューラの実装⇒ Deadline スケジューラを拡張 7
物理 デバイス ファイルシステム VFS ディスク キャッシュ 汎用ブロック層 I/O スケジューラ層 デバイス ドライバ カーネル空間 プロセス ユーザ空間 ファイル I/O の概略 デバイス ドライバ 物理 デバイス 8
汎用ブロック層 I/O スケジューラ サブキュー ディスパッチキュー デバイスドライバ 物理 デバイス I/O スケジューラの動作概要 9 要求の並び替え 処理する順に 要求を格納 処理順序の制御は 要求がサブキューに ある場合に可能
Deadline スケジューラの動作 時間 サブキュー ディスパッチ キュー メンテナンス処理の要求 データベース処理の要求 1 1 1 1 2 2 2 2 3 3 10
Deadline スケジューラの拡張 • 処理性能の維持• 低優先度処理の追加• 低優先度処理のスループット制限• I/O 帯域の有効活用11
低優先度処理のスループット制限(1) データベースプロセス メンテナンスプロセス 低優先度処理のスループットを抑え,メインの処理に多くのスループットを割り当てる 12
低優先度処理のスループット制限(2) • 通常(データベース処理)の要求はそのまま処理する• 低優先度要求は一定時間ごとに保留する• 保留の処理はサブキューを用いる 13
低優先度処理のスループット制限(3)時間 1 1 1 1 2 2 2 2 3 3 α α 14 サブキュー ディスパッチ キュー メンテナンス処理の要求 データベース処理の要求
I/O 帯域の有効活用(1) データベースプロセス メンテナンスプロセス 一定時間,メインの処理が行われない場合,低優先度処理のスループット制限を解除 15
I/O 帯域の有効活用(2)時間 1 1 1 1 2 2 3 3 4 4 5 5 β α 16 サブキュー ディスパッチ キュー α
I/O 帯域の有効活用(3)時間 5 17 サブキュー ディスパッチ キュー 6 6 2 2 7 α 7 β 8 9 8 9
2つのモード • 通常モード• 低優先度処理のスループット制限をして処理する• バッチモード• 低優先度処理のスループット制限をせずに処理する18
タイマによるディスパッチ制御 • カーネルタイマを利用• α 時間後に1つの低優先度要求をディスパッチ• β 時間後にバッチモードへ切り替え,すべての低優先度要求をディスパッチ19
実験環境 OS CentOS release 6.5 (Final) Linux カーネル 3.12.7 CPU Intel Core i7-3770 @ 3.40GHz 4 コア メモリ 8 GiB 物理デバイス 1 SSD 240GB(Intel SSDSC2CT240A4) 物理デバイス 2 HDD 320 GB, 7200 rpm(Hitachi HDP72503) ベンチマークツール sysbench 20
評価: 低優先度処理の影響 (1) 実験内容• データベースサーバ(MySQL)を利用• 低優先度処理がある場合は,ない場合と比較して何%の性能が出るかを測定 • 通常の処理: データベース処理• 低優先度処理: Sequential Read• α = 200ms, β = 500 ms21
0102030405060708090100110HDD SSDNormal I/O TPS / Low Prio I/O TPS [%]評価: 低優先度処理の影響 (2) 010HDD SSDDeadline Our Scheduler010HDD SSDDeadline Our Scheduler22
0102030405060708090100110HDD SSDNormal I/O TPS / Low Prio I/O TPS [%]評価: 低優先度処理の影響 (2) 010HDD SSDDeadline Our Scheduler010HDD SSDDeadline Our Scheduler23 既存のDeadline スケジューラでは, 70 % 以上の性能が低下した
0102030405060708090100110HDD SSDNormal I/O TPS / Low Prio I/O TPS [%]評価: 低優先度処理の影響 (2) 010HDD SSDDeadline Our Scheduler010HDD SSDDeadline Our Scheduler24 本機構では,1 % 未満の性能低下に抑えることができた
評価: スループットの推移 実験内容• 5GB のファイル読み込み• 2つの処理に対して,1秒ごとにスループットを測定し,変化を確認• 通常の処理: Sequential Read• 低優先度処理: Sequential Read• α = 200 ms, β = 5000 ms25
0501001502002500 5 10 15 20 25 30 35 40 45Throughput ( Mbytes/sec )Time ( sec )Deadline Normal I/O評価: スループットの推移 26 Deadline での通常処理と Deadline での低優先度処理 低優先度処理が通常の処理を妨げている
0501001502002500 5 10 15 20 25 30 35 40 45Throughput ( Mbytes/sec )Time ( sec )Deadline Normal I/O評価: スループットの推移 27 本機構での通常の処理 通常の処理がすぐに完了し,その後スループットを有効活用している 本機構での低優先度処理 β
評価: 拡張によるオーバーヘッド 実験内容• 1 分間のファイルアクセスを実行• スループット (Mbytes/sec) を比較0102030405060708090100110SeqRead RndRead SeqWrite RndWriteOur Scheduler / Deadline [%]28 通常のI/O要求を処理する上で,既存のDeadline スケジューラと 本機構との性能差はほぼない
関連研究(1) • 汎用向けの高性能スケジューラ• CFQスケジューラの高性能化 [Lunde, 2009]• 各種スケジューラの高性能化 [Seelam, 2005]• 高速デバイス向けのスケジューラ• SSD 向けのスケジューラの実装 [Dunnら, 2009]• Fusion-io 向けのスケジューラの実装 [Robin, 2013]⇒高速化が目的でありオンラインメンテナンスに配慮したスケジューラを実現する研究ではない29
関連研究(2) • cgroups [Linux 準拠 (v2.6.24 以降)]• スケジューラに依存することなく,スループットの上限を指定可能• プロセスごとに設定が必要⇒本研究では,I/O スケジューラを拡張した 30
まとめ • 低優先度を指定可能なリアルタイム処理向けの I/O スケジューラの設計・実装を行った• 提案機構の評価を行い有効性を確認した• 既存のものでは性能低下が70 % 以上であるのに対し、本機構では 1% 未満に抑えることができた31
32
α の設定値によるスループットの変化 33 02040608010012010 50 100 150 200 250 300Throughput ( Mbytes/sec )Time ( sec )
物理 デバイス ファイルシステム VFS ディスク キャッシュ 汎用ブロック層 I/O スケジューラ層 デバイス ドライバ カーネル空間 プロセス ユーザ空間 ファイル I/O の概略 デバイス ドライバ 物理 デバイス 34
Deadline スケジューラの動作 (1) 35 セクタ番号順I/O 要求の発行順末尾 先頭 処理実行 s: セクタ番号 t: 発行要求時刻 並べ替えキュー 期限付きキュー s: 41t: 5 s: 41t: 5 s: 98t: 2 s: 98t: 2 s: 23t: 3 s: 23t: 3
拡張後のスケジューラの動作 (1) 36 処理実行 低優先度キュー s: 77t: 7 低優先度 要求の追加 s: 64t: 6 並べ替えキュー 期限付きキュー s: 98t: 2 s: 41t: 5 s: 23t: 3 s: 23t: 3 s: 98t: 2 s: 41t: 5 s: 64t: 6
拡張後のスケジューラの動作 (2) 37 処理実行 低優先度キュー s: 77t: 7 s: 64t: 6 並べ替えキュー 期限付きキュー s: 98t: 2 s: 41t: 5 s: 23t: 3 s: 23t: 3 s: 98t: 2 s: 41t: 5 s: 64t: 6
拡張後のスケジューラの動作 (3) 38 処理実行 低優先度キュー s: 77t: 7 s: 64t: 6 並べ替えキュー 期限付きキュー s: 98t: 2 s: 41t: 5 s: 98t: 2 s: 41t: 5 s: 64t: 6
拡張後のスケジューラの動作 (4) 39 並べ替えキュー 処理実行 期限付きキュー 低優先度キュー s: 77t: 7
実装: カーネルタイマによる制御時間 Sub Q Dispatch Q 1 1 1 1 2 2 3 3 4 4 5 5 β α 40 set(β) set(α) set(α) dispatch() dispatch() dispatch() dispatch() mode(normal) mode(batch)