RYZENでLinuxを動かす

前回の続き!

RYZEN 7 1700セットアップ
俺たちのAMDが帰ってきた! CPUを買う前に光モノ作ったのはいいけど、いざ組んでみたらメチャクチャ眩しくて目が痛くなったので撤去しました。 というわけでAMD派がオススメのCPUを聞かれてIntelと答える状況が長いこと続いていま...

 

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

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

kernel/git/torvalds/linux.git - Linux kernel source tree

前回は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/kernel3.16.04.4.0-714.10.0-14
Dhrystone 2 using register variables318754347.9323699079.0322392493.1
Double-Precision Whetstone51209.152905.253380.8
Execl Throughput41154.737667.538402.7
File Copy 1024 bufsize 2000 maxblocks689093.6841400.0761087.0
File Copy 256 bufsize 500 maxblocks192413.1226705.2187534.1
File Copy 4096 bufsize 8000 maxblocks1983193.92511097.82277952.4
Pipe Throughput20122528.420955724.921701315.0
Pipe-based Context Switching3107573.43263138.83511373.5
Process Creation111245.587527.6117425.4
Shell Scripts (1 concurrent)105853.998171.280951.3
Shell Scripts (8 concurrent)14169.613465.412749.6
System Call Overhead8755651.99068976.48979548.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 variables322392493.1290864407.9
Double-Precision Whetstone53380.832683.5
Execl Throughput38402.726235.1
File Copy 1024 bufsize 2000 maxblocks761087.0830576.6
File Copy 256 bufsize 500 maxblocks187534.1213630.7
File Copy 4096 bufsize 8000 maxblocks2277952.42542950.9
Pipe Throughput21701315.016107282.8
Pipe-based Context Switching3511373.52384293.7
Process Creation117425.488457.7
Shell Scripts (1 concurrent)80951.346710.5
Shell Scripts (8 concurrent)12749.68213.4
System Call Overhead8979548.69267065.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 variables158579560.4318754347.9
Double-Precision Whetstone17528.251209.1
Execl Throughput27318.141154.7
File Copy 1024 bufsize 2000 maxblocks1468874.5689093.6
File Copy 256 bufsize 500 maxblocks387587.7192413.1
File Copy 4096 bufsize 8000 maxblocks4020016.41983193.9
Pipe Throughput8741631.320122528.4
Pipe-based Context Switching1886006.93107573.4
Process Creation68477.0111245.5
Shell Scripts (1 concurrent)45834.5105853.9
Shell Scripts (8 concurrent)6542.214169.6
System Call Overhead9167714.48755651.9

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

 

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

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

タイトルとURLをコピーしました