
t0mmy
2020年12月30日に参加
学習履歴詳細
Linux の仕組み 増量改訂版 4章 メモリ管理システム 読了
やったこと
- Linux の仕組み 増量改訂版 4章 メモリ管理システム
学び
- プロセスのメモリリークを観察したい場合は、
ps aux
で表示できる%MEM
値の推移を見ると良い - OOM Killer は非常に危険
- 対策しよう
- マシンスペック不足なら、メモリ増設や常駐プロセスの削減
- プロセスのメモリリークを疑う
- 書籍の、「仮想記憶が無かったら?(意訳)」の解説より
- elf はエントリーメモリアドレス何かも決まっている事を学んだ
- 仮想アドレスを獲得しただけでは、メモリ使用量は増えない
- 仮想アドレス取得後、仮想アドレスを参照する処理を実行した時に初めて、OSは(仮想アドレスに対応する)物理アドレスを割り当てる
気付き
- メモリに関する情報は、個人的には
free -h
が読みやすい - 「プログラムがメモリの参照を要求した時に初めて、物理アドレスを割り当てる」という挙動は、一種の遅延読み込み?
- 「必要な時に、必要な分だけメモリを割り当て、不要になったらさっさと開放する」という当たり前のことの重要性を再認識した
- メモリリークや、ページテーブルの肥大化に繋がる
メモ
- メモリに関する情報は、
free
,sar
,vmstat
等から取得できるfree -h
が読みやすい
- プロセス別のメモリ使用量を確認する場合は、
ps aux
(特にu
オプション)の推移を見る- ユースケース : プロセスのメモリリークを観察する場合
- OOM Killer は危険
- メモリ不足時、OSが、動いているプロセスを強制終了してしまう
- ユーザからみると、突然プロセスが終了してしまう恐ろしい現象
- 書籍の、「仮想記憶が無かったら?(意訳)」の解説によると、仮想アドレスの仕組みが存在しない場合、マルチプロセス処理が非常に困難になる
- プログラマが、メモリ空間を厳密に管理しなければならない
- elf (
readelf
コマンドから読み取ることが出来る )
- 仮想アドレスを獲得しただけでは、メモリ使用量は増えない
- 「メモリ使用量は増えない」を言い換えると、「OSは、物理アドレスを割り当てない」
- 仮想アドレス取得後、仮想アドレスを参照する処理を実行した時に初めて、OSは(仮想アドレスに対応する)物理アドレスを割り当てる
- 内部では、ページフォールトが発生している
- 仮想アドレス獲得
- 仮想アドレス参照
- (仮想アドレスに対応する物理アドレスが存在しないため)ページフォールト発生
- 仮想アドレスに対応する物理アドレスを割り当てる
- 仮想アドレス参照が可能に
- OSには、仮想アドレスを小さく保つ工夫が実装されている
- ページテーブルの階層化
- ヒュージページ
Linux
2023年03月19日(日)
2.0時間