Linuxカーネル解読室(10日目)
- 1.5.3 リアルタイムプロセス
- 1.5.4 マルチプロセッサシステムにおけるプロセススケジューリング
- ある程度実行優先度の逆転が起きてもプロセスが実行されるCPUは変わらない方が良い。
- キャッシュメモリの有効利用が1点、アドレス変換バッファ(仮想メモリ→物理メモリの変換テーブルのキャッシュ)の有効利用が1点。
- なので、Linuxでは基本的にプロセスは1つのCPUに張り付いている。
- Intel系CPUにあるハイパースレッディングは、CPU一つでマルチコアもどきの動作をするけど、Linuxではそんなこと気にしていない。
- SMPシステムでは、全てのCPUが等価にバスやメモリを共有していることによる限界がある。
- NUMA(Non-UniformedMemoryArchitecture)ではSMPマシンを1つのノードとして複数のノードを高速スイッチで相互接続するような構造をしているが、Linuxカーネルではノード間の移動を禁止している。
- NUMAでの負荷バランスの調整は、exec処理をするとき負荷が低いノードを選択し実行ノードとする形で行われる。
- ある程度実行優先度の逆転が起きてもプロセスが実行されるCPUは変わらない方が良い。
明日からはプロセススケジューラの実装