2006/5/12, Rafa Grimán <rgriman@sgi.com>:
Hola :)
Pues eso, que ya he resuelto el problema de rendimiento que tenía al hacer los benchmarks. Resumo el hardware: - 16 CPUs - 32 GB de RAM - 2 tarjetas de red GigE a 66 MHz - 3 tarjetas duales de red GigE a 133 MHz - 2 tarjetas de fibra de 4 Gbit a 133 MHz - 3 cabinas de disco de 4 Gbit
El problema era que no escalaba la red, daba un rendimiento muy malo. A pesar de tener pocos discos, no se podía achacar a los discos porque al hacer un stress, obteníamos 500+ MB/s.
Al usar iperf obteníamos unos resultados nefastos: 180 MB/s. Esto nos despistó y pensábamos que era la red: cables, switch, PCs cliente, ... El problema es que no podíamos cambiar nada de la red por lo que estábamos con las manos atadas :(
Pues resulta que al final la culpa fue mía 0:) El hardware estaba mal configurado !!! Me explico: se debe asignar 1 CPU por cada puerto de 1 GigE que se tenga. El problema con sistemas NUMA es que el sw (kernel o no) "van" a la CPU que más cercana está. En mi caso había 5 puertos de red GigE en el mismo brick asociadas a 2 CPUs. Luego había un cuello de botella porque los drivers de las 5 tarjetas iban a estas 2 CPUs :( El resultado de esto era: - cuello de botella en los buses PCI - las 2 CPUs estaban al 100% y el restante no hacía gran cosa
Ahora está separado y he quitado una de las tarjetas de 66 MHz (la otra es para el heartbeat) y he repartido las tarjetas por los diferentes bricks. Ahora consigo unos anchos de banda mejores: 350 MB/s en lectura y 280 MB/s en escritura. De todas maneras, no he podido separar del todo los dispositivos de E/S, pero si consigo hacerlo posiblemente mejore el rendimiento :)
Parece ser que son pocos los que tienen la posibilidad de trabajar con tantas cpu's, razon por la que no es mucho lo que te podemos ayudar. Aunque ese es el camino del aprendizaje. Eso figura en los manuales, de como hay que configurar el hw? En cuanto a las memorias, cada cpu, tiene su propio banco de memorias, o forman un solo banco para todas las cpu's? Salu2