我正在学习Linux 中的CFS。所以我决定看看nice值如何为后台(即nice)进程提供较低的优先级。
我运行了两个 CPU 进程:taskset 01 python3 loop.py
在两个终端中。然后我renice -n 19 -p 12954
为其中一个进程。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12963 garyF 20 0 29620 9248 5256 R 49.8 0.1 2:05.64 python3
12954 garyF 39 19 29620 9420 5428 R 50.2 0.1 2:12.68 python3
但即使好值不同,top 仍表示进程获得相同的 CPU 份额 (50%)。即使运行这些进程大约五分钟,TIME+ 列也显示每个进程的 CPU 时间相似。我期望好的过程的时间片是很多低于正常进程,从而获得较低的CPU占用率。我错过了什么吗?
这是我的loop.py
:
#!/bin/python3
from datetime import datetime;
from datetime import timedelta;
import signal;
import sys;
def sigint_handler(signal, frame):
dt = datetime.now() - start_time;
ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds/1000.0;
print('You pressed Ctrl+C!');
print('Time elapsed is ', end='')
print(ms, end='');
print('ms.');
sys.exit(0);
pass;
signal.signal(signal.SIGINT, sigint_handler);
start_time = datetime.now();
val = 3;
while True:
val %= 2;
val += 2;
pass;