Как ограничить использование ЦП для процесса и его дочерних элементов независимо от того, существует ли другой процесс, требующий ресурсов, или нет

Я думал об использовании CPUlimit для ограничения использования процессора процессами, но я намерен применять тот же процент использования для его дочерних процессов слишком автоматически.

Есть ли что-то, что может ограничивать использование ЦП для процесса и его дочерних элементов независимо от того, существует ли или нет другой процесс, требующий ресурсов одновременно?

cgroup cpu.shares ограничивает только, когда существует другой процесс, требующий ресурсов, использованных предыдущим процессом. Я ищу что-то вроде sudo cpulimit -p 1234 -l 20, поэтому ограничение на использование процессора не учитывает, существует ли другой процесс или не требует использования ресурсов.

Это было применено к родительскому процессу (pid = 1234), но не к его дочерним элементам.

3
задан 7 February 2017 в 12:56

1 ответ

Эта ссылка может помочь потреблению ресурсов ЦП максимума Набора в проценте любым процессом, искавшим: 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 и паролю

2
ответ дан 7 February 2017 в 12:56

Другие вопросы по тегам:

Похожие вопросы: