Tengo problemas para obtener el máximo rendimiento de mi configuración. El hardware es el siguiente:
- doble procesador Quad-Core AMD Opteron (tm) 2376
- 16 GB de RAM DDR2 ECC
- Controladores RAID Adaptec 52245 duales
- 48 unidades SATA de 1 TB configuradas como 2 matrices RAID-6 (banda de 256 KB) + repuestos.
Software :
- Núcleo normal vainilla 2.6.32.25, compilado para AMD-64, optimizado para NUMA; Debian Lenny userland.
- benchmarks run: disktest, bonnie ++, dd, etc. Todos dan los mismos resultados. No hay discrepancia aquí.
- planificador io utilizado: noop. Sí, no hay truco aquí.
Hasta ahora, básicamente suponía que la creación de bandas (RAID 0) en varios dispositivos físicos debería aumentar el rendimiento de manera lineal. Sin embargo, este no es el caso aquí:
- cada matriz RAID alcanza aproximadamente 780 MB / s de escritura, sostenida, y 1 GB / s de lectura, sostenida.
- escribir en ambas matrices RAID simultáneamente con dos procesos diferentes da 750 + 750 MB / s, y leer en ambos da 1 + 1 GB / s.
- sin embargo, cuando separo ambas matrices juntas, usando mdadm o lvm, el rendimiento es de aproximadamente 850 MB / s de escritura y 1,4 GB / s de lectura. ¡al menos 30% menos de lo esperado!
- ejecutar dos procesos paralelos de escritor o lector contra las matrices rayadas no mejora las cifras, de hecho, degrada el rendimiento aún más.
Entonces, ¿qué está pasando aquí? Básicamente, descarté la contención del bus o la memoria, porque cuando ejecuto dd en ambas unidades simultáneamente, la velocidad de escritura agregada en realidad alcanza 1.5 GB / sy la velocidad de lectura supera los 2 GB / s.
Entonces no es el bus PCIe. Supongo que no es la RAM. No es el sistema de archivos, porque obtengo exactamente los mismos números comparativos con el dispositivo sin formato o con XFS. Y también obtengo exactamente el mismo rendimiento al usar bandas LVM y bandas md.
Que pasa ¿Qué impide que un proceso alcance el máximo rendimiento posible? ¿Es defectuoso el trazado de líneas de Linux? ¿Qué otras pruebas puedo ejecutar?
fuente
striping
programa no pueda funcionar a través de un algoritmo de subprocesos múltiples. Como está utilizando el RAID suave demdadm
, le sugiero que eche un vistazo a la fuente.Respuestas:
¿Has intentado ejecutar latencia superior mientras haces puntos de referencia? podría ser útil para ver qué Linux syscall es el culpable (si lo hay).
fuente
Por lo que puedo decir, es una tarjeta x8 PICe Gen 1: la velocidad de datos máxima absoluta que podría admitir es de 2 GBytes / seg asumiendo cero gastos generales. Los propios Adaptec solo afirman que las tarjetas pueden sostener 1.2Gbytes / seg en el mejor de los casos y usted está excediendo eso.
Supongo que, dado que es capaz de superar significativamente su rendimiento reclamado con dos conjuntos RAID 0 que actúan independientemente de la carga adicional, pequeña y todo lo que podría ser, el agregado de bandas aumenta la tensión de las CPU RAID, o posiblemente el subsistema RAM en el controlador, a cargas GByte / seg.
fuente