SlideShare a Scribd company logo
1 of 7
Download to read offline
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
●   ③実行可能なプロセスをスワップアウト→実行
    可能なプロセスのキューから取り除く
●   ④プロセスのユーザ構造体とスレッドのカーネ
    ルスタックにページングのマークをつける
    →標準的なページアウトの仕組みで処理

More Related Content

What's hot

JavaScriptで加速度・回転情報を取得してみた
JavaScriptで加速度・回転情報を取得してみたJavaScriptで加速度・回転情報を取得してみた
JavaScriptで加速度・回転情報を取得してみたiPride Co., Ltd.
 
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖Kiyoshi Sawada
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 sandai
 
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 sandai
 
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖Kiyoshi Sawada
 
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門 【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門 sandai
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
フロントエンド開発の3ステップ(npm事始め)
フロントエンド開発の3ステップ(npm事始め)フロントエンド開発の3ステップ(npm事始め)
フロントエンド開発の3ステップ(npm事始め)hashedrock
 
黒い画面と(少し)仲良くなろう
黒い画面と(少し)仲良くなろう黒い画面と(少し)仲良くなろう
黒い画面と(少し)仲良くなろうlittlebustersreply
 
My sqlで遭遇したトランザクションとロックのお話take2 2
My sqlで遭遇したトランザクションとロックのお話take2 2My sqlで遭遇したトランザクションとロックのお話take2 2
My sqlで遭遇したトランザクションとロックのお話take2 2拓 小林
 

What's hot (14)

Tmux
TmuxTmux
Tmux
 
Tmux
TmuxTmux
Tmux
 
JavaScriptで加速度・回転情報を取得してみた
JavaScriptで加速度・回転情報を取得してみたJavaScriptで加速度・回転情報を取得してみた
JavaScriptで加速度・回転情報を取得してみた
 
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
 
【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門 【学習メモ#9th】12ステップで作る組込みOS自作入門
【学習メモ#9th】12ステップで作る組込みOS自作入門
 
【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門 【学習メモ#8th】12ステップで作る組込みOS自作入門
【学習メモ#8th】12ステップで作る組込みOS自作入門
 
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
 
【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門 【学習メモ#11th】12ステップで作る組込みOS自作入門
【学習メモ#11th】12ステップで作る組込みOS自作入門
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
フロントエンド開発の3ステップ(npm事始め)
フロントエンド開発の3ステップ(npm事始め)フロントエンド開発の3ステップ(npm事始め)
フロントエンド開発の3ステップ(npm事始め)
 
node.js
node.jsnode.js
node.js
 
黒い画面と(少し)仲良くなろう
黒い画面と(少し)仲良くなろう黒い画面と(少し)仲良くなろう
黒い画面と(少し)仲良くなろう
 
Javaメモリ勉強会
Javaメモリ勉強会Javaメモリ勉強会
Javaメモリ勉強会
 
My sqlで遭遇したトランザクションとロックのお話take2 2
My sqlで遭遇したトランザクションとロックのお話take2 2My sqlで遭遇したトランザクションとロックのお話take2 2
My sqlで遭遇したトランザクションとロックのお話take2 2
 

Viewers also liked

マジックとITの可能性
マジックとITの可能性マジックとITの可能性
マジックとITの可能性K5_sem
 
Tmp20130822
Tmp20130822Tmp20130822
Tmp20130822K5_sem
 
Prml3 4
Prml3 4Prml3 4
Prml3 4K5_sem
 
Bsd5.10.1
Bsd5.10.1Bsd5.10.1
Bsd5.10.1K5_sem
 
Oss magic
Oss magicOss magic
Oss magicK5_sem
 
Prml3 4
Prml3 4Prml3 4
Prml3 4K5_sem
 
Prml5 6
Prml5 6Prml5 6
Prml5 6K5_sem
 
Tmp20130824
Tmp20130824Tmp20130824
Tmp20130824K5_sem
 
Prml7 2
Prml7 2Prml7 2
Prml7 2K5_sem
 

Viewers also liked (9)

マジックとITの可能性
マジックとITの可能性マジックとITの可能性
マジックとITの可能性
 
Tmp20130822
Tmp20130822Tmp20130822
Tmp20130822
 
Prml3 4
Prml3 4Prml3 4
Prml3 4
 
Bsd5.10.1
Bsd5.10.1Bsd5.10.1
Bsd5.10.1
 
Oss magic
Oss magicOss magic
Oss magic
 
Prml3 4
Prml3 4Prml3 4
Prml3 4
 
Prml5 6
Prml5 6Prml5 6
Prml5 6
 
Tmp20130824
Tmp20130824Tmp20130824
Tmp20130824
 
Prml7 2
Prml7 2Prml7 2
Prml7 2
 

Similar to Bsd5.12.3

Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料KamezawaHiroyuki
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方Funato Takashi
 
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節Yuichiro Saito
 
MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編gree_tech
 
最近の身の回りの電力事情
最近の身の回りの電力事情最近の身の回りの電力事情
最近の身の回りの電力事情Kenichiro MATOHARA
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
WebサーバのチューニングYu Komiya
 
20181112 SRE本輪読会#26_22章_カスケード障害
20181112 SRE本輪読会#26_22章_カスケード障害20181112 SRE本輪読会#26_22章_カスケード障害
20181112 SRE本輪読会#26_22章_カスケード障害harutsugu shimoji
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 installMakoto Uehara
 
How to backup your mroonga database?
How to backup your mroonga database?How to backup your mroonga database?
How to backup your mroonga database?yoku0825
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
Gangliaはじめました
GangliaはじめましたGangliaはじめました
Gangliaはじめましたyuzorock
 
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御Yuto Takei
 
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1VarnishCache入門Rev2.1
VarnishCache入門Rev2.1Iwana Chan
 
Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?Sunao Tomita
 
2022.03.21 nasクラウド連携
2022.03.21 nasクラウド連携2022.03.21 nasクラウド連携
2022.03.21 nasクラウド連携ssuser3440151
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
Cloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するCloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するRyo Ishii
 

Similar to Bsd5.12.3 (20)

Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
 
Kernel fcache-bug
Kernel fcache-bugKernel fcache-bug
Kernel fcache-bug
 
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
 
MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編
 
最近の身の回りの電力事情
最近の身の回りの電力事情最近の身の回りの電力事情
最近の身の回りの電力事情
 
Osc2011 Do
Osc2011 DoOsc2011 Do
Osc2011 Do
 
Open VZ
Open VZOpen VZ
Open VZ
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
20181112 SRE本輪読会#26_22章_カスケード障害
20181112 SRE本輪読会#26_22章_カスケード障害20181112 SRE本輪読会#26_22章_カスケード障害
20181112 SRE本輪読会#26_22章_カスケード障害
 
Aerospike v3 install
Aerospike v3 installAerospike v3 install
Aerospike v3 install
 
How to backup your mroonga database?
How to backup your mroonga database?How to backup your mroonga database?
How to backup your mroonga database?
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Gangliaはじめました
GangliaはじめましたGangliaはじめました
Gangliaはじめました
 
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
 
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1VarnishCache入門Rev2.1
VarnishCache入門Rev2.1
 
Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?
 
2022.03.21 nasクラウド連携
2022.03.21 nasクラウド連携2022.03.21 nasクラウド連携
2022.03.21 nasクラウド連携
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
Cloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するCloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続する
 

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 ● ③実行可能なプロセスをスワップアウト→実行 可能なプロセスのキューから取り除く ● ④プロセスのユーザ構造体とスレッドのカーネ ルスタックにページングのマークをつける →標準的なページアウトの仕組みで処理