Kernel resource
-
Upload
kai-sasaki -
Category
Software
-
view
186 -
download
0
Transcript of Kernel resource
Kernelのリソース管理佐々木海(@Lewuathe)
今日のお話• メモリ管理
• 自動NUMAバランス、メモリホットプラグ、vmpressure、zram、zswap
• CPU管理
• スケジューリングポリシー、RT Throttling、Fair Group Scheduling
• cgroup
• cpusets, memory group
メモリ管理割と新しめの機能
• 自動NUMAバランス
• vmpressure
• zram, zswap
自動NUMAバランスx86アーキテクチャ
• NUMA(Non Uniformed Memory Architecture)
Linuxではファームウェアが提示する構成情報を元にメモリアロケータがノードを管理
自動NUMAバランスx86アーキテクチャ
• SMP(Symmetric Memory Processing)
• NUMA(Non Uniformed Memory Architecture)CPU CPU CPU
cache cache cache
cache
mem
CPU CPU
cache cache
mem mem
SMP NUMA
自動NUMAバランス• NUMA(Non Uniform Memory Architecture)
マルチプロセッサを持ったシステムの共有メモリのアーキテクチャ
CPU1
Mem1
CPU2
Mem2
CPU3
Mem3
node1 node2 node3
自動NUMAバランス• 使用しているCPUとメモリの位置によってパフォーマンスが異なる
CPU1
Mem1
CPU2
Mem2
CPU3
Mem3
node1 node2 node3
データが遠い
自動NUMAバランス• 使うCPUを変える
• データを移す
CPU1
Mem1
CPU2
Mem2
CPU3
Mem3
node1 node2 node3
node3のCPUを使う
node1のメモリ上に移す
vmpressureメモリ回収処理の負荷に応じてユーザに通知
memkswapdなどがメモリ回収
2MBごとにメモリ回収失敗 スキャン量をチェック
ユーザに通知
zram, zswap空きメモリが必要になった場合の戦略
• データを捨てる
• データを退避させる(swap deviceの利用)
• データ圧縮する
zram物理メモリの一部を圧縮機能を持つRAMディスクとして扱う機能。3.14より正式ドライバとなった
アプリケーション
zram
書き込み時に自動で圧縮
読み込み時に自動で伸張
zram利点
• CPUリソースが余りがちなのでswapのI/Oより安定的な性能が期待できる
•クラウド上では実ディスクの場所が不明なので zramの方が安定的に動作することがある
zswap圧縮を伴ってswap deviceとのキャッシュとして動作する
swap device
memmemmempagezswap
page
pack
unpack
あふれるとディスクに書き出す
zram, zswap圧縮アルゴリズムは両方ともデフォルトでは
lzoを用いる。zramではlz4を選ぶこともできる
CPU管理スケジューリングポリシーのためのクラス
• TSS
• CPUに割り当てられた時間だけ動作
• リアルタイム
• 静的な実行優先度が設定可能
CPU管理スケジューリングポリシーの種類(2.6.23時点)
• SCHED_OTHER
• SCHED_FIFO
• SCHED_RR
• SCHED_BATCH
• SCHED_IDLE
CPU管理スケジューリングポリシーの種類(2.6.23時点)
• SCHED_OTHER
• TSSクラスのスケジューリングポリシー。CFSではCPU利用時間に基づいて公平に割り振られる
• SCHED_FIFO
• リアルタイムクラスのスケジューリングポリシー。SCHED_FIFOが適用されたプロセスはI/O待ちや自発的な休止などをのぞいて実行権を手放さない
CPU管理スケジューリングポリシーの種類(2.6.23時点)
• SCHED_RR
• タイムスライスを持ったリアルタイムクラスのスケジューリングポリシー。タイムスライスを使い切ると実行権が移る。
• SCHED_BATCH
• 休止時間による優先度の変更が行われない。ただCFSではバッチ処理、バックグラウンド処理の扱いは別になっているのでSCHED_OTHERとの実質的な差はない
CPU管理スケジューリングポリシーの種類(2.6.23時点)
• SCHED_IDLE
• タCPUがアイドル状態の時にのみ実行権が与えられる。実質最も優先度が低いプロセスになる
chrtユーザがスケジューリングポリシーを変更するためのコマンド
$ chrt -h
chrt - manipulate real-time attributes of a process
Set policy: chrt [options] <policy> <priority> {<pid> | <command> [<arg> ...]}
Get policy: chrt [options] {<pid> | <command> [<arg> ...]}
Scheduling policies: -b | --batch set policy to SCHED_BATCH -f | --fifo set policy to SCHED_FIFO -i | --idle set policy to SCHED_IDLE -o | --other set policy to SCHED_OTHER -r | --rr set policy to SCHED_RR (default)
RT Throttlingリアルタイムクラスへ割り当てるCPU時間を制限する機能
設定方法は単位時間当たりのリアルタイムクラスへの割り当て時間で設定可能
例:単位時間1秒, RT割り当て 0.95秒 リアルタイムクラスでないプロセスも0.05秒 はCPUを使える
RT Throttling設定値の参照の仕方
設定変更は -w
-1はリアルタイムクラスへのCPU時間の制限をなくす効果がある
$ sysctl -n kernel.sched_rt_period_us 1000000 $ sysctl -n kernel.sched_rt_runtime_us 950000
$ sysctl -w kernel.sched_rt_runtime_us=-1
Fair Group Schedulingcgroupを使ったリソース管理のひとつプロセススケジューラによるCPU割り当てを制御
$ mount -t cgroup -o cpu cgroup /cgroup
cgroup任意のプロセスをグループ化して管理する機能cgroupはグループ化のためのI/Fのみ提供実際の管理はサブシステムに任される
$ cat /proc/cgroups #subsys_name hierarchy num_cgroups enabled cpuset 0 1 1 cpu 3 3 1 cpuacct 0 1 1 memory 0 1 1 devices 0 1 1 freezer 0 1 1 blkio 0 1 1 perf_event 0 1 1 hugetlb 0 1 1
cpusetcgroupのサブシステムのひとつ特定のプロセスやスレッドが使用するCPUの組を指定することができる
$ mount -t cgroup -o cpuset cgroup /cgroup
Memory cgroupプロセスが利用するメモリの量を制限する
$ mount -t cgroup -o memory memcg /cgroup
10M制限あり 制限なし
Thank you