我曾考虑过使用CPUlimit来限制进程的CPU使用率,但我的目标是也将相同百分比的使用率自动应用于其子进程。
是否有某些东西可以限制一个进程及其子进程的CPU使用率,而不管是否同时存在另一个需要资源的进程?
cgroup cpu.shares仅在存在另一个需要前一个进程消耗的资源的进程时才受限制。我正在寻找的是类似的东西,sudo cpulimit -p 1234 -l 20
因此对CPU使用率的限制不考虑是否存在另一个进程或不要求使用的资源。
这被应用于父进程(pid = 1234),而不是其子进程。
此链接可以帮助设置最大的CPU消耗的百分比被任何进程搜查:MrSeed
这个脚本可能也有帮助,任何人都想在这个脚本上输入建议以增强它,这是我的荣幸。
#!/bin/bash -xv
read -p "Which program u want to limit its processes?" ProgrameName
read -p "Which limitation percentage u want for it ?" limitationPercentage
read -p "Period to be sleep " sleepInterval
dataFile="/home/ahmedubuntu/Desktop/.file.txt"
separator="######"
trap "echo \"\" > $dataFile" SIGINT SIGTERM SIGHUP
########################################################
if [ -e $dataFile ]; then
echo "File $dataFile already exists!"
echo -e "" > $dataFile
else
echo >> $dataFile
fi
echo -e "$ProgrameName \n $limitationPercentage \n" >> $dataFile
getAllPIDRunUnderThisProgram=$( ps -e | grep "$ProgrameName" | awk '{print $1;}')
echo -e "${getAllPIDRunUnderThisProgram[@]} \n $separator \n" >> $dataFile
for i in $getAllPIDRunUnderThisProgram
do
gnomeTab+=( --tab -e "cpulimit -p $i -l $limitationPercentage ")
done
gnome-terminal "${gnomeTab[@]}"
#echo gnome-terminal "${gnomeTab[@]}"
########################################################
while sleep $sleepInterval
do
i=0
while read line
do
if [ -n "$line" ] && ["$line" != "separator"]
then
programeNameAndPID[i]=$line
((i++))
elif [["$line" == "separator"]] ; then
getAllPIDRunUnderThisProgram=$( ps -e | grep "$programeNameAndPID[0]" | awk '{print $1;}')
if [${#getAllPIDRunUnderThisProgram[*]} -gt ${#programeNameAndPID[*]}-2 ]
then
unset gnomeTab
newProcessNumber=${#getAllPIDRunUnderThisProgram[*]}-${#programeNameAndPID[*]}-2
index=${#getAllPIDRunUnderThisProgram[*]}-1
for (( c=$newProcessNumber ; c > 0 ; c-- ))
do
gnomeTab+=( --tab -e "cpulimit -p $getAllPIDRunUnderThisProgram[$index] -l $programeNameAndPID[1] ")
((index--))
done
gnome-terminal "${gnomeTab[@]}"
fi
i=0
unset programeNameAndPID
fi
done < $dataFile
done
并且通过添加nice -10
将很好地工作,不需要sudo和密码
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句