![如何找到最大并行执行限制?](https://linux22.com/image/59401/%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E6%9C%80%E5%A4%A7%E5%B9%B6%E8%A1%8C%E6%89%A7%E8%A1%8C%E9%99%90%E5%88%B6%EF%BC%9F.png)
并行执行有限制吗?如果是,如何找出最大限制?
我正在创建一个脚本,该脚本创建一串由“&”连接的脚本,并使用 eval 将它们全部执行。像这样的东西:
scriptBuilder="ksh -x script1.sh & ksh -x script2.sh & ksh -x script3.sh";
eval $scriptBuilder;
只是想确定服务器上并行执行的最大限制是多少。
答案1
该命令ulimit -u
显示您可以启动的最大进程数。但是,实际上不要在后台启动那么多进程:您的计算机会花费时间在进程之间切换,而不会抽出时间来完成实际工作。
对于 CPU 密集型任务,请运行与计算机上的核心数量相同或更多的任务。如果有足够的 RAM 来容纳所有这些进程及其文件缓存:如果并行进程竞争 I/O 带宽以不断重新加载数据,它们的运行速度将比顺序运行它们慢。你可以查找其中的核心数/proc/cpuinfo
。
每个处理器运行一个任务的简单方法是使用GNU并行。
如果任务受 I/O 限制并使用相同的外围设备(例如,它们访问同一磁盘上的文件),通常最好按顺序运行它们。