Supongamos que quiero encontrar todas las coincidencias en el archivo de texto comprimido:
$ gzcat file.txt.gz | pv --rate -i 5 | grep some-pattern
pv --rate
utilizado aquí para medir el rendimiento del tubo. En mi máquina es de aproximadamente 420Mb / s (después de la descompresión).
Ahora estoy tratando de hacer grep paralelo usando GNU paralelo.
$ gzcat documents.json.gz | pv --rate -i 5 | parallel --pipe -j4 --round-robin grep some-pattern
Ahora el rendimiento se reduce a ~ 260Mb / s. Y lo que es un parallel
proceso más interesante en sí mismo es usar mucha CPU. Más que grep
procesos (pero menos que gzcat
).
EDITAR 1 : he probado diferentes tamaños de bloque ( --block
), así como diferentes valores para -N
/ -L
opciones. Nada me ayuda en este punto.
¿Qué estoy haciendo mal?
--pipe
es ineficiente? Quiero decir, ¿es algún tipo de problema fundamental o más de implementación específica?