在 Linux 上明确分配资源

在 Linux 上明确分配资源

我如何明确地将资源(包括 CPU 和物理内存)分配给特定端,例如网络或进程。

谢谢

答案1

一般来说,相对于系统的其他部分,进程会尽可能多地占用 CPU 和网络带宽。据我所知,您无法像使用虚拟机那样明确地为某个进程分配一定数量的 CPU 速度。

不过,正如 Crankyadmin 所提到的,您可以使用“nice”调整进程的调度优先级。根据“nice”等级,程序从 19(最低优先级)运行到 -20(最高优先级),程序通常以 0 运行。

请注意,非 root 用户只能默认在 19-0 范围内调整其程序。只有超级用户可以安排低于 0 的优先级(使用 /etc/profile 中的 ulimit 调整此默认值,但只有当您知道自己在做什么时才可以这样做)。

要以特定的良好级别运行新进程,请执行以下操作:

$ nice -n 10 pwd
/home/msimmons

这将以 10 级的良好级别运行命令。$ 表示这是普通用户。当您尝试设置更高的良好级别时,会发生以下情况:

$ nice -n -20 pwd
nice: cannot set niceness: Permission denied

现在,作为 root,我们成功了

## nice -n -10 pwd
/root

要更改已运行进程的优先级,请使用“renice”。因此,如果我想让我的 Firefox 会话运行得更快(愚蠢的想法),我会这样做:

renice -10 <firefox-PID>

执行此操作时要小心。每次进程生成子进程时,该子进程都会继承父进程的优先级。这意味着如果 Firefox(在我的情况下)失控,系统可能会随之失控。这就是为什么用户可以更改为的最大优先级为 0。

当心。

答案2

ulimits 和 nice :D

答案3

cpuset 是一个相对较新的 Linux 功能,我还没有使用过,但它听起来很有趣。以下是一些链接:

http://www.bullopensource.org/cpuset/

http://oss.sgi.com/projects/cpusets/

相关内容