运行时top
,我可以看到这个(缩短的)示例输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4586 ipc-adm+ 20 0 1303900 605152 92844 S 30,6 29,3 3:52.88 firefox
3985 ipc-adm+ 20 0 258588 124508 63072 S 12,2 6,0 0:40.04 compiz
3092 root 20 0 172392 56164 25980 S 6,1 2,7 0:30.13 Xorg
Run Code Online (Sandbox Code Playgroud)
我对两个值感兴趣:(PR
优先级)和NI
(友好度)。
如果我理解了我已经正确发现的内容,那么两者都会确定一个进程与其他进程相比将获得多少 CPU 时间。但是这些值之间有什么区别呢?
您能否还描述一下如何操纵流程的这些值以及在哪些情况下这可能有用?
是否可以nice
使用已知 ID设置正在运行的进程的新级别?
此操作是否需要 root 访问权限,或者只是进程的所有者?
有什么办法可以检查我的好lvl吗?我确实尝试过ps
,但由于某种原因,输出没有显示列 NI,如果我没记错的话,该列旨在显示 lvl 优先级。
ps -fl -c
F S UID PID PPID CLS PRI ADDR SZ WCHAN STIME TTY TIME CMD
0 S sebas 9761 26810 TS 19 - 6564 wait 18:07 pts/4 00:00:00 bash
0 R sebas 25389 9761 TS 19 - 5661 - 18:27 pts/4 00:00:00 ps -fl -c
Run Code Online (Sandbox Code Playgroud) 我有 8GB 的内存,但有时我会运行几个虚拟机和足够的 Chrome 进程来使用我的大部分内存。这通常没问题,但有时我的系统开始崩溃,而且我很难在不等待情况好转的情况下从中恢复,因为 UI 大部分时间都被冻结了。
在所有这些情况下,使用我大部分 RAM 的程序可能会被取消优先级。如果 Chrome 或 VM 没有响应,但我的图形环境和终端仍然响应,我可以切换到终端,找到罪魁祸首,然后杀死它。我可以想象像内存的“好”(以便我可以使用 Chrome 和我的 VM)或强制图形环境和我的终端留在内存中而不是交换的东西。
有没有办法确保当我的系统颠簸时 UI 保持响应?
谢谢!
编辑:我仍然对是否有类似记忆的好东西感兴趣,但我刚刚发现我的系统没有任何交换空间。我认为这是因为我开始使用加密的 home 和加密的交换(请参阅Swap not working on clean 14.04 install using encrypted home)。因此,我的系统可能变得没有响应,因为我没有任何交换空间,所以当内存不足时,我的系统无法交换不必要的程序。
为什么这么低?有时当 cpu 高负载时,Pulseaudio 的声音会变得断断续续。我认为这是因为 Pulseaudio 的进程优先级价值太低。那么,如果它会导致问题,那么为什么默认情况下它如此之低。
我需要运行dosemu
与nice --20
从脚本。问题是:负值只能与 sudo 一起应用。
你知道有什么方法可以在nice
没有脚本的情况下运行命令sudo
或直接nice --20 dosemu
从脚本运行吗?
Java 进程正在杀死我的计算机(Intel i3,8GB RAM)。它接管了整个 CPU,系统开始挂起。我试图改变niceness
java 进程,但我必须一直控制它,这并不总是可能的。因此,一开始我尝试构建一个命令来niceness
按名称更改进程。结束了这样的事情:
ps ax -o pid,comm | grep java | awk '{print $1}' | tr "\n" " " | renice -n 5 -p
Run Code Online (Sandbox Code Playgroud)
但它看起来不起作用。我不知道下一步要去哪里。Bash 脚本可能吗?每次都运行它cron
还是运行它?或者,还有更好的方法?watch
x
我想为gnome-system-monitor
具有 root 访问权限的运行添加一个快捷方式,并且具有非常高的优先级。
我的快捷方式命令是:
gksudo -k -u root nice --20 gnome-system-monitor
Run Code Online (Sandbox Code Playgroud)
但这给出了错误:
gksudo: unrecognized option '--20'
Run Code Online (Sandbox Code Playgroud)
我怎么能说--20
是 的一个选项nice
,不是gksudo
?
这是我想要的最好的命令吗?
我知道我可以使用以下命令更改友好度:
renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
Run Code Online (Sandbox Code Playgroud)
但是如果我可以在扫描顶部的进程时这样做会方便得多。