GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでNCQを(実際に)無効にする方法

@frostschutz のおかげで、NCQ 機能なしで Linux の書き込みパフォーマンスを測定できました。カーネル ブート パラメータ libata.force=noncq NCQ を完全に無効にしました。

Seagate 6TB の書き込みパフォーマンスの問題に関しては、速度に変化はありませんでした。 Linux は依然として 180 MiB/s に達しています。

しかし、私は別のアイデアを思いつきました:
Linux ドライバーは、32 MiB チャンクの転送を使用しません。特に 32 個のキューを持つ NCQ が有効になっている場合 (32 個のキュー * 32 MiB => 1 GiB AHCI バッファー)、カーネルバッファーははるかに小さくなります。

そこで、256 KiB の転送で SATA コントローラーをテストしたところ、185 MiB/秒に達する可能性があります。

したがって、Seagate ST6000AS0002 ファームウェアは、大きな ATA バースト転送を処理できないと思います。 ATA 標準では、最大 65.536 論理ブロック (32 MiB に相当) が許可されます。

SMR - シングル磁気記録

悪い書き込みパフォーマンスのもう 1 つの可能性は、これらのアーカイブ デバイスで Seagate が使用しているシングル磁気記録技術である可能性があります。明らかに、FPGA 実装でまれな効果を引き起こしました。


キューの深さを 1 に設定 (/sys/block/sd*/device/queue_depth ) は NCQ を無効にします。カーネル パラメーター libata.force=noncq を使用する必要はありません。 (これは起動時にのみ設定できます)。

コミット 360f654e7cda850034f3f6252a7a7cff3fa77356

 Date:   Sat Sep 30 19:45:00 2006 +0900

 [PATCH] libata: turn off NCQ if queue depth is adjusted to 1
 
 Turn off NCQ if queue depth is adjusted to 1.

Linux
  1. Linuxでシャットダウンおよび再起動コマンドを無効にする方法

  2. Linuxでユーザーパスワードを変更、削除、または無効にする方法

  3. UNIX / Linux :ユーザー アカウントをロックまたは無効にする方法

  1. Linux で特定のユーザーに対して特定のコマンドを無効にする方法

  2. Linux で IPv6 の自動構成を無効にする方法は?

  3. Linux の特定のインターフェイスで ipv6 を無効にする方法は?

  1. RedhatLinuxでデフォルトのApacheウェルカムページを無効にする方法

  2. Linuxで通常のユーザーログインをブロックまたは無効にする方法

  3. CentOS8Linuxでファイアウォールを無効にする方法