GNU Parallel -- 如何理解 "block-size" 设置,并猜测将其设置为什么?
GNU Parallel -- How to understand "block-size" setting, and guess what to set it to?
在多核单机上使用 GNU parallel 运行ning grep 时如何设置块大小参数,基于 "large_file" 文件大小,"small_file" 文件大小和我正在使用的机器以获得最快的性能(或者如果我在这里缺少其他东西,请纠正我)?当设置太高或太低时,我会 运行 遇到哪些性能 issues/speed 瓶颈?我理解 what block-size 的作用,因为它以块的形式阻止了 large_file,并将这些块发送到每个作业,但我仍然缺少如何实现的潜力以及为什么这会影响执行速度。
有问题的命令:
parallel --pipepart --block 100M --jobs 10 -a large_file.csv grep -f small_file.csv
其中 large_file.csv 包含:
123456 1
234567 2
345667 22
和
其中 small_file.csv 包含:
1$
2$
等等...
谢谢!
parallel --pipepart --block -1 --jobs 10 -a large_file.csv grep -f small_file.csv
--block -1
会将 large_file.csv 拆分为每个作业槽的一个块(此处为 10 个块)。拆分将在运行中完成,因此不会将其读入 RAM 中进行拆分。
如果每行花费的时间大致相同,则拆分为 n 个大小均匀的块(其中 n = 运行 并行的作业数)通常是有意义的。如果变化很大(例如,某些行的处理时间比其他行长 100 倍),那么将其分成更多位可能更有意义。例如。 --block -10
将拆分为 --block -1
.
的 10 倍
最佳值很少能提前猜到,因为它也可能取决于你的磁盘有多快。所以尝试不同的值并确定瓶颈在哪里。它通常是磁盘 I/O、CPU、RAM、命令启动时间之一。
在多核单机上使用 GNU parallel 运行ning grep 时如何设置块大小参数,基于 "large_file" 文件大小,"small_file" 文件大小和我正在使用的机器以获得最快的性能(或者如果我在这里缺少其他东西,请纠正我)?当设置太高或太低时,我会 运行 遇到哪些性能 issues/speed 瓶颈?我理解 what block-size 的作用,因为它以块的形式阻止了 large_file,并将这些块发送到每个作业,但我仍然缺少如何实现的潜力以及为什么这会影响执行速度。
有问题的命令:
parallel --pipepart --block 100M --jobs 10 -a large_file.csv grep -f small_file.csv
其中 large_file.csv 包含:
123456 1
234567 2
345667 22
和 其中 small_file.csv 包含:
1$
2$
等等...
谢谢!
parallel --pipepart --block -1 --jobs 10 -a large_file.csv grep -f small_file.csv
--block -1
会将 large_file.csv 拆分为每个作业槽的一个块(此处为 10 个块)。拆分将在运行中完成,因此不会将其读入 RAM 中进行拆分。
如果每行花费的时间大致相同,则拆分为 n 个大小均匀的块(其中 n = 运行 并行的作业数)通常是有意义的。如果变化很大(例如,某些行的处理时间比其他行长 100 倍),那么将其分成更多位可能更有意义。例如。 --block -10
将拆分为 --block -1
.
最佳值很少能提前猜到,因为它也可能取决于你的磁盘有多快。所以尝试不同的值并确定瓶颈在哪里。它通常是磁盘 I/O、CPU、RAM、命令启动时间之一。