...

講演資料

by user

on
Category: Documents
4

views

Report

Comments

Transcript

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