speeding up kernel scheduler by reducing cache …linux kernel conf. 2002 (2002.10.10) 0 500 1,000...
TRANSCRIPT
![Page 1: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/1.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
タスク構造体のカラーリングによるプロセススケジューラの高速化
山村 周史 平井 聡 久門 耕一
株式会社 富士通研究所
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 2: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/2.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
内容
• 背景
• 性能ボトルネック
• Linuxカーネルの問題点
• タスク構造体のカラーリング
• 性能評価
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 3: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/3.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
0
500
1,000
1,500
2,000
2,500
16 32 64 128 256 512 1024
サーバプロセス数
Web
リク
エス
ト数
/秒
サーバ4-way Pentium Pro 200MHz2次キャッシュサイズ 1,024KBアプリケーションApache 1.3.19
-44%
背景 (1) ~安定性への要求~
Linuxをエンタープライズ分野への適応が目標
その要件として
高負荷な状況でも安定した性能を発揮CPU数の増加に見合った高い性能スケーラビリティ
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 4: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/4.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
高負荷な状況でも安定した性能を発揮CPU数の増加に見合った高い性能スケーラビリティ
0
50
100
150
200
250
300
350
1 2 3 4 5 6 7 8CPU数
メッ
セー
ジス
ルー
プッ
ト[x1000]
背景 (2) ~性能スケーラビリティへの要求~
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
サーバ8-way Pentium III 550MHz2次キャッシュサイズ1,024KBアプリケーションChat micro benchmark
性能UP < 4CPU
Linuxをエンタープライズ分野への適応が目標
その要件として
![Page 5: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/5.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
背景 ~ プロセススケジューラの開発動向 ~~2.4.x 2.5.x 2.6.x
2.5.2
標準スケジューラ
Multi Queue
Priority Level Queue
PQMS
O(1)スケジューラ
(標準)
タスク構造体のカラーリング
Linux Scalability Effort
アーキテクチャの観点から問題分析
アーキテクチャの観点から問題分析
?2000/12 2001/10 2002/1All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 6: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/6.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
内容
• 背景
• 性能ボトルネック
• Linuxカーネルの問題点
• タスク構造体のカラーリング
• 性能評価
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 7: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/7.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
問題分析のアプローチ (1)メモリアーキテクチャの観点からの定量的な評価
Server System
CODEプロファイリング
ツール
プログラムのどこで時間が 消費されているか?
DATA
GATESハードウェアバス観測ツール
キャッシュミスが頻繁に発生するアドレスは?False sharingされているデータは?
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 8: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/8.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
問題分析のアプローチ (2)メモリアーキテクチャの観点からの
チューニングと定量的評価カーネルプロファイリング共有メモリバスの観測CPU内部で発生するイベントの計測
性能モニタリングカウンタ
GATESハードウェアバス観測ツール
メモリバス観測
CPU
CPU
CPU
CPU
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 9: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/9.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
高負荷時における性能ボトルネック4-way Pentium Proサーバ上で256 httpdプロセスが走行中
プロセススケジューラ内部でランキュー探索中に多数のキャッシュミスが発生
0x20~0x3F
0
100
200
300
400
5001リクエストあたりのメモリアクセス回数カーネルプロファイリング
スケジューラ内部でOS実行時間の10%~20%を消費
メモリバストランザクションの分析
ページオフセットアドレス0x030で多数のバストランザクションが発生
イベント計測キャッシュミス回数などを定量的に評価
800 C00 000 400ページオフセットアドレス
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 10: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/10.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
問題解決へのアプローチ
• 高い負荷をLinuxシステムに与えたときの性能ボトルネックを解消– プロセススケジューラのチューニング
キャッシュカラーリングによるスケジューラ内部のキャッシュミス削減
キャッシュカラーリングによるスケジューラ内部のキャッシュミス削減
• キャッシュカラーリングの評価– カラーリングの効果を定量的に分析
メモリバストラフィックやキャッシュミス率など...メモリバストラフィックやキャッシュミス率など...
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 11: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/11.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
内容
• 背景
• 性能ボトルネック
• Linuxカーネルの問題点
• タスク構造体のカラーリング
• 性能評価
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 12: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/12.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
スケジューラが使用するデータ構造runqueueによりすべての実行可能プロセスを管理
タスク構造体を要素とする双方向リスト構造
タスク構造体は各プロセスごとの情報を保持
8KB (2^13 KB)境界にアライメント
タスク構造体
スタックポインタ
カーネルスタック (8KB)
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
CURRENTマクロによる高速アクセス
スタックポインタの下位13ビットをマスクするだけで
カーネルスタックの先頭アドレスを取得
![Page 13: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/13.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
ページ単位(4KB)でメモリ管理
• 各プロセスの情報を管理
• カーネルスタックの先頭に配置
メインメモリ
タスク毎に8KBカーネルスタック
スタックポインタ
8KB(2^13)にアライメント
カーネルスタックカーネルスタック
タスク構造体タスク構造体
スタックポインタの下位13ビットをマスク
counternice
run_list.next
スケジューラに関連する変数
タスク構造体
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 14: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/14.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
スケジューラ内部で発生するキャッシュライン競合
8KB (2^13 KB)境界にアライメント
0 0000 0010 0000アドレス
キャッシュインデックス
(8 bits)(2^8)256 ライン
1ライン32バイト
ダイレクトマッピング8KB キャッシュ
常に 0x020
実測値:2次キャッシュミス率 > 90%通常は,ミス率10~20%程度
ランキューの線形走査が多数のキャッシュミスを発生
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 15: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/15.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
一般的な解決法 -キャッシュカラーリング-
256ライン
各タスク構造体を キャッシュラインと同じ大きさずらす
base
8KB境界にアライメント
期待できる効果キャッシュミスが減少しrunqueueの走査時間が短縮
SMPシステムでは,ロック競合率が減少
カラーリングによって他の有用なデータが追い出され
ダイレクトマッピング8KB キャッシュ
runqueue_lock
る可能性がある.All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 16: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/16.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
キャッシュカラーリングの実装上位ビットでハッシュ
0x2000
8KB境界
カラーリング
0x80000x0000 0x4000
base
ダイレクトマッピング8KB キャッシュ
修正したCURRENTマクロがハッシュされた先頭アドレスを返す
高速アクセスタスク構造体は8KB境界への配置が必要
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 17: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/17.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
内容
• 背景
• 性能ボトルネック
• Linuxカーネルの問題点
• タスク構造体のカラーリング
• 性能評価
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 18: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/18.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
評価環境システム構成
アプリケーション• WebBench 3.0
サーバ:Apache 1.3.19.256個のhttpdを起動.クライアント:28 PC/AT.合計256個のクライアントスレッド.
• Chat micro benchmarkチャットルームでのメッセージ交換をシミュレート.2400のスレッドが起動(WebBenchよりも多い).
• メモリシステム評価Pentium Pro 200MHz x 4 CPUs2次キャッシュサイズ: 256KB/512KB/1024KBカラーリング数: 32
• スケーラビリティ評価Pentium III Xeon 550MHz x 8 processors2次キャッシュサイズ: 1 MBカラーリング数: 32
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 19: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/19.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
WebBenchにおける性能向上
0
500
1,000
1,500
2,000
2,500
16 32 64 128 256 512 1024サーバプロセス数
Web
リク
エス
ト数
/秒
標準カーネル
カラーリング
Pentium Pro 200MHz x 4 CPUs/2次キャッシュ 1024KB/カーネル 2.4.4
25%up-19%
-44%
高負荷な状況下で,25%の性能向上高負荷な状況下で,25%の性能向上
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 20: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/20.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
キャッシュサイズを変化させたときのカラーリングの効果
0
500
1,000
1,500
2,000
256KB 512KB 1024KB
2次キャッシュサイズ
Webリ
クエ
スト
数/
秒
標準カーネル
カラーリング
キャッシュサイズを変化させた場合の性能向上(4-way Pentium Pro 200 MHz上で1024個のhttpdが走行している場合)
Up 1.8%
Up 23.1%
Up 42.3%
• 最大 42.3% の性能向上• キャッシュサイズが大きいほどカラーリングの効果大
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 21: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/21.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
GATESによるメモリバストランザクションの分析
カラーリングされたキャッシュラインに関するメモリアクセス回数カラーリングされたキャッシュラインに関するメモリアクセス回数
010002000300040005000600070008000
標準 カラーリング
1Web
リク
エス
トあ
たり
のメ
モリ
アク
セス
回数
カラーリングしたキャッシュライン
その他
標準 カラーリング 標準 カラーリング
512KB 1024KB
73.0% 減少
33.3% 減少
マイナス効果:9.4% 増加
256KB2次キャッシュサイズ
キャッシュサイズが小さい場合にはカラーリングは逆効果キャッシュサイズが小さい場合にはカラーリングは逆効果
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 22: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/22.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
runqueue走査中の2次キャッシュミス率の減少
2次キャッシュミス率 = L2 ミス回数L2 リード回数
ほとんどの2次キャッシュアクセスがミス
99.7% 99.6% 99.5%
0%
25%
50%
75%
100%
256KB 512KB 1024KB2次キャッシュサイズ
2次キ
ャッ
シュ
ミス
率
標準
82.7%
35.8%
8.2%
カラーリング
Good
カラーリングにより,runqueue走査時の2次キャッシュミスが大幅に減少(最大91.3%)
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 23: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/23.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
Chatベンチマークにおけるスケーラビリティの向上
0
50
100
150
200
250
300
350
1 2 3 4 5 6 7 8
メッ
セー
ジス
ルー
プッ
ト[×
1000]
標準
カラーリング
86%性能UP
CPU数
8CPUの場合,最大で86.3%の性能向上ロック競合率が減少 [ 86% 70% ]
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 24: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/24.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
他スケジューラとの比較(WebBench)
0
1,000
2,000
3,000
4,000
5,000
6,000
7,000
1 2 3 4 5 6 7 8
CPU数
リク
エス
ト数
/秒
標準スケジューラ O(1)スケジューラMQスケジューラ カラーリング
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 25: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/25.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
他スケジューラとの比較(Chat)
0
50
100
150
200
250
300
350
400
450
1 2 3 4 5 6 7 8
CPU数
メッ
セー
ジス
ルー
プッ
ト [
×1000/秒
]
標準スケジューラ O(1)スケジューラMQスケジューラ カラーリング
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 26: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/26.jpg)
Linux Kernel Conf. 2002 (2002.10.10)
まとめ
キャッシュミスの削減によりスケジューラの性能を改善
Linuxシステムの高負荷時における性能の改善
スケーラビリティの向上
カラーリングの効果キャッシュサイズが大きい場合に,より効果を発揮
キャッシュサイズが小さいと逆効果な場合もある
今後の予定エンタープライズ分野において我々の分析手法を活用
カーネル・アプリケーションを含めたチューニング
富士通研究所 「Linuxカーネルに関する情報」http://www.labs.fujitsu.com/techinfo/linux
All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002
![Page 27: Speeding Up Kernel Scheduler by Reducing Cache …Linux Kernel Conf. 2002 (2002.10.10) 0 500 1,000 1,500 2,000 2,500 16 32 64 128 256 512 1024 サーバプロセス数 Web リクエスト数/秒](https://reader035.vdocuments.net/reader035/viewer/2022062919/5ee0f751ad6a402d666c049c/html5/thumbnails/27.jpg)
Linux Kernel Conf. 2002 (2002.10.10) All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002