kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。 Ubuntuの最新情報も紹介しています。

Ryzen CPU環境で高負荷な処理を行うと、セグメンテーション違反が発生する

Ryzen CPU(Zenアーキテクチャー)+ Linux環境で高負荷な処理を行うと、セグメンテーション違反が発生する現象が報告されています。



セグメンテーション違反が発生すると、その違反が発生したソフトウェアがクラッシュします。

本現象に関する情報は、以下で参照できます。


Phoronix」では、本現象が発生するかテストを行い、現象の発生を確認したとのことです。

テスト環境

テスト環境は、以下の通りです。


項目 内容
CPU AMD Ryzen 7 1800X 8コア/16スレッド @3.60GHZ
BIOS/UEFI 7A31v17(最新版)
AGESA 1.0.0.6
マザーボード MSI X370 XPOWER GAMING TITANIUM (MS-7A31) v1.0
チップセット AMD Device 1450
メモリー Corsair DDR4-3200 16384MB
ストレージ 25GB Crucial_CT525MX3
256GB INTEL SSDPEKKW256G7
GPU NVIDIA GeForce GTX 1070 8192MB (1506/4006MHz)
GPUドライバー NVIDIA 384.59
サウンド NVIDIA GP104 HD Audio
ネットワーク Intel I211 Gigabit Connection
OS Ubuntu 17.04
Linux Kernel 4.13.0-999-generic (x86_64) 20170802
GCC GCC 6.3.0 20170406
その他 Unity 7.5.0
X Server 1.19.3

詳細は上記リンク先を参照してください。

Linux Kernelのバージョンは、「Ubuntu 17.04」が採用しているバージョン(4.10)よりも新しいバージョン(4.13)になっています。

ryzen-testでテスト

ryzen-test」を利用すると、簡単に本現象を再現できます。

ryzen-testで簡単に現象を再現できる

ryzen-test」は、GCC 7.1をダウンロードし、GCCを並列ループでビルドするスクリプトであり、圧縮されたRAMディスク上でビルドを実行します。
これにより簡単にCPUに負荷をかけることができます。

このスクリプトをDDR4-3200の設定で実行すると、最初のセグメンテーション違反が88秒後に発生したとのことです。

次にDDR4-2133設定で実行すると、最初のセグメンテーション違反が83秒後に発生したとのことです。

SMTを無効化してテスト

SMTを無効化してテスト「ryzen-test」を実行したところ、しばらくは問題が発生しなかったが、30分後に最初のセグメンテーション違反が発生したとのことです。

SMTの無効化は本現象の回避策としてよく挙げられる回避策ですが、SMTを無効化するとスレッド数が半分になってしまいます。

またSMTの無効化及びDDR4-2133の設定でも、本現象が発生しています。

Intel CPUでは起きない

同じテストをIntel CPU環境で行っても、本現象は発生しなかったとのことです。

phoronix-test-suiteでテスト

次に「Phoronix Test Suite」でCPUに負荷をかけ、本現象が発生するかどうかテストが行われました。

stress-runで負荷をかけたテスト

同ソフトウェアで利用できるstress-runコマンドは、ハードウェアに負荷をかけ、安定性をチェックするために利用されます。

stress-runは複数のテストプロファイルを並列に実行し、システム全体に負荷をかけテストすることが可能です。

以下のコマンドで本テストが実行されました。

PTS_CONCURRENT_TEST_RUNS=4 TOTAL_LOOP_TIME=60 phoronix-test-suite stress-run build-linux-kernel build-php build-apache pgbench apache redis

これは4種の異なるベンチマークを60分間同時に実行するコマンドです。
あるテストの実行が完了すれば、即座に次のテストが実行されます。

stress-runはランダムにテスト内容を選択しますが、複数のサブシステムに常に負荷がかかるようにするため、テストプロファイルの内容を参照してテストの選択が行われます。

この結果、マルチプロセスによるコードのコンパイル、PostgreSQL、Apache、及びRedisのテストでは、即座に問題が発生したとのことです。

SMTを無効化してテスト

次にSMTを無効化してテストが行われました。

ryzen-test」では30分後に最初のセグメンテーション違反が発生しましたが、こちらはシステムが起動して229秒後、最初のセグメンテーション違反が発生し、その後高負荷な状況と共に数分毎にセグメンテーション違反が発生したとのことです。

日常的な利用では、現象が発生していない

さて、日常的に行っているベンチマークの作成や、Ryzen 5を搭載したメインのデスクトップでは、この現象が発生していないとのことです。


関連コンテンツ
同一カテゴリーの記事
コメント
オプション