如何限制一个进程及其子进程的CPU使用率,而不管是否存在另一个要求资源的进程

艾哈迈德·扎因·艾尔·丹因

我曾考虑过使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何限制一个进程及其子进程的CPU使用率,而不管是否存在另一个要求资源的进程

来自分类Dev

一个特定进程的Dstat CPU使用率

来自分类Dev

使用python multiprocessing子进程如何终止另一个子进程?

来自分类Dev

一个进程如何阻止另一个进程(该进程产生)?

来自分类Dev

如何在一段时间内监视一个进程的CPU使用率?

来自分类Dev

限制一个进程访问另一个进程?

来自分类Dev

当另一个子进程完成时,如何终止子进程?

来自分类Dev

如何使用htop挂起一个进程及其所有子进程?

来自分类Dev

采用另一个进程的子窗口

来自分类Dev

如何杀死另一个用户的后台进程?

来自分类Dev

如何获取另一个进程MessageBox的消息?

来自分类Dev

如何杀死另一个用户的进程?

来自分类Dev

如何监视另一个程序/进程

来自分类Dev

Python:如何从另一个进程读取变量?

来自分类Dev

如何根据另一个进程配置ssis?

来自分类Dev

删除另一个进程正在使用的图像

来自分类Dev

另一个进程使用的文件C#

来自分类Dev

另一个进程使用的文件C#

来自分类Dev

释放另一个进程正在使用的文件

来自分类Dev

打开另一个进程正在使用的文件

来自分类Dev

文件已被另一个进程使用

来自分类Dev

nuget dll 被另一个进程使用

来自分类Dev

另一个进程使用的文件 - StreamWriter

来自分类Dev

如何将 DXGI 共享资源的句柄传递给另一个进程?

来自分类Dev

子进程:在后台启动进程并在一次调用中启动另一个进程

来自分类Dev

确定进程是否通过管道“连接”到另一个进程

来自分类Dev

如何运行一堆分层的虚拟外壳程序进程(另一个进程等)?

来自分类Dev

使用子进程的stdout作为另一个进程的stdin时,有时数据不会传递给第二个子进程

来自分类Dev

Python杀死一个子进程(启动另一个进程)并再次启动

Related 相关文章

  1. 1

    如何限制一个进程及其子进程的CPU使用率,而不管是否存在另一个要求资源的进程

  2. 2

    一个特定进程的Dstat CPU使用率

  3. 3

    使用python multiprocessing子进程如何终止另一个子进程?

  4. 4

    一个进程如何阻止另一个进程(该进程产生)?

  5. 5

    如何在一段时间内监视一个进程的CPU使用率?

  6. 6

    限制一个进程访问另一个进程?

  7. 7

    当另一个子进程完成时,如何终止子进程?

  8. 8

    如何使用htop挂起一个进程及其所有子进程?

  9. 9

    采用另一个进程的子窗口

  10. 10

    如何杀死另一个用户的后台进程?

  11. 11

    如何获取另一个进程MessageBox的消息?

  12. 12

    如何杀死另一个用户的进程?

  13. 13

    如何监视另一个程序/进程

  14. 14

    Python:如何从另一个进程读取变量?

  15. 15

    如何根据另一个进程配置ssis?

  16. 16

    删除另一个进程正在使用的图像

  17. 17

    另一个进程使用的文件C#

  18. 18

    另一个进程使用的文件C#

  19. 19

    释放另一个进程正在使用的文件

  20. 20

    打开另一个进程正在使用的文件

  21. 21

    文件已被另一个进程使用

  22. 22

    nuget dll 被另一个进程使用

  23. 23

    另一个进程使用的文件 - StreamWriter

  24. 24

    如何将 DXGI 共享资源的句柄传递给另一个进程?

  25. 25

    子进程:在后台启动进程并在一次调用中启动另一个进程

  26. 26

    确定进程是否通过管道“连接”到另一个进程

  27. 27

    如何运行一堆分层的虚拟外壳程序进程(另一个进程等)?

  28. 28

    使用子进程的stdout作为另一个进程的stdin时,有时数据不会传递给第二个子进程

  29. 29

    Python杀死一个子进程(启动另一个进程)并再次启动

热门标签

归档