Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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 随着时间的推移,重复分叉短命子进程的父进程会消耗越来越多的CPU_Linux_Bash_Cpu Usage_Multicore - Fatal编程技术网

Linux 随着时间的推移,重复分叉短命子进程的父进程会消耗越来越多的CPU

Linux 随着时间的推移,重复分叉短命子进程的父进程会消耗越来越多的CPU,linux,bash,cpu-usage,multicore,Linux,Bash,Cpu Usage,Multicore,我有一个bash脚本,它在循环中执行以下操作: 睡眠0.04秒 ping同一LAN上的另一台主机,计数=1(仅发送一个回显请求),如果主机没有响应,则超时限制为1秒 问题是,在我调用脚本时,脚本占用了约1%的CPU,并且随着时间的推移,比如说在2-3小时后,我看到同一个脚本占用了约10%的CPU,并且随着时间的推移,会稍微占用越来越多的CPU 我在两种环境中使用此脚本: 只有一个CPU/核心的VMware主机 具有一个四核CPU(Intel i7)的真实机器 两者都在x86上使用Linux

我有一个bash脚本,它在循环中执行以下操作:

  • 睡眠0.04秒
  • ping同一LAN上的另一台主机,计数=1(仅发送一个回显请求),如果主机没有响应,则超时限制为1秒
问题是,在我调用脚本时,脚本占用了约1%的CPU,并且随着时间的推移,比如说在2-3小时后,我看到同一个脚本占用了约10%的CPU,并且随着时间的推移,会稍微占用越来越多的CPU

我在两种环境中使用此脚本:

  • 只有一个CPU/核心的VMware主机
  • 具有一个四核CPU(Intel i7)的真实机器
  • 两者都在x86上使用Linux内核v2.6.32
现在,我还注意到,如果我尝试ping的主机没有响应(因此ping在超时1秒后返回),那么问题就不会发生。 只有当LAN上的主机响应并且在收到回音回复后ping快速返回时,才会出现问题

使用VMWare,我根本没有发现问题。无论其他主机是否响应。因此,我假设它实际上与一个重要的多核环境相关

另外,'strace-c'显示bash脚本99%的时间都在waitpid()中,这意味着它休眠并等待其子进程(sleep&ping)退出

#/bin/bash
如果[“$1”=”;然后
echo-e“\n用法:$0\n”
出口1
fi
目标主机=$1
虽然(正确);做
睡眠0.04
ping$TARGET\u HOST-W 1-c 1>/dev/null 2>&1
完成

您能提供脚本给我们吗?这样我们就可以测试它,看看它还能做什么?请发布脚本。将脚本附加到主消息中。非常感谢。我不知道这是否相关(或者它是否正在发生),但是每次通过循环使用
(true)
可能会产生额外的(不必要的)子shell。尝试删除
包装,看看这是否有什么不同。我会尝试让您知道。谢谢:)
#!/bin/bash

if [ "$1" == "" ]; then
    echo -e "\nUsage: $0 <target host>\n"
    exit 1
fi

TARGET_HOST=$1

while (true); do
    sleep 0.04
    ping $TARGET_HOST -W 1 -c 1 > /dev/null 2>&1
done