2019-12-12

Samsung の M.2 NVMe SSD・970 EVO Plus と Mac の相性



970 EVO Plus は購入時点のファームウェア 1B2QEXM7 では、NVMe 接続では Mac で安定して使えません。

2B2QEXM7 にすると安定して使える、というネット情報があります。



iMac は裏蓋をはずすわけにはいかないので、実際に PCIe スロットへの装着はできません。



そこで PCIe スロット差し込みと等価な Thunderbolt 3 対応ケースに装着し Thunderbolt 3 ポートに接続して外付けのデータディスクとして使うと数分〜30分程度経過するとマウントが外れます。




何も操作していないときでも発生しますが、何が契機かはわかりません。


マウントが外れたときのエラーは次のメッセージ内容です。


Dec 12 07:47:59 iMac NotificationCenter[392]: DEPRECATED USE in libdispatch client: Setting timer interval to 0 requests a 1ns timer, did you mean FOREVER (a one-shot timer)?; set a breakpoint on _dispatch_bug_deprecated to debug
 

Dec 12 07:47:59 iMac kcm[1614]: DEPRECATED USE in libdispatch client: Setting timer interval to 0 requests a 1ns timer, did you mean FOREVER (a one-shot timer)?; set a breakpoint on _dispatch_bug_deprecated to debug


2行がメッセージされるときと、下の1行だけのことがありますが、

"libdispatch client における非推奨な使い方; タイマー間隔が1ns タイマーを要求するゼロに設定; 永遠を意味しましたか(ワンショットタイマー)?; _dispatch_bug_deprecated 上のブレークポイントを 'debug' に設定”

という内容です。


libdispatch はマルチコアにおける並列処理の仕組みですが、SSD に対する何らかのタイマーが 1ns(ナノ秒)で設定されているためにエラー検出(タイムアウト)した、ということのようです。


1ns(ナノ秒)が小さすぎると思われます。

おそらく、ファームウェアアップデートではもう少し長いタイマー設定にしたと思われます。



Windows 機ではこのような事象は発生していないとのことですので、SSD のこのタイマー値を無視していると思われますが、Mac はデバイスのタイマー値を忠実に処理した結果エラーになったと思われます(あくまで推測です)。






Thunderbolt 3 ケースは次に示す Orico の SCM2T3-G40 です。

USB-C コネクタに雷( )マークがあります。










Thunderbolt 3 での接続は iMac 内蔵 PCIe スロットに挿し込んだのと等価ですから、ファームウェアアップデートが必要と思われますが、我が家の環境ではファームウェアアップデートができません。




この場合は、


 [このMacについて] ==>> [システムレポート...] ==>> [NVMExpress]


に現れますので PCIe 接続されたデバイス認識ですから、smartctl で S.M.A.R.T 情報を見ることが可能です。



次の画面コピーは [このMacについて] => [システムレポート] => [NVMExpress] の内容です。



Samsung 970 EVO Plus が PCIe NVMe 接続デバイスとして認識されています。
TRIM サポートもオンです。



上段の WDS500G3X0C は Thunderbolt 3 接続の Mojave ブートディスクですが 970 EVO Plus のようなエラー(マウント外れ事象)はありません。









次の画面コピーは 970 EVO Plus の S.M.A.R.T 情報ですが、内蔵 NVMe SSD 認識なので このように S.M.A.R.T 情報を見ることが可能です。










この状態での速度が次の測定結果です。










マウント外れのようなエラーが発生しなければこのような爆速の状態になります。







ファームウェアアップデート は PCIe スロットを備え、中を開けられる Mac か Windows 機があればできるのですが、どちらも持ち合わせていません。



この SSD を USB3.1 Gen2 のケースで使うと、iMac 本体への PCIe 接続とはみなされず、外付けディスクを USB 接続した、という認識でそのせいなのか安定して使えます。



しかし、速度は Thunderbolt 3 接続時の 2800MB/s 超えよりもぐっ〜と落ちて 800 MB/s 超えほどになってしまい、本来のパフォーマンスを得られません。








USB3.1 Gen2 のケースは 玄人志向 GWM.2NVMe-U3.1AC です。




一番上がケース外枠と蓋、真ん中が基板と装着した 970 EVO Plus、下はヒートシンク







この場合は、Thunderbolt3 ポートに接続しても USB3.1 Gen2 規格での接続です。


 [このMacについて] ==>> [システムレポート...] ==>> [NVMExpress]


には現れず、S.M.A.R.T 情報はでません。


 [このMacについて] ==>> [システムレポート...] ==>> [USB]


に現れ、USB 接続デバイス認識になっています(次の画面コピーがその USB デバイス認識状態)。


この場合は、くだんのタイマーは USB デバイス向けのタイマー値が使われると考えており、問題は発生しないと思われます。














次にこの SSD を USB3.1 Gen2 接続で macOS(Mojave または Catalina)を外付けブートディスクとしてセットアップします。

USB3.1 Gen2接続時はブートディスクとしてまったく問題はありません。




Thunderbolt 3 ケースで Thunderbolt 3 ポート接続にしてブートディスク動作させると、外付けデータディスクとして使ったときのようなマウント外れ事象にはならず、見かけ上は安定的に動作しているように見えます。





実態は、データディスクとして使っているときにエラーでマウントが外れる事象と同じエラーが発生していますが、ブートディスクの場合は4〜5秒で自動エラー回復しています。


短いと数分程度、長いときは30分程度経過するとこのエラーになって、たまたま操作中だとレインボーマークがくるくる回り、数秒間で回復します。



syslog で本事象を確認しました。



どういうタイミングでこのエラーが発生するかまだわかりません。



操作中か否かに関わらず非定期に発生します。



推定の域をでないのですが、キャッシュロードあたりがにおいます。



ファームウェアアップデートでおそらくこのエラーが発生しないようになると思われますが、アップデートできないため確認できていません。






【 結論:970 EVO Plus をファームウェアアップデートなしに Mac で使う 】



 1.USB3.1 Gen2 接続で使う --- 安定的に使える

   ただし、速度性能は USB3.1 Gen2 の最大 10 Gbps に影響され、800 MB/s 超え
   程度になる


 2.Thunderbolt 3 接続で ブートディスクにして使う --- 見かけ上は安定的

   速度性能は 2,800 MB/s 超えになる

   ただし、エラー回復されるとはいえ、それがどのような影響をもたらすかは不明
   なので、おすすめはできない




ということで、現時点では Thunderbolt 3 接続は諦めて USB3.1 Gen2 接続にしています。












0 件のコメント: