スポンサーリンク

RYZENでLinuxを動かす

前回の続き!

RYZEN 7 1700セットアップ
俺たちのAMDが帰ってきた! CPUを買う前に光モノ作ったのはいいけど、いざ組んでみたらメチャクチャ眩しくて目が痛くなったので...

我が家の場合はこのRYZENにLinuxが載るわけですが。

LinuxではRYZENのSMT対応はkernel 4.10からだそうです。

前回はLGA1151で使っていたSSDをそのまま繋いでDebian8を動かしたのですが、さすがにそれじゃダメだろうということでOSを入れ換えることにします。

ただもうkernelコンパイルする歳ではないので、2017/03末の時点でkernel 4.10がパッケージで提供されているディストリビューションを探したところ、UbuntuがPPAで提供してくれてるので、Ubuntu 16.04 LTS Serverを入れることにします。

で、ネタにするからには何らかのベンチマークを取る必要があるわけですが、最近ほんと見なくなったUnixBenchを使います。この辺は個人的な趣味です。

環境はこんな感じ。

  • RYZEN 7 1700 + Debian8(kernel 3.16.0-4) + SMT有効
  • RYZEN 7 1700 + Ubuntu 16.04(kernel 4.4.0-71) + SMT有効
  • RYZEN 7 1700 + Ubuntu 16.04(kernel 4.10.0-14) + SMT有効

では測定結果。

RYZEN 7 1700 + DDR4-2400(32GB)
Value/kernel 3.16.0 4.4.0-71 4.10.0-14
Dhrystone 2 using register variables 318754347.9 323699079.0 322392493.1
Double-Precision Whetstone 51209.1 52905.2 53380.8
Execl Throughput 41154.7 37667.5 38402.7
File Copy 1024 bufsize 2000 maxblocks 689093.6 841400.0 761087.0
File Copy 256 bufsize 500 maxblocks 192413.1 226705.2 187534.1
File Copy 4096 bufsize 8000 maxblocks 1983193.9 2511097.8 2277952.4
Pipe Throughput 20122528.4 20955724.9 21701315.0
Pipe-based Context Switching 3107573.4 3263138.8 3511373.5
Process Creation 111245.5 87527.6 117425.4
Shell Scripts (1 concurrent) 105853.9 98171.2 80951.3
Shell Scripts (8 concurrent) 14169.6 13465.4 12749.6
System Call Overhead 8755651.9 9068976.4 8979548.6

これまたコメントに困る結果やね…

  • 「Context Switching」はkernelが新しいほど恩恵を受ける
  • 「Process Creation」はkernel 4.4と4.10で明確な差がある
  • 「File Copy」の4.10での遅さが気になる
  • 「Shell Scripts」はkernelが新しいほど遅い
  • 「Execl Throughput」は3系と4系で結構違う

という感じでしょうか。

kernel sourceを見る限りでは、現時点でkernel 4.4にはまだRYZEN SMT向けの修正はバックポートされていませんでした。

といってkernel 4.10で修正の恩恵を受けているかは、UnixBenchの結果を見ても正直よく分からない感じです。

で。

ぶっちゃけた話をするとパフォーマンスが高かろうが安定してなきゃ意味がないわけですが、kernel 4.10上のKVMで全コア全開でキッチリ上まで回していたら

qemuが暴走してLoad Averageが70を超えて手が付けられなくなった

ので、kernel 4.4で運用することになったことをお知らせします。まあPPAだから仕方がないよね。


さて。

ついでに参考値的に以下の構成でもUnixBenchを取っておきました。

  • RYZEN 7 1700 + Ubuntu 16.04(kernel 4.10.0-14) + SMT無効
  • Core i5-6500 + Debian8(kernel 3.16.0-4)

まずはRYZEN SMTの有無による違い。kernel 4.4でも取っておくべきでしたが忘れてました。

RYZEN 7 1700 + DDR4-2400(32GB) + kernel 4.10
SMT有効 SMT無効
Dhrystone 2 using register variables 322392493.1 290864407.9
Double-Precision Whetstone 53380.8 32683.5
Execl Throughput 38402.7 26235.1
File Copy 1024 bufsize 2000 maxblocks 761087.0 830576.6
File Copy 256 bufsize 500 maxblocks 187534.1 213630.7
File Copy 4096 bufsize 8000 maxblocks 2277952.4 2542950.9
Pipe Throughput 21701315.0 16107282.8
Pipe-based Context Switching 3511373.5 2384293.7
Process Creation 117425.4 88457.7
Shell Scripts (1 concurrent) 80951.3 46710.5
Shell Scripts (8 concurrent) 12749.6 8213.4
System Call Overhead 8979548.6 9267065.4

多分kernel 4.4でも傾向はあまり変わらないんじゃないかと思いますが、全体的に見ると「SMTをわざわざ無効にする意義なんてない」と思います。

しかし「File Copy」がSMT有効で目に見えて遅くなってるのはちょいと気になりますね。名前は「File Copy」でも現代ではキャッシュに乗る容量のデータのread/writeですから。

では最後に、お待ちかねのIntel vs AMDです。

こちらは都合上、Debian8 (kernel 3.16.0)での比較となることを御容赦下さい。

Debian8 (kernel 3.16.0)
Core i5-6500 (4C4T) RYZEN 7 1700 (8C16T)
Dhrystone 2 using register variables 158579560.4 318754347.9
Double-Precision Whetstone 17528.2 51209.1
Execl Throughput 27318.1 41154.7
File Copy 1024 bufsize 2000 maxblocks 1468874.5 689093.6
File Copy 256 bufsize 500 maxblocks 387587.7 192413.1
File Copy 4096 bufsize 8000 maxblocks 4020016.4 1983193.9
Pipe Throughput 8741631.3 20122528.4
Pipe-based Context Switching 1886006.9 3107573.4
Process Creation 68477.0 111245.5
Shell Scripts (1 concurrent) 45834.5 105853.9
Shell Scripts (8 concurrent) 6542.2 14169.6
System Call Overhead 9167714.4 8755651.9

ありがとうジム・ケラー!ありがとう。AMD!

しかし「File Copy」の結果は見なかったことにしたい…

RYZENのSMT無効、Core i5との比較を見ると、キャッシュに乗っかるはずの「File Copy」がKernel 4.10でなくてもSMT有効で遅くなるというのはかなり引っかかりますね。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする