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 --rateutilizado 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 parallelproceso más interesante en sí mismo es usar mucha CPU. Más que grepprocesos (pero menos que gzcat).
EDITAR 1 : he probado diferentes tamaños de bloque ( --block), así como diferentes valores para -N/ -Lopciones. Nada me ayuda en este punto.
¿Qué estoy haciendo mal?
--pipees ineficiente? Quiero decir, ¿es algún tipo de problema fundamental o más de implementación específica?