LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問23
性能・拡張性の設計/性能の改善SATA HDDを搭載したLinuxサーバーでトランザクション処理を担うデータベースが動いている。ランダムI/Oの最大待ち時間を抑えてDB応答遅延を改善するため、I/Oスケジューラの変更を検討している。最も適切な選択はどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)
- Anone: カーネルによるI/O並べ替えを行わない。NVMe SSDのように内部で高い並列性を持つデバイスに適しており、HDDのDB環境でも同様の効果が期待できる
- Bmq-deadline: リクエストごとに期限切れまでの上限時間を設け、HDDのランダムI/Oがいつまでも後回しにされないよう最大待ち時間を制限する
- Ckyber: 高並列なNVMeデバイス向けに設計されており、HDDを使ったDB環境のランダムI/O遅延を最小化するために最も広く推奨される
- Dbfq: プロセスごとにI/O帯域を比例配分し、HDDのデータベース処理でのランダムリードの最大レイテンシを最小化できる
正解:B
解説
mq-deadline(旧deadline)スケジューラは各I/Oリクエストにデッドライン(上限待ち時間)を設け、デッドライン超過を防ぐことでHDDのランダムI/Oの最大待ち時間を抑えます。シーケンシャル寄りの最適化を行いながらも個々のリクエストの遅延を保証するため、HDDを使ったデータベースのランダムI/O性能改善に向いています。noneはNVMe/SSDのハードウェアキューに委ねる設計でHDDには適しません。kyberも高並列なNVMeデバイス向けです。bfqはI/O帯域の公平配分を目的としており、特定プロセスのランダムI/Oの最大レイテンシを最小化することに特化していません。
選択肢ごとの解説
- A誤り。noneスケジューラはNVMe SSDのように内部で高い並列性を持つデバイス向けです。HDDには合わず、DB応答遅延の改善には不向きです。
- B正しい。mq-deadlineはリクエストごとにデッドラインを設けることで、HDDのランダムI/Oがいつまでも後回しにされず最大待ち時間を抑えます。
- C誤り。kyberスケジューラは高並列NVMeデバイス向けに設計されており、HDDのDB環境への適用は意図されていません。
- D誤り。bfqはI/O帯域をプロセス間で比例配分することを目的としており、特定のDBプロセスのランダムI/O最大レイテンシを最小化することに特化していません。