LinuCレベル3 プラットフォームスペシャリスト プラットフォームの最適化 問11
プラットフォームの最適化/カーネルパラメータによるリソース最適化カーネルパラメータ vm.dirty_expire_centisecs が 3000 に設定されている。この設定の意味として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「プラットフォームの最適化」に対応。実際の試験問題ではありません)
- Aダーティページの総量が3000ページを超えると、書き込みを行うプロセスが待たされるようになる
- Bカーネルのフラッシャースレッドが3000秒ごとに起床し、ダーティページの書き出しを行う
- C3000ミリ秒ごとに、ディスクへ書き出されていないページキャッシュ全体を破棄して空きメモリを増やす
- Dダーティになってから30秒を超えたデータが、次にフラッシャースレッドが動くときに書き出しの対象になる
正解:D
解説
vm.dirty_expire_centisecs は、ダーティデータ(メモリ上で変更されたがディスクへ未反映のデータ)が、どれだけ古くなったらフラッシャースレッドによる書き出しの対象になるかを、1/100秒単位で指定します。3000は30秒を意味します。フラッシャースレッドが起床する間隔は別のパラメータ vm.dirty_writeback_centisecs(1/100秒単位)で指定します。値を小さくすると停電等で失われうるデータ量は減りますが、書き出しの回数が増えてI/Oの負荷は上がります。
選択肢ごとの解説
- A誤り。書き込みを行うプロセスが待たされる閾値はvm.dirty_ratioやvm.dirty_bytesで指定し、単位もページ数ではありません。
- B誤り。フラッシャースレッドの起床間隔はvm.dirty_writeback_centisecsで指定します。また単位は秒ではなく1/100秒です。
- C誤り。メモリを空けるための回収では、ダーティページはディスクへ書き出してから解放されるもので、未反映のまま捨てて空きメモリを作ることはしません。単位もミリ秒ではありません。
- D正しい。1/100秒単位で指定し、3000は30秒を超えたダーティデータを書き出しの対象にするという意味です。