BSD読書会


5.12.3 スワッピング



        2013/3/23
              @K5_sem
           BSD読書会
5.12.3(P.235~236)の流れ
●   スワッピングの解説
●   5.12.3の流れ
    ●
        スワッピングとは
    ●   スワップ処理
    ●   スワップアウト処理
    ●
        4.4BSDおよびFreeBSDのスワップアウトデーモン
    ●
        スワップアウトの仕組み
スワッピングとは
●   深刻なメモリ不足への対策としてスワッピング
    がある。以下のいずれかの条件の時にスワッピ
    ングが行われる
    ●
        ページプロセスによるメモリの解放では間に合わな
        いぐらいのメモリ不足
    ●   プロセスが10秒以上完全に動作を停止

    ※スワッピング
     主記憶が不足した時に、主記憶と二次記憶の間でプ
    ロセス全体を移動させるメモリ管理アルゴリズム(用
    語集。P.672)
スワップ処理
●   以下を含めて、プロセスを主記憶上から完全に
    削除する。
    ●   プロセスのページテーブル・まだスワップ空間にお
        かれていないデータ・スタックセグメントのペー
        ジ・ユーザ構造体&スレッドスタック
        ※一般的に、スワップスケジューリング機構は高負
        荷環境では有効に動作しない。スワッピングアルゴ
        リズムよりもページ置換アルゴリズムのほうが性能
        がよい。
スワップアウト処理
●   スワップアウトデーモンvmdaemon(プロセス番
    号3)によって処理される。
    ●   スワップアウトポリシーはvm_daemon関数で実装さ
        れている。
        –   「vm/vm_pageout.c lines 127, 128, 133, 146, 1478,
            1484, 1492行」参照。
    ●   10秒以上休眠→スワップアウト
    ●
        ↑で該当するプロセスない&2秒以上休眠&十分な
        メモリある→スワップアウト
        –    swap_idle_threshold「vm/vm_glue.c lines 865, 866,
            867, 873, 874, 875, 975, 978, 998, 1003, 1016行」参
            照。
            ※スワップアウトデーモン=ページアウトデーモン?
4.4BSDおよびFreeBSDのスワップ
               アウトデーモン
●   4.4BSDのスワップアウトデーモン
    ●
        深刻なメモリ不足の際は、最も長時間レジデントな
        状態にあった実行可能なプロセスをスワップアウト
        –   特定のプロセスが完全に動作停止してしまうのを防ぐた
            めに、スワップ対象のプロセスを順番に選択
●   FreeBSDのスワップアウトデーモン
    ●   実行可能なプロセスをスワップアウトの対象としな
        い
        –   実行可能なプロセスがメモリ内に収まらなければデッド
            ロックのリスクがあるが、昨今の計算機はメモリが充分
            だから大丈夫
            ●
                But クラウド普及&VMが沢山→メモリ不十分な計算機の環境
                もあり得る昨今では、大丈夫とは言い切れないのでは!?
スワップアウトの仕組み
●   ①スワップインプロセスがメモリ上にない
    (P_INMEMはクリアされてる)
    ●
        powerpc/powerpc/db_trace.c, line 141
●   ②スワップアウト処理の間はPS_SWAPPINGOUTフ
    ラグ有効
    ●   vm/vm_glue.c lines 792, 839, 955, 1062, 1084, 1096
    ●   sys/proc.h, line 667
●   ③実行可能なプロセスをスワップアウト→実行
    可能なプロセスのキューから取り除く
●   ④プロセスのユーザ構造体とスレッドのカーネ
    ルスタックにページングのマークをつける
    →標準的なページアウトの仕組みで処理

Bsd5.12.3

  • 1.
    BSD読書会 5.12.3 スワッピング 2013/3/23 @K5_sem BSD読書会
  • 2.
    5.12.3(P.235~236)の流れ ● スワッピングの解説 ● 5.12.3の流れ ● スワッピングとは ● スワップ処理 ● スワップアウト処理 ● 4.4BSDおよびFreeBSDのスワップアウトデーモン ● スワップアウトの仕組み
  • 3.
    スワッピングとは ● 深刻なメモリ不足への対策としてスワッピング がある。以下のいずれかの条件の時にスワッピ ングが行われる ● ページプロセスによるメモリの解放では間に合わな いぐらいのメモリ不足 ● プロセスが10秒以上完全に動作を停止 ※スワッピング  主記憶が不足した時に、主記憶と二次記憶の間でプ ロセス全体を移動させるメモリ管理アルゴリズム(用 語集。P.672)
  • 4.
    スワップ処理 ● 以下を含めて、プロセスを主記憶上から完全に 削除する。 ● プロセスのページテーブル・まだスワップ空間にお かれていないデータ・スタックセグメントのペー ジ・ユーザ構造体&スレッドスタック ※一般的に、スワップスケジューリング機構は高負 荷環境では有効に動作しない。スワッピングアルゴ リズムよりもページ置換アルゴリズムのほうが性能 がよい。
  • 5.
    スワップアウト処理 ● スワップアウトデーモンvmdaemon(プロセス番 号3)によって処理される。 ● スワップアウトポリシーはvm_daemon関数で実装さ れている。 – 「vm/vm_pageout.c lines 127, 128, 133, 146, 1478, 1484, 1492行」参照。 ● 10秒以上休眠→スワップアウト ● ↑で該当するプロセスない&2秒以上休眠&十分な メモリある→スワップアウト –  swap_idle_threshold「vm/vm_glue.c lines 865, 866, 867, 873, 874, 875, 975, 978, 998, 1003, 1016行」参 照。 ※スワップアウトデーモン=ページアウトデーモン?
  • 6.
    4.4BSDおよびFreeBSDのスワップ アウトデーモン ● 4.4BSDのスワップアウトデーモン ● 深刻なメモリ不足の際は、最も長時間レジデントな 状態にあった実行可能なプロセスをスワップアウト – 特定のプロセスが完全に動作停止してしまうのを防ぐた めに、スワップ対象のプロセスを順番に選択 ● FreeBSDのスワップアウトデーモン ● 実行可能なプロセスをスワップアウトの対象としな い – 実行可能なプロセスがメモリ内に収まらなければデッド ロックのリスクがあるが、昨今の計算機はメモリが充分 だから大丈夫 ● But クラウド普及&VMが沢山→メモリ不十分な計算機の環境 もあり得る昨今では、大丈夫とは言い切れないのでは!?
  • 7.
    スワップアウトの仕組み ● ①スワップインプロセスがメモリ上にない (P_INMEMはクリアされてる) ● powerpc/powerpc/db_trace.c, line 141 ● ②スワップアウト処理の間はPS_SWAPPINGOUTフ ラグ有効 ● vm/vm_glue.c lines 792, 839, 955, 1062, 1084, 1096 ● sys/proc.h, line 667 ● ③実行可能なプロセスをスワップアウト→実行 可能なプロセスのキューから取り除く ● ④プロセスのユーザ構造体とスレッドのカーネ ルスタックにページングのマークをつける →標準的なページアウトの仕組みで処理