speeding up kernel scheduler by reducing cache …linux kernel conf. 2002 (2002.10.10) 0 500 1,000...

27
Linux Kernel Conf. 2002 (2002.10.10) タスク構造体のカラーリングによる プロセススケジューラの高速化 山村 周史 平井 聡 久門 耕一 株式会社 富士通研究所 All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002

Upload: others

Post on 03-Jun-2020

2 views

Category:

Documents


0 download

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

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 リクエスト数/秒

Linux Kernel Conf. 2002 (2002.10.10) All Rights Reserved, Copyright (C) FUJITSU LIMITED 2002