SSD 對於較大的檔案會變慢,正常嗎?

SSD 對於較大的檔案會變慢,正常嗎?

將大檔案寫入我的主 SSD 似乎很慢,我正在嘗試尋找原因。主機板是華碩 Maximus VIII Hero,我連接了兩個 SSD:

  1. 三星 SSD 840 EVO 120GB --> sda
  2. 三星 SSD 840 EVO 500 GB --> sdb

這是 fdisk -l 輸出

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A3DB9022-5AE0-4BF4-BCA0-E0DAF7BB2106

Device         Start       End   Sectors  Size Type
/dev/sda1       2048   1050623   1048576  512M EFI System
/dev/sda2    1050624 167569407 166518784 79.4G Linux filesystem
/dev/sda3  167569408 234440703  66871296 31.9G Linux swap

Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

所以120GB是我的系統盤,500GB是輔助盤。如果我使用 dd 寫入 SSD,我會得到以下結果:

衛星數據:

~$ dd if=/dev/zero of=/tmp/dd_performance bs=1G count=1 oflag=direct
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.1183 s, 507 MB/s

~$ dd if=/dev/zero of=/tmp/dd_performance bs=1G count=10 oflag=direct
10737418240 bytes (11 GB, 10 GiB) copied, 296.29 s, 36.2 MB/s

深圳資料庫:

~$ dd if=/dev/zero of=/mnt/temp_data/dd_performance bs=1G count=1 oflag=direct
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.13052 s, 504 MB/s

~$ dd if=/dev/zero of=/mnt/temp_data/dd_performance bs=1G count=10 oflag=direct
10737418240 bytes (11 GB, 10 GiB) copied, 21.1424 s, 508 MB/s

因此,對於 1GB 文件,我得到了非常相似的結果。但是向 sda 寫入 10GB 檔案會變得非常慢。

我發現類似的問題但認為 oflag=direct 應該跳過所有快取並直接寫入。在執行過程中,我有 25GB 的可用記憶體。

我想到的唯一解釋是 sda 有更多的檔案(系統磁碟),而 SSD 可能比 sdb 需要做更多的工作才能在其上容納 10GB 檔案。這種行為正常嗎?我可以執行更好的測試嗎?

答案1

感謝 Daniel B 的評論,我確信這種行為是正常的。

解決方案

這兩個磁碟的 TurboWrites 差異很大,在寫入大檔案時預計會下降。對於較小的磁碟,下降發生得更快而且更大。另外,我使用的區塊大小(1G)對於測試來說並不是最佳的。使用更合理的1M可以獲得更好的效果。

結論

我仍然會使用較小的磁碟作為我的系統分割區,因為它們有許多小檔案並且運行速度很快。但我會將也在該 SSD 上運行的兩台虛擬機移至更大的虛擬機,因為我經常進行備份並複製這些虛擬機。

相關內容