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:
- Samsung SSD 840 EVO 120GB --> sda
- 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.