Comments
Description
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