主板是瓶颈
865是478时代的芯片了,用来搭配775时代的cpu,只有商业意义。
补充:
原来如此
-_-|||
用cyd就好了,别换奔腾的了,板子撑不住的。
cpulimit -p PID -l 30限制进程使用30%的CPU,注意的是如果是多核系统的话,范围是0-100*n.
或者用renice
下面给个网上找到的调整nice值的例子,参考一下吧:
renice +10 `ps aux | awk '{ if ($3 >0.8 &&id -u $1 >500) print $2}'`
其中用到ps获取进程信息,其实ps中%CPU一列的意义是进程实际占有CPU时间和它存活时间的比值,这个值能反应进程对CPU的消耗,但不能准确反应进程所占CPU时间占整个系统CPU的百分比。
而top输出中的%CPU这一列正是进程所占CPU时间占整个系统CPU的百分比,用于限制进程CPU占用率更加合理,同时%MEM一列还反应了进程占用内存的百分比,可以用于限制进程内存占用率。
shell脚本代码如下:
#!/bin/sh
PIDS=`top -bn 1 | grep "^ *[1-9]" | awk '{ if($9 >50 || $10 >25 &&id -u $2 >500) print $1}'`
for PID in $PIDS
do
renice +10 $PID
echo "renice +10 $PID"
done
可以将这个脚本放到cron中运行,比如每分钟检查一次,只需以root身份添加crontab项:
#crontab -e
* * * * * limit.sh
以后每个一分钟就会检查一次,调整占用50%以上CPU或25%内存的进程的nice值,从而使这样的进程优先级变低,被调度的机会减少,同时会向root发邮件提示该进程被调整过。
A 的优先级加不上去,就再把B的优先级降下来,以确保A占CPU优先。
绑定cpu方式:c语言:
sched_setaffinity(0, sizeof(mask), &mask)
shell命令:
在grup启动时传给内核参数: isolcpus=2-15, 这里表示隔离第3到16个CPU, Linux程序只跑在第一和第二个CPU上, 空闲的CPU我们可以指定跑进程了.
这是内核文档里对内核参数的解释:
isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler.
Format:
<cpu number>,...,<cpu number>
or
<cpu number>-<cpu number>
(must be a positive range in ascending order)
or a mixture
<cpu number>,...,<cpu number>-<cpu number>
This option can be used to specify one or more CPUs
to isolate from the general SMP balancing and scheduling
algorithms. You can move a process onto or off an
"isolated" CPU via the CPU affinity syscalls or cpuset.
<cpu number>begins at 0 and the maximum value is
"number of CPUs in system - 1".
This option is the preferred way to isolate CPUs. The
alternative -- manually setting the CPU mask of all
tasks in the system -- can cause problems and
suboptimal load balancer performance.
linux nice 命令详解
功能说明:设置优先权。
语法:nice [-n <优先等级>][--help][--version][执行指令]
补充说明:nice指令可以改变程序执行的优先权等级。
参数:-n<优先等级>或-<优先等级>或--adjustment=<优先等级> 设置欲执行的指令的优先权等级。等级的范围从-20-19,其中-20最高,19最低,只有系统管理者可以设置负数的等级。
--help 在线帮助。
--version 显示版本信息。
linux renice 命令详解
功能说明:调整优先权。
语法:renice [优先等级][-g <程序群组名称>...][-p <程序识别码>...][-u <用户名称>...]
补充说明:renice指令可重新调整程序执行的优先权等级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。等级范围从-20--19,只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。
参数:
-g <程序群组名称> 使用程序群组名称,修改所有隶属于该程序群组的程序的优先权。
-p <程序识别码> 改变该程序的优先权等级,此参数为预设值。
-u <用户名称> 指定用户名称,修改所有隶属于该用户的程序的优先权。
taskset设定cpu亲和力,cpu亲和力是指
CPU调度程序属性关联性是“锁定”一个进程,使他只能在一个或几个cpu线程上运行。对于一个给定的系统上设置的cpu。给定CPU亲和力和进程不会运行在任何其他CPU。注意,Linux调度器还支持自然CPU关联:(不能让这个cpu只为这一个进程服务)
这里要注意的是我们可以把某个程序限定在某一些CPU上运行,但这并不意味着该程序可以独占这些CPU,其实其他程序还是可以利用这些CPU运行。如果要精确控制CPU,taskset就略嫌不足,cpuset才是可以
-a, --all-tasks *** 作所有的任务线程-p, --pid *** 作已存在的pid-c, --cpu-list 通过列表显示方式设置CPU
(1)指定1和2号cpu运行25718线程的程序
taskset -cp 1,2 25718
(2),让某程序运行在指定的cpu上 taskset -c 1,2,4-7 tar jcf test.tar.gz test
(3)指定在1号CPU上后台执行指定的perl程序
taskset –c 1 nohup perl pi.pl &
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)