Una ficha técnica compara megabytes por segundo, y un servidor web casi nunca lee un archivo grande de principio a fin. Lee miles de trozos pequeños a la vez -filas, páginas de índice, archivos de sesión- y esa es una medida completamente distinta.
El número que importa
- Un disco de platos: unos pocos cientos de operaciones por segundo, porque un brazo físico tiene que moverse.
- Un SSD SATA: decenas de miles, limitadas por una interfaz diseñada para discos de platos.
- NVMe: cientos de miles, hablando directamente con el procesador por muchas colas a la vez.
La profundidad de cola es la diferencia de verdad: SATA tiene una cola de 32; NVMe tiene miles de colas, de miles de profundidad. Veinte trabajadores de PHP pidiendo algo todos en el mismo instante son exactamente esa forma.
Dónde se nota
- Una base que hace muchas lecturas pequeñas: casi toda página de un gestor de contenidos.
- Las sesiones y las cachés escritas como archivos.
- Una copia, una importación o un borrado grande, donde todo el trabajo son operaciones pequeñas.
Dónde no se nota
Si el conjunto de trabajo cabe en memoria, apenas se toca el disco y NVMe cambia muy poco. Comprar almacenamiento más rápido cuando la respuesta es más RAM es un error frecuente y caro.
Mida el suyo
fio --name=rand --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=30 --time_based --group_reporting
Eso mide lecturas aleatorias pequeñas en profundidad, que es el patrón que produce una base de datos. Las pruebas secuenciales miden algo que su servidor no hace nunca.
Mire primero el iowait:
top, la cifra %wa. Cerca de cero quiere decir que el almacenamiento no es su cuello de botella, sea cual sea el disco.
