最好的建议很简单:尝试不同的值和衡量标准。
在并行化中,有很多因素会影响结果:磁盘 I/O、共享 CPU 缓存和共享 RAM 带宽,仅举三例。
top
是你测量时的朋友。如果您能够设法让所有 CPU 的空闲时间小于 5%,那么无论您做什么,您都不太可能更快。
top - 14:49:10 up 10 days, 5:48, 123 users, load average: 2.40, 1.72, 1.67
Tasks: 751 total, 3 running, 616 sleeping, 8 stopped, 4 zombie
%Cpu(s): 17.3 us, 6.2 sy, 0.0 ni, 76.2 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
GiB Mem : 31.239 total, 1.441 free, 21.717 used, 8.081 buff/cache
GiB Swap: 117.233 total, 104.146 free, 13.088 used. 4.706 avail Mem
这台机器空闲率为 76.2%。如果您的进程使用大量 CPU,那么在这里并行启动更多进程可能会有所帮助。如果他们使用大量的磁盘 I/O,它可能有帮助,也可能没有帮助。唯一知道的方法是测试和测量。
top - 14:51:00 up 10 days, 5:50, 124 users, load average: 3.41, 2.04, 1.78
Tasks: 759 total, 8 running, 619 sleeping, 8 stopped, 4 zombie
%Cpu(s): 92.8 us, 6.9 sy, 0.0 ni, 0.1 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
GiB Mem : 31.239 total, 1.383 free, 21.772 used, 8.083 buff/cache
GiB Swap: 117.233 total, 104.146 free, 13.087 used. 4.649 avail Mem
这台机器空闲 0.1%。启动更多进程不太可能使事情进展得更快。
因此,增加并行化直到空闲时间达到最小值或平均处理时间达到最小值(--joblog my.log
对于查看作业需要多长时间很有用)。
是的:GNU Parallel 可能会加速生物信息学(由一位生物信息学家编写)。
考虑阅读 GNU Parallel 2018(论文:http ://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html下载:https ://doi.org/10.5281/zenodo .1146014 ) 至少阅读第 1+2 章。它应该花费您不到 20 分钟的时间。您的命令行会因此而爱上您。