Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 什么';在后台运行作业时,是什么导致了开销?_Linux_Bash_Process_Parallel Processing - Fatal编程技术网

Linux 什么';在后台运行作业时,是什么导致了开销?

Linux 什么';在后台运行作业时,是什么导致了开销?,linux,bash,process,parallel-processing,Linux,Bash,Process,Parallel Processing,作为加速系统中CPU密集型处理的尝试的一部分,我希望并行化对外部二进制文件的昂贵调用。在多个进程中运行这个二进制文件的开销比我预期的要大得多,我希望能得到一些帮助来找出它的来源 在8核机器上,当我在bash中使用循环顺序运行6次对二进制文件的调用时,它的运行时间如下: real 0m7.034s user 0m6.798s sys 0m0.199s real 0m9.824s user 0m54.048s sys 0m0.458s 当我执行相同的循环,

作为加速系统中CPU密集型处理的尝试的一部分,我希望并行化对外部二进制文件的昂贵调用。在多个进程中运行这个二进制文件的开销比我预期的要大得多,我希望能得到一些帮助来找出它的来源

在8核机器上,当我在bash中使用循环顺序运行6次对二进制文件的调用时,它的运行时间如下:

real    0m7.034s
user    0m6.798s
sys     0m0.199s
real    0m9.824s
user    0m54.048s
sys     0m0.458s
当我执行相同的循环,但指示在后台运行调用时,使用
&
后跟
等待
,时间如下:

real    0m7.034s
user    0m6.798s
sys     0m0.199s
real    0m9.824s
user    0m54.048s
sys     0m0.458s

二进制文件读取几个不变的数据文件21M&164K,然后读取单个输入文件将过程分成更小的部分。
使每个较小的部分成为一个可执行文件(甚至是带有
chmod u+x$script
的脚本),并随时间测量内存使用情况:

tf='wall:%e s:%S u:%U (%Xtext+%Ddata %F %p %t %Kmem %Mmax)'
/usr/bin/time -f "$tf" "$script"
这会让你发现什么在侵蚀你的记忆(如果有的话)


编辑: 较小的进程调用报告了这一点(随时间):
墙:1.08 s:0.03 u:1.05(0text+0data 0 0 0mem 11844max)一个实例
墙:8.89 s:0.41 u:48.93(0text+0data 0 0 0mem 11848max)并行作业

内存不是问题,只用了11.85兆欧

使用strace(strace-c脚本)发现有对
wait()
的调用,而这些调用大部分时间都在消耗。还不清楚(到目前为止)为什么旧的二进制文件会有这样的行为


我会在收到信息后发布更多信息。

它使用了多少内存?这些症状看起来像是颠簸。在执行这两个测试时,请尝试在另一个窗口中运行
vmstat 1
。它读取的文件有多大?您能否演示如何执行循环和无循环脚本?看起来不是内存使用的问题,运行脚本之前的可用内存是12512256,执行脚本时达到的最低值为12277468。对于单个实例,wall:1.08 s:0.03 u:1.05(0text+0data 0 0 0 0 0 0 0 0 0 em 11844max)wall:8.89 s:0.41 u:48.93(0text+0data 0 0 0 0 0 0 0 m 11848max)以并行方式运行作业。