Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ftp.jaist.ac.jpの低レイヤーの話
Search
Kazuhiro Fujieda
December 07, 2013
Technology
0
69
ftp.jaist.ac.jpの低レイヤーの話
ftp.jaist.ac.jpが使っているSun Fire T2000のCPUであるUltraSPARC T1の話をする。
Kazuhiro Fujieda
December 07, 2013
Tweet
Share
More Decks by Kazuhiro Fujieda
See All by Kazuhiro Fujieda
静的クラスは遅いことがあるよ
kfujieda
3
1.9k
NaN BoxingによるJSONパーサーの高速化
kfujieda
2
860
Other Decks in Technology
See All in Technology
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
160
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
660
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
AIチャットボット開発への生成AI活用
ryomrt
0
170
いざ、BSC討伐の旅
nikinusu
2
780
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.3k
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
4 Signs Your Business is Dying
shpigford
180
21k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Agile that works and the tools we love
rasmusluckow
327
21k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Navigating Team Friction
lara
183
14k
How to Ace a Technical Interview
jacobian
276
23k
Faster Mobile Websites
deanohume
305
30k
Transcript
ftp.jaist.ac.jpの低レイヤーの話 藤枝 和宏 @kfujieda ftp.jaist.ac.jpの中の人
概要 • ftp.jaist.ac.jpのハードウェア構成 • UltraSPARC T1について • 割り込みのチューニング 2 2013/12/7
第九回 カーネル/VM探検隊
ftp.jaist.ac.jp • 日本最強(自称)のミラーサーバー • 2013年11月の利用内訳 • 「ftp-adminの憂鬱」 http://ftp-admin.blogspot.jp/ 3 2013/12/7
第九回 カーネル/VM探検隊 51.4% 12.1% 8.3% 6.5% 4.1% 3.9% 2.6% 2.1% 1.8% 1.7% 5.5% 0.0% 10.0% 20.0% 30.0% 40.0% 50.0% 60.0%
ftp.jaist.ac.jpの性能 • 平日のピーク時 2.4Gbps – ほとんどHTTP – 4,000接続 150リクエスト/秒 –
CPU使用率75% (カーネル9割) • 最高記録 4.5Gbps – 2012年4月25日 (Firefox 12のリリース日) – 17,000接続 1,950リクエスト/秒 – CPU使用率100% (カーネル7割) 4 2013/12/7 第九回 カーネル/VM探検隊
ハードウェア構成 5 Sun Fire T2000 (2U) サーバー本体 SASエンクロージャー (1U) L2ARC用
SSD 512GB×4 SASエンクロージャー (4U) HDD 2TB×24 RAID-Z2 (9D+2P+1S)×2 実容量38TB SASエンクロージャーは Super Microのサーバーシャーシ 2013/12/7 第九回 カーネル/VM探検隊
Sun Fire T2000 • 旧Sun Microsystemsからの寄贈 (2007年5月) • 発売: 2005年12月
8年前のハードウェア • CPU: UltraSPARC T1 1GHz 1CPU • メモリ: 16GB (1GB×16) ⇒64GB (4GB×16) (2009年9月) • NIC: GbE×4⇒10GbE (2012年4月) 6 2013/12/7 第九回 カーネル/VM探検隊
Sun Fire T2000のマザーボード 7 CPUとDIMMスロットの占める面積が広い 2013/12/7 第九回 カーネル/VM探検隊
UltraSPARC T1 (1/2) • クロック数1GHz – ラインナップは1.4GHzまで • 8コア 4スレッド/コア
計32スレッド – Chip-level Multithreading (CMT) – 1サイクルごとに実行スレッドを切り替え • シンプルなコア – シングルイシュー – インオーダー – 6ステージパイプライン 8 2013/12/7 第九回 カーネル/VM探検隊
UltraSPARC T1 (2/2) • L1 Cache 命令16kB データ8kB • L2
Cache 共有3MB 12-way set associative • メモリーコントローラー内蔵 帯域34.1GB/s – DDR2-533 4.3GB/s – ×4チャンネル = 17.1GB/s – ×2 (128bit幅) = 34.1GB/s 9 2013/12/7 第九回 カーネル/VM探検隊
CMTの仕組み • パイプラインに異なるスレッドの命令を投入 10 サイクル 命令 UltraSPARC T1: A 32-threaded
CMP for Serversより http://www.cse.msu.edu/~cse820/lectures/lecturesS08/lecture14_T1.pdf 2013/12/7 第九回 カーネル/VM探検隊
パイプラインの構成 • スレッドセレクション以外は古典的な構成 11 Fetch Thread selection Decode Execute Memory
Writeback フェッチされた命令はスレッドセレクションで 選ばれるまで実行されない 2013/12/7 第九回 カーネル/VM探検隊
スレッドセレクション(1/2) • ウェイト状態でないスレッドからLRUで選択 • ウェイト状態 – ストール中 • キャッシュミスなど –
遅延の長い命令を実行中 • LOADや乗除算など 12 2013/12/7 第九回 カーネル/VM探検隊
スレッドセレクション(2/2) • 動けるスレッドが二つの場合 – t0-ldは遅いのでt1-subに続いてt1-ldを実行 – t0-ldからt0-addへデータをフォワーディング 13 サイクル 命令
UltraSPARC T1: A 32-threaded CMP for Serversより http://www.cse.msu.edu/~cse820/lectures/lecturesS08/lecture14_T1.pdf 2013/12/7 第九回 カーネル/VM探検隊
CMTの利点 • ハザードが起きにくい – 異なるスレッドの命令間にはデータ、制御ともに依存関係 がない • ストールを隠蔽できる – ストールしたスレッドを待たせて、ほかのスレッドを実行で
きる CPUの利用効率が高い 14 2013/12/7 第九回 カーネル/VM探検隊
CMTの欠点 • シングルスレッド性能が低い – 1スレッドあたりのスループットが低い – 1スレッドのみで実行しても遅い フォワーディングはあるが分岐予測はない 15 2013/12/7
第九回 カーネル/VM探検隊
UltraSPARC T1の欠点 • 浮動小数点演算器が一つだけ – コアとL2の間のクロスバーに接続 – 1命令で40サイクルのペナルティ 16 2013/12/7
第九回 カーネル/VM探検隊
UltraSPARC T1の利点 • マルチスレッド性能が高い • メモリ帯域が広い • キャッシュミスのペナルティが小さい • 並列に行うデータ転送中心のワークロードに向く
– ウェブサーバー – Javaアプリケーションサーバー SPEC JBB2005のSun Fire T2000のスコアは74k Xeon 5080 3.8GHz 2ソケット構成のIAサーバーで64k 17 2013/12/7 第九回 カーネル/VM探検隊
OSから見たUltraSPARC T1 2013/12/7 第九回 カーネル/VM探検隊 18 32CPUに見える $ mpstat CPU
minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl 0 11 0 974 1755 4 1709 13 519 180 324 1000 7 23 0 70 1 11 0 1012 1513 19 1893 15 575 205 354 1065 7 24 0 69 2 10 0 794 1390 2 1479 13 456 171 269 1048 7 20 0 73 3 9 0 749 1326 2 1395 12 433 163 252 1040 7 19 0 74 4 13 0 1105 1512 2 2149 19 472 215 416 1285 9 28 0 63 5 14 0 1241 1700 2 2528 21 555 234 467 1453 10 32 0 59 6 20 0 1906 2218 3 3992 31 985 302 693 1543 10 44 0 46 7 17 0 1523 1913 3 3009 25 713 272 573 1527 10 37 0 53 8 18 0 1412 1252 3 2557 22 517 244 525 1162 7 32 0 61 9 15 0 941 879 3 1605 17 314 197 324 946 6 23 0 71 10 14 0 1196 1192 2 2362 19 425 214 435 1028 6 28 0 65 11 18 0 2057 2028 3 4314 32 947 304 739 1323 7 45 0 48 12 10 0 4820 17256 16396 2038 77 493 281 302 610 4 71 0 25 13 11 0 2914 9441 8631 1692 33 393 237 322 708 5 50 0 45 14 10 0 741 639 3 1198 14 278 158 236 718 5 20 0 75 15 9 0 717 706 2 1334 13 281 148 235 697 5 19 0 75 16 8 0 2588 9223 8662 1133 23 213 193 205 476 4 42 0 54 17 13 0 3421 9989 8575 3163 52 732 290 498 947 6 61 0 32 18 14 0 1463 1332 3 2759 22 586 238 556 1137 7 35 0 58 19 11 0 873 742 3 1464 15 305 177 315 781 6 23 0 72 20 9 0 2581 9115 8604 1021 23 200 184 213 452 4 41 0 55 21 8 0 3791 3587 2796 1657 22 284 426 318 465 3 35 0 62 22 17 0 2027 2025 3 4356 31 945 289 731 1285 8 47 0 46 23 14 0 1396 1276 3 2667 22 529 237 536 1082 7 33 0 60 24 15 0 1307 1205 4 2503 21 503 228 502 1039 7 32 0 61 25 7 0 4342 16280 15864 806 48 160 202 139 320 3 59 0 38 26 10 0 917 884 2 1736 15 311 176 325 740 5 23 0 72 27 17 0 1961 1972 3 4229 30 922 286 709 1259 8 46 0 47 28 19 0 2198 2150 3 4548 34 961 311 765 1308 7 46 0 47 29 17 0 1539 1371 3 2812 24 530 257 566 1114 6 34 0 60 30 14 0 922 759 3 1491 16 271 194 314 785 5 22 0 73 31 13 0 1028 956 3 1903 16 305 192 357 751 5 24 0 71 1CPUが遅いので割り 込みが多いと使用率 が高くなる CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys 11 18 0 2057 2028 3 4314 32 947 304 739 1323 7 45 12 10 0 4820 17256 16396 2038 77 493 281 302 610 4 71
割り込みの割り当て(1/2) 19 # echo “::interrupts” | mdb –k Device Type
MSG # State INO Mondo Shared Pil CPU px#0 PCIe 27 enbl 0x3b 0x7bb no 1 4 px#0 PCIe 51 enbl 0x3a 0x7ba no 14 0 px#0 PCIe 49 enbl 0x39 0x7b9 no 14 0 px#0 PCIe 48 enbl 0x38 0x7b8 no 9 1 nxge#3 MSI-X 248 enbl 0x22 0x7a2 no 6 0 nxge#3 MSI-X 249 enbl 0x21 0x7a1 no 6 1 nxge#2 MSI-X 250 enbl 0x20 0x7a0 no 6 9 nxge#2 MSI-X 251 enbl 0x1f 0x79f no 6 8 nxge#1 MSI-X 252 enbl 0x1e 0x79e no 6 1 nxge#1 MSI-X 253 enbl 0x1d 0x79d no 6 28 nxge#0 MSI-X 254 enbl 0x1c 0x79c no 6 5 nxge#0 MSI-X 255 enbl 0x1b 0x79b no 6 4 e1000g#1 MSI 2 enbl 0x1a 0x79a no 6 29 e1000g#0 MSI 1 enbl 0x19 0x799 no 6 29 mpt#0 MSI 0 enbl 0x18 0x798 no 5 1 su#0 Fixed --- enbl 0x2 0x7c2 no 12 4 uata#0 Fixed --- enbl 0x4 0x7c4 no 5 0 ohci#1 Fixed --- enbl 0x3 0x7c3 no 9 24 ohci#0 Fixed --- enbl 0x1 0x7c1 no 9 16 px#1 PCIe 27 enbl 0x3b 0x7fb no 1 8 px#1 PCIe 51 enbl 0x3a 0x7fa no 14 4 px#1 PCIe 49 enbl 0x39 0x7f9 no 14 24 px#1 PCIe 48 enbl 0x38 0x7f8 no 9 5 e1000g#3 MSI 2 enbl 0x2a 0x7ea no 6 12 e1000g#2 MSI 1 enbl 0x29 0x7e9 no 6 12 mpt#1 MSI 0 enbl 0x28 0x7e8 no 5 21 増設NIC GbE×4 TXとRXが別 オンボード GbE×4 SAS HBA×2 2013/12/7 第九回 カーネル/VM探検隊
割り込みの割り当て(2/2) 20 ixgbe#0 MSI-X 240 enbl 0x27 0x7e7 no 6
20 ixgbe#0 MSI-X 241 enbl 0x26 0x7e6 no 6 12 ixgbe#0 MSI-X 242 enbl 0x25 0x7e5 no 6 12 ixgbe#0 MSI-X 243 enbl 0x24 0x7e4 no 6 17 ixgbe#0 MSI-X 244 enbl 0x23 0x7e3 no 6 16 ixgbe#0 MSI-X 245 enbl 0x22 0x7e2 no 6 25 ixgbe#0 MSI-X 246 enbl 0x21 0x7e1 no 6 25 ixgbe#0 MSI-X 247 enbl 0x20 0x7e0 no 6 13 ixgbe#1 MSI-X 248 enbl 0x1f 0x7df no 6 12 ixgbe#1 MSI-X 249 enbl 0x1e 0x7de no 6 21 ixgbe#1 MSI-X 250 enbl 0x1d 0x7dd no 6 24 ixgbe#1 MSI-X 251 enbl 0x1c 0x7dc no 6 9 ixgbe#1 MSI-X 252 enbl 0x1b 0x7db no 6 8 ixgbe#1 MSI-X 253 enbl 0x1a 0x7da no 6 21 ixgbe#1 MSI-X 254 enbl 0x19 0x7d9 no 6 17 ixgbe#1 MSI-X 255 enbl 0x18 0x7d8 no 6 5 Intel X520-DA2 10GbE×2 マルチキュー 2013/12/7 第九回 カーネル/VM探検隊 計42個
CPUごとの割り込みの設定 CPU 割り込み CPU 割り込み 0 px#0 px#0 uata#0 nxge#3
16 ochi#1 ixgbe#0 1 px#0 nxge#3 nxge#1 mpt#0 17 ixgbe#0 ixgbe#1 2 18 3 19 4 px#0 px#1 su#0 nxge#0 20 ixgbe#0 5 px#1 nxge#5 ixgbe#1 21 mpt#1 ixgbe#1 ixgbe#1 6 22 7 23 8 px#1 nxge#2 ixgbe#1 24 ochi#1 px#1 ixgbe#1 9 nxge#2 ixgbe#1 25 ixgbe#0 ixgbe#0 10 26 11 27 12 e1000g#2 e1000g#3 ixgbe#0 ixgbe#0 ixgbe#1 28 nxge#1 13 ixgbe#0 29 e1000g#0 e1000g#1 14 30 15 31 21 2013/12/7 第九回 カーネル/VM探検隊
割り込みの制御 • 割り込み可能なCPUを減らす # psradm -i 2 3 6 7
10 11 14 15 18 19 22 23 26 27 30 31 22 2013/12/7 第九回 カーネル/VM探検隊
割り込みの制御を外すと(1/2) 23 CPU 割り込み CPU 割り込み 0 16 ohci#0 ixgbe#0
1 px#0 mpt#0 17 ixgbe#0 2 px#0 e1000g#0 18 ixgbe#0 3 px#0 e1000g#0 19 ixgbe#0 4 px#0 nxge#0 20 ixgbe#0 5 px#1 nxge#0 ixgbe#1 21 mpt#1 6 px#1 nxge#1 ixgbe#1 22 e1000g#2 7 px#1 nxge#1 ixgbe#1 23 e1000g#3 8 px#1 nxge#2 ixgbe#1 24 9 nxge#2 ixgbe#1 25 10 nxge#3 ixgbe#1 26 11 nxge#3 ixgbe#1 27 12 ixgbe#1 28 13 ixgbe#0 29 su#0 14 ixgbe#0 30 uata#0 15 ohci#1 ixgbe#0 31 2013/12/7 第九回 カーネル/VM探検隊
割り込みの制御を外すと(2/2) • 同じデバイスの割り込みが一つのコアに集中 – 命令キャッシュを汚さないため? – 割り込みによるストールを隠蔽できない – CPUの利用効率が下がる •
Sun Fire T2000/T1000で割り込み可能なCPU を減らすのは常套手段 24 2013/12/7 第九回 カーネル/VM探検隊
まとめ • ftp.jaist.ac.jp はSun Fire T2000で動いている • UltraSPARC T1はウェブサーバーに向き •
割り込み可能なCPUを減らさないと性能が出ない 25 2013/12/7 第九回 カーネル/VM探検隊