しばらく輪読を休んでたけど、再開した。第7章「メモリ」。 章末の練習問題を見ながら、みんなで議論していた。
- メモリのページとはなにか
- OSとCPUがメモリを管理する単位
- 仮想メモリとは何か
- Linuxの用語では、ページングとスワッピングの違いは何か
- スワップデバイスのスワップファイルの違い?
- スワップ領域のサイズはいくつに設定する?
- Chapter 7. Swap Space
- 定期的にメモリをダンプして再開
- live migration プロセスの状態を保存して移動 コンテナだとこういうの CRIU
- デマンドページングの目的は何か
- 仮想 => 物理のマッピング作成の遅延評価
- これがないとCoWができない
- メモリの使用率と飽和を説明しなさい
- MMUとTLBの目的は何か
- MMU: 仮想アドレスから物理アドレスへの変換
- L1だけ仮想アドレス参照なのはなぜか?
- L2以降はあとでつけたしたから?
- L1には命令キャッシュが入ってるから?
- 単に仮想アドレスで参照すれば速いため?
- TLBは仮想アドレスから物理アドレスへの変換のキャッシュ
- スレッドあたりのエントリ数が決められている => HyperThreading コンテキストスイッチ発生してもキャッシュが消えないメリットある?
- ページアウトデーモンの役割は何か
- ページキャッシュの掃除 フリーリストにいれる。kswapd
- フリーリストはどこ?=> カーネル内。 図7-13
- OOMキラーの役割は何か
- プロセスを殺してメモリを強制解放する
- select_bad_process() に選ばれないようにする oom_adj OOMキラー - Linuxの備忘録とか・・・(目次へ)
- 無名ページングとはなにか。ファイルシステムページングよりもこの種のページングを分析するほうが重要なのはなぜか
- プロセスのプライベートデータのページング。ヒープ領域やスタック領域など。
- ファイルシステムキャッシュはOSが追い出せる。プロセスのプライベートデータを解放できるのはアプリケーションのみ。
- フリーメモリが不足したときに、メモリを広げるためにカーネルが取る手段を説明しなさい
- スラブベースのアロケーションのパフォーマンス上の利点
- ページアロケーションのオーバヘッドが小さい
- ページサイズ以下ならスラブを使う?
- Linuxメモリ管理の最先端を探る(1/2) − @IT
- Linux スラブ・アロケーターの徹底調査
最後に、Mackerelにおける時系列データベースの性能改善 / Performance Improvement of TSDB in Mackerel // Speaker Deck でのディスクスラッシング問題について話をした。
激しい random writeにより、ページイン数が爆発し、メモリを飽和させるので、ページアウト数もまた爆発する。ページキャッシュがなくなるため、read時にキャッシュミスし、read I/Oが増加する現象。
posxix_fadvise(2)のPOSIX_FADV_RANDOMにより、write時のページインの先読みを切ることができる。これにより、ページイン数を減らすことができる。
posxix_fadvise(2)のパッチをあてた前後で、
/proc/meminfo
のActive(file)とInactive(file)に変化があった。バッチ前は、Inactiveが多く、パッチ後はActiveが増えた。ActiveとInactiveの定義は以下の通り。
Active: Memory that has been used more recently and usually not reclaimed unless absolutely necessary. Inactive: Memory which has been less recently used. It is more eligible to be reclaimed for other purposes
https://www.kernel.org/doc/Documentation/filesystems/proc.txt

- 作者: Brendan Gregg,西脇靖紘,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/02/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る