SSD semakin lambat untuk file yang lebih besar, normal?

0

Menulis file besar ke SSD utama saya tampaknya lambat dan saya mencoba mencari alasannya. Mainboard adalah ASUS Maximus VIII Hero dan saya punya dua SSD yang terhubung:

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

Inilah fdisk -l output

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

Jadi 120GB adalah disk sistem saya dan 500GB adalah disk sekunder. Jika saya menulis ke SSD dengan dd, saya mendapatkan hasil berikut:

sda:

~$ 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

sdb:

~$ 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

Jadi untuk file 1GB, saya mendapatkan hasil yang sangat mirip. Tetapi menulis file 10GB ke sda ​​menjadi sangat lambat.

Saya menemukan pertanyaan serupa tetapi berpikir bahwa oflag = langsung harus melewati semua cache dan menulis secara langsung. Selama eksekusi, saya memiliki memori bebas 25GB.

Satu-satunya penjelasan yang saya buat adalah bahwa sda memiliki lebih banyak file (sistem disk) dan SSD mungkin memiliki lebih banyak pekerjaan yang harus dilakukan agar sesuai dengan file 10GB di atasnya daripada di sdb. Apakah perilaku ini normal? Apakah ada tes yang lebih baik yang bisa saya lakukan?

pgruetter
sumber
Saya percaya penggunaan yang salah Anda dd's bsparameter yang mempengaruhi kinerja negatif. Juga, tolok ukur menunjukkan bahwa 840 EVO tidak memiliki kinerja penulisan yang mendekati itu, lebih jauh mengisyaratkan pengujian yang cacat. // Terlepas dari semua itu: Model 500 GB memiliki dua kali cache "TurboWrite", 6 GB.
Daniel B
Bisakah Anda jelaskan apa yang saya lakukan salah dengan parameter bs? Petunjuk cache TurboWrite menarik, terima kasih! Karena keduanya 840 EVO saya sendiri tidak melihat perbedaan.
pgruetter
1
Ada ukuran blok optimal untuk transfer apa pun. Biasanya sekitar 256K-1M. Ini akan berbeda tergantung pada apa yang ada di kedua ujung transfer. Periksa jawaban ini pada topik khusus itu.
Daniel B
Mencoba tes lagi dengan bs = 1M hitung = 10.000 dan mendapat 122MB / s. Mungkin akan mencoba alat lain juga.
pgruetter

Jawaban:

0

Berkat komentar Daniel B, saya yakin perilakunya normal.

Larutan

Kedua disk memiliki TurboWrites yang sangat berbeda dan setetes diharapkan saat menulis file besar. Untuk disk yang lebih kecil, drop hanya terjadi lebih cepat dan jauh lebih besar. Juga, blocksize (1G) yang saya gunakan tidak optimal untuk tes. Menggunakan 1M yang lebih masuk akal memberikan hasil yang lebih baik.

Kesimpulan

Saya masih akan menggunakan disk yang lebih kecil untuk partisi sistem saya karena mereka memiliki banyak file kecil dan ini bekerja dengan cepat. Tapi saya akan memindahkan dua VM. Saya juga menjalankan SSD ini ke SSD yang lebih besar karena saya sering melakukan backup dan menyalinnya.

pgruetter
sumber