2012-09-27 23 views
9

Estoy tratando de canalizar datos de alta velocidad de una aplicación a otra usando CentOS de 64 bits 6. He hecho los siguientes puntos de referencia usando dd para descubrir que las tuberías me están frenando y no el algoritmo en mi programa. Mi objetivo es alcanzar alrededor de 1.5 GB/s.¿Hay alguna manera de mejorar el rendimiento de las tuberías de linux?

En primer lugar, sin tuberías:

dd if=/dev/zero of=/dev/null bs=8M count=1000 
1000+0 records in 
1000+0 records out 
8388608000 bytes (8.4 GB) copied, 0.41925 s, 20.0 GB/s 

A continuación, una tubería entre dos procesos de DD:

dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M 
1000+0 records in 
1000+0 records out 
8388608000 bytes (8.4 GB) copied, 9.39205 s, 893 MB/s 

¿Hay ajustes que pueda hacer para el kernel o cualquier otra cosa que mejorará el rendimiento de ejecutar datos a través de una tubería? También probé tubos con nombre y obtuve resultados similares.

Respuesta

5

¿Has probado con bloques más pequeños?

Cuando pruebo en mi propia estación de trabajo noto una mejora sucesiva al reducir el tamaño del bloque. Es sólo en el ámbito del 10% en mi prueba, pero sigue siendo una mejora. Usted está buscando 100%.

Como resulta más pruebas, muy pequeños tamaños de bloque parecen hacer el truco:

me trataron

dd if=/dev/zero bs=32k count=256000 | dd of=/dev/null bs=32k 
256000+0 records in 
256000+0 records out 
256000+0 records in 
256000+0 records out 
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 1.67965 s, 5.0 GB/s 
, 1.68052 s, 5.0 GB/s 

Y con el original

dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M 
1000+0 records in 
1000+0 records out 
1000+0 records in 
1000+0 records out 
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 6.25782 s, 1.3 GB/s 
, 6.25203 s, 1.3 GB/s 

5,0/1,3 = 3,8 entonces ese es un factor considerable.

+1

¡Gracias por resolver esto! Hice algunas pruebas de seguimiento adicionales y descubrí que en realidad solo importa la velocidad de escritura. – KyleL

+0

IMO, la pregunta no coincide con el texto de la pregunta ni la respuesta. Quiero aprender la respuesta a la pregunta real, yo mismo. :RE –

Cuestiones relacionadas