Contenu connexe Similaire à 10分で分かるLinuxブロックレイヤ Similaire à 10分で分かるLinuxブロックレイヤ (20) Plus de Takashi Hoshino (20) 10分で分かるLinuxブロックレイヤ4. IO スケジューラ
• IO リクエストを並べ変える
• 種類(kernel 3.13)
– noop
– cfq (プロセスに対して公平)
– deadline (レイテンシ重視)
• ⽣生 HDD に対しては効果が⼤大きい
• むしろ邪魔になることもある
4
5. ブロックデバイスドライバのインターフェース
• bio interface
– 全て⾃自分で⾯面倒を⾒見見なければならない
• reqeust-queue (single) interface
– IOスケジューラの恩恵を受けられる
– システムで 1 つしかキューがないので
ボトルネックに
• request-queue (multi) interface
– 昨今の⾼高速デバイス/マルチコアシステム⽤用
– Kernel 3.13 or later
5
7. IO インターフェース (投げる側)
void generic_make_request(struct bio *bio);
• bio の中⾝身(抜粋)
– データバッファ
– read or write フラグ
– その他フラグ
• FLUSH: 直前までの全 write IO の永続化を保証
• FUA: 当該 IO の永続化を保証
• DISCARD: SSD などの trim/unmap ⽤用のフラグ
– bi_end_io: IO 完了了時に呼ばれるコールバック
7
8. IO インターフェース (投げられる側)
void make_request(struct request_queue *q,
struct bio *bio);
• bio interface 使⽤用時のコールバック
– q 内のデータを使ってデバイスを特定し,
IO に必要な処理理を実⾏行行
– make_request() は並列列に呼ばれる可能性も
– IO が完了了したら bio_endio() を呼んでブロッ
クレイヤに伝える
8
10. dm (device mapper)
• 機能
– 仮想化
– Snapshot (dm-snap)
– Thin-provisioning (dm-thinp)
– Software RAID (dm-raid, md を流流⽤用)
– 暗号化(dm-crypt)
• LVM2 ツール他から操作
10
12. 最近の話題
• Atomic IO
– MySQL の double-write などが必要なくなる
– まだ汎⽤用ではない
• NVM (Non-volatile-memory)
– Block layer を使わないインターフェースを提案
– ⾼高速な flash memory などのため
• TPPS (Tiny Parallel Proportion Scheduler)
– cgoup + ⾼高速デバイス向け
12
14. 参考⽂文献
• 詳解LINUXカーネル第3版
– Daniel P. Bovet, Marco Cesati
• Linux Block IO: Introducing Multi-queue
SSD Access on Multi-core Systems
– Matias Bjørling, Jens Axboe, David Nellans,
Philippe Bonnet
• Linux Weekly News
– http://lwn.net/
14