我有一个常规过程,它并不那么重要,但是会消耗大量的CPU能力,还有一个非常重要的过程,但是它花费了大部分时间空闲,但是当找到工作时,它确实需要很高的计算能力
我试图与运行nice -20 ./low_priority_process
和nice --20 ./high_priority_process
,但仍然较低优先级占用CPU的显著量时高优先级的进程是需要的人,我怎么可以运行一个过程,真的会产生或使用时CPU供电另一个进程甚至自动挂起
RR
调度用于高优先级过程。
我有一个常规过程,它并不那么重要,但是会消耗大量的CPU能力,还有一个非常重要的过程,但是它花费了大部分时间空闲,但是当找到工作时,它确实需要很高的计算能力
我试图与运行nice -20 ./low_priority_process
和nice --20 ./high_priority_process
,但仍然较低优先级占用CPU的显著量时高优先级的进程是需要的人,我怎么可以运行一个过程,真的会产生或使用时CPU供电另一个进程甚至自动挂起
RR
调度用于高优先级过程。
Answers:
看一下cgroups,它应该确切地提供您所需要的-CPU预留(以及更多)。我建议阅读使用cgroups控制应用程序的优先级。
就是说,将重要但经常空闲的进程归为一组,分配95%的CPU,将其他应用程序归为另一个5%的CPU-在需要时,您将获得(几乎)所有工作所需的功能,而不断那些时候,耗电最多只能达到5%。当计算浪潮消失时,所有CPU性能都将投向其余进程。好处是,如果您为类似的进程创建一个特殊的cgroup(对性能的最低要求),则sshd
无论尝试获取所有可能的CPU,您都可以登录-保留一些CPU时间sshd
。
cpulimit
或nice
修改进程的cgroup的命令?因为我如果cgroup是API调用,则我无法重新编译其中的任何应用程序以使用cgroup
systemd
,至少在某些情况下)从必须使用init系统界面(通常是特殊命令)的用户那里“窃取” cgroups接口。阅读链接的答案和维基百科文章。真。:)
libcgroup
软件包,该软件包带有用于处理cgroup的实用程序,其中包括一个守护程序(cgrulesengd
),该守护程序实际上可以根据某些条件将进程分为几组。
如果进程优先级(好的值)较低,则不会中断更高优先级的进程。您看到运行高优先级进程时低优先级进程仍在消耗大量CPU的原因是,高优先级进程并不那么忙。可能正在等待IO。用于chrt -p -i 0 $PID
以比更低的优先级运行该进程nice 19 -p $PID
(假定我们在这里谈论Linux)。
chrt -p -i 0 $PID
将进程放入“ true”空闲调度程序中。
尝试使用此示例将进程作为低级进程运行。
如果您的工作很不错,请使用tar xvf asets.zip
用
之后,发出
顶部以监视解压缩过程
尝试使用cpulimit特定的东西
wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin
-20
,“低优先级” --20
是“高优先级”,请看双破折号作为nice
命令。是的,我完全了解漂亮的价值,但是我的问题是,除了使用漂亮的价值之外,还有什么办法可以告诉调度程序
htop
或top
或ps
或其他任何东西上看到该过程具有很好的价值
对于未来的后起之秀,这里是一个完整的例子nice
有压力。
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
...
stress
:apt-get install stress
nice -20 stress --cpu 2
top
: v
v
v
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15894 ubuntu 39 19 8240 96 0 R 99.7 0.0 0:06.43 stress
15895 ubuntu 39 19 8240 96 0 R 99.7 0.0 0:06.42 stress
这表明两个CPU都已满。
nice --20 stress --cpu 1
top
v
v
v
v
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15928 ubuntu 20 0 8240 100 0 R 99.7 0.0 0:24.02 stress
15894 ubuntu 39 19 8240 96 0 R 51.2 0.0 1:12.46 stress
15895 ubuntu 39 19 8240 96 0 R 48.8 0.0 1:12.35 stress
这表明单核压力进程获得了完整的CPU,而低优先级进程都共享剩余的1 cpu
stress
调用并仅触发一个3进程stress --cpu 3
将为每个进程分配66%的CPU