明确地在Linux上分配资源

我如何明确地分配资源(从CPU和物理内存)到特定的一方如networking或进程。

谢谢

一般而言,相对于系统的其他部分,进程将尽可能多地占用CPU和networking带宽。 就我所知,您不能像使用虚拟机一样明确地为一个进程提供一定的CPU速度。

你可以做的是调整进程的调度优先级,使用“nice”,但是,正如Crankyadmin提到的那样。 根据“好”的规模,程序从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 

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

 ## nice -n -10 pwd /root 

要改变已经运行的进程的好级别,请使用“renice”。 所以如果我想让我的Firefox会话更快(愚蠢的想法),我会这样做:

 renice -10 <firefox-PID> 

小心这样做。 每当一个进程产生一个subprocess时,该subprocessinheritance父进程的良好级别。 这意味着,如果firefox(在我的情况下)疯狂,系统可能会去与它。 这就是为什么用户可以改变的最大优先级是0。

小心。

ulimits和不错:D

cpusets是一个相对较新的Linuxfunction,我还没有玩过,但它听起来很有趣。 这里有一些联系:

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

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