Misalkan saya ingin menemukan semua kecocokan dalam file teks terkompresi:
$ gzcat file.txt.gz | pv --rate -i 5 | grep some-pattern
pv --rate
digunakan di sini untuk mengukur throughput pipa. Di komputer saya ini sekitar 420Mb / s (setelah dekompresi).
Sekarang saya mencoba untuk melakukan grep paralel menggunakan GNU parallel.
$ gzcat documents.json.gz | pv --rate -i 5 | parallel --pipe -j4 --round-robin grep some-pattern
Sekarang throughput turun menjadi ~ 260Mb / s. Dan apa yang lebih menarik adalah parallel
proses itu sendiri menggunakan banyak CPU. Lebih dari grep
proses (tetapi kurang dari gzcat
).
EDIT 1 : Saya sudah mencoba berbagai ukuran blok ( --block
), serta nilai -N
/ -L
opsi yang berbeda. Tidak ada yang membantu saya pada saat ini.
Apa yang saya lakukan salah?
--pipe
tidak efisien? Maksud saya apakah itu semacam masalah mendasar atau lebih spesifik implementasi.