El SSD se vuelve más lento para archivos más grandes, ¿es normal?

El SSD se vuelve más lento para archivos más grandes, ¿es normal?

Escribir archivos grandes en mi SSD principal parece ser lento y estoy tratando de encontrar el motivo. La placa base es una ASUS Maximus VIII Hero y tengo dos SSD conectados:

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

Aquí está la salida de 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

Entonces, los 120 GB son el disco de mi sistema y los 500 GB son un disco secundario. Si escribo en los SSD con dd, obtengo los siguientes resultados:

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

Entonces, para un archivo de 1 GB, obtengo resultados muy similares. Pero escribir un archivo de 10 GB en sda se vuelve tremendamente lento.

encontrépreguntas similarespero pensé que oflag=direct debería omitir todos los cachés y escribir directamente. Durante la ejecución, tuve 25 GB de memoria libre.

La única explicación que se me ocurrió es que sda ​​tiene muchos más archivos (disco del sistema) y el SSD probablemente tenga más trabajo que hacer para colocar un archivo de 10 GB que en sdb. ¿Es normal este comportamiento? ¿Existe alguna prueba mejor que pueda ejecutar?

Respuesta1

Gracias al comentario de Daniel B, estoy seguro de que el comportamiento es normal.

Solución

Los dos discos tienen TurboWrites muy diferentes y se espera una caída al escribir archivos grandes. Para el disco más pequeño, la caída ocurre antes y es mucho mayor. Además, el tamaño de bloque (1G) que utilicé no es óptimo para las pruebas. Usar un 1M más razonable da mejores resultados.

Conclusión

Seguiré usando el disco más pequeño para las particiones de mi sistema, ya que tienen muchos archivos pequeños y funcionan rápido. Pero trasladaré dos máquinas virtuales que también estoy ejecutando en este SSD a la más grande, ya que con frecuencia hago copias de seguridad y las copio.

información relacionada