GNU 并行不生成作业
GNU parallel not spawning jobs
升级到 Debian 8.6 Jessie 后,GNU 并行脚本突然停止使用 --pipe 和 -L 选项并行处理超过 2 个作业。
升级前命令:
cat file_with_1064_lines.txt | parallel -L10 -j5 -k -v --pipe "wc -l"
生成了 5 个进程,输出如下:
wc -l
10
wc -l
10
...
升级后相同的命令:
wc -l
1060
wc -l
4
(上面的两个值相对于-L选项值发生变化——第一个是L*floor(1064/L)
,第二个是1064 mod L
,但总是只有两个进程输出。)
独立于并行版本(测试了最新版本和 2013 年的版本)也观察到了同样的情况。
PS.
$ uname -a
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
$ parallel --version
GNU parallel 20161222
-L是记录大小。 bug在20130122左右修复,你要的是读取1条10行的记录:
parallel -L10 -N1 -j5 -k -v --pipe wc -l
或1行10条记录:
parallel -L1 -N10 -j5 -k -v --pipe wc -l
升级到 Debian 8.6 Jessie 后,GNU 并行脚本突然停止使用 --pipe 和 -L 选项并行处理超过 2 个作业。
升级前命令:
cat file_with_1064_lines.txt | parallel -L10 -j5 -k -v --pipe "wc -l"
生成了 5 个进程,输出如下:
wc -l 10 wc -l 10 ...
升级后相同的命令:
wc -l 1060 wc -l 4
(上面的两个值相对于-L选项值发生变化——第一个是L*floor(1064/L)
,第二个是1064 mod L
,但总是只有两个进程输出。)
独立于并行版本(测试了最新版本和 2013 年的版本)也观察到了同样的情况。
PS.
$ uname -a Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux $ parallel --version GNU parallel 20161222
-L是记录大小。 bug在20130122左右修复,你要的是读取1条10行的记录:
parallel -L10 -N1 -j5 -k -v --pipe wc -l
或1行10条记录:
parallel -L1 -N10 -j5 -k -v --pipe wc -l