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
70
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
910
Other Decks in Technology
See All in Technology
[OpsJAWS Meetup33 AIOps] Amazon Bedrockガードレールで守る安全なAI運用
akiratameto
1
140
エンジニア主導の企画立案を可能にする組織とは?
recruitengineers
PRO
1
310
開発者のための FinOps/FinOps for Engineers
oracle4engineer
PRO
2
260
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
540
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
790
生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル
pohdccoe
1
820
AIエージェント開発のノウハウと課題
pharma_x_tech
9
4.9k
“常に進化する”開発現場へ! SHIFTが語るアジャイルQAの未来/20250306 Yuma Murase
shift_evolve
0
110
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
1.8k
AIエージェント入門
minorun365
PRO
33
20k
事業モメンタムを生み出すプロダクト開発
macchiitaka
0
110
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
250
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Navigating Team Friction
lara
183
15k
Docker and Python
trallard
44
3.3k
Fireside Chat
paigeccino
35
3.2k
Building Applications with DynamoDB
mza
93
6.2k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
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探検隊