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時間