Arch-Linux

如何理解 nvme 命令的輸出?

  • December 21, 2021

為了優化 SSD 的性能,Arch wiki說要執行nvme id-ns /dev/nvme0n1並評估輸出,特別是最後一行以lbaf. 如果有多個lbaf條目,則驅動器支持多個扇區大小選項。來自 Arch wiki 的最相關資訊是,

rp (相對性能)值指示哪種格式將提供最佳性能,0 表示最佳。

我的 NVMe SSD 確實有兩個lbaf條目,但不清楚哪一個更優化。這是我係統上上述nvme命令的相關輸出:

lbaf  0 : ms:0   lbads:9  **rp**:0x2 (in use)
lbaf  1 : ms:0   lbads:12 **rp**:0x1

所以這兩個選項都顯示一個以0開頭的rp。我如何理解末端x2x1的意義?

-H選項與命令一起使用以獲取人類可讀格式的結果。它應該看起來像這樣:

# nvme id-ns -H /dev/nvme0n1
...
LBA Format  0 : Metadata Size: 0   bytes - Data Size: 512 bytes - Relative Performance: 2 Good (in use)
LBA Format  1 : Metadata Size: 0   bytes - Data Size: 4096 bytes - Relative Performance: 1 Better

前綴0x是常見的指示後面的數字是十六進制的,所以rp後面的實際數字分別是簡單的 2 和 1。

SSD 性能受到所謂的寫放大的影響,因為 SSD 擦除塊通常大於普通文件系統 512 字節塊,因此為了重新寫入一個塊,SSD 必須擦除並重新寫入整個擦除塊(包含多個文件系統塊)每次。如果文件系統看到的塊大小與 SSD 的擦除塊大小匹配,則可以避免這種情況。(如果作業系統知道擦除塊大小並將使用寫入記憶體策略將寫入分組到更大的連續塊以進行補償,它也可以最小化但可能不會完全消除。)

因此,對於 SSD,將它們配置為大於經典的塊大小通常會提高性能。然而,有很多(舊的)作業系統和軟體還不能利用使用更大塊大小的可能性,所以一些 SSD 只是經過優化以處理 512 字節塊大小,並儘可能地使用內部緩衝能夠。

但是,還有許多其他因素會影響磁碟或 SSD 的性能,因此一些製造商顯然希望避免聲稱特定塊大小肯定是所有可能情況下的“最佳”。因此,某些 SSD 可能根本不使用0的****rp值。

引用自:https://unix.stackexchange.com/questions/683269