一,使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上
#taskset
-p, 设定一个已存在的pid,而不是重新开启一个新任务
-c, 指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。
1,切换某个进程到指定的cpu上
taskset -cp 3 13290
2,让某程序运行在指定的cpu上
taskset -c 1,2,4-7 tar jcf testtargz test
需要注意的是,taskset -cp 3 13290在设定一个已经存在的pid时,子进程并不会继承父进程的,
因此像tar zcf xxxtargz xxx这样的命令,最好在启动时指定cpu,如果在已经启动的情况下,则需要指定tar调用的gzip进程。
二,使用nice和renice设置程序执行的优先级
格式:nice [-n 数值] 命令
nice 指令可以改变程序执行的优先权等级。指令让使用者在执行程序时,指定一个优先等级,称之为 nice 值。
这个数值从最高优先级的-20到最低优先级的19。负数值只有 root 才有权力使。
一般使用者,也可使用 nice 指令来做执行程序的优先级管理,但只能将nice值越调越高。
可以通过二种方式来给某个程序设定nice值:
1,开始执行程序时给定一个nice值,用nice命令
2,调整某个运行中程序的PID的nice值,用renice命令
通常通过调高nice值来备份,为的是不占用非常多的系统资源。
例:
nice -n 10 tar zcf testtargz test
由nice启动的程序,其子进程会继承父进程的nice值。
查看nice值
# nice -n -6 vim testtxt &
# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 19427 2637 0 75 0 – 16551 wait pts/6 00:00:00 bash
4 T 0 21654 19427 0 71 -6 – 23464 finish pts/6 00:00:00 vim
renice调整运行中程序的nice值
格式:renice [nice值] PID
三,使用ulimit限制cpu占用时间
注意,ulimit 限制的是当前shell进程以及其派生的子进程。因此可以在脚本中调用ulimit来限制cpu使用时间。
例如,限制tar的cpu占用时间,单位秒。
# cat limit_cpush
ulimit -SHt 100
tar testtargz test
如果tar占用时间超过了100秒,tar将会退出,这可能会导致打包不完全,因此不推荐使用ulimit对cpu占用时间进行限制。
另外,通过修改系统的/etc/security/limits配置文件,可以针对用户进行限制。
四,使用程序自带的对cpu使用调整的功能
某些程序自带了对cpu使用调整的功能,比如nginx服务器,通过其配置文件,可以为工作进程指定cpu,如下:
worker_processes 3;
worker_cpu_affinity 0001 0010 0100 1000;
这里0001 0010 0100 1000是掩码,分别代表第1、2、3、4颗cpu核心,这就使得cpu的使用比较平均到每个核心上。
三菱PLC打开时会说指定的工程CPU本版本不支持,是版本不兼容造成的,解决方法如下:
1、首先,卸载安装失败的软件。可以在控制面板的“添加或删除”中找到三菱PLC程序,如下图标记所示;
2、然后点击更改/删除按键,如下图标记所示;
3、或者也可以打开电脑左下角的“开始”,然后单击“运行”,打开后在框中输入“REGEDIT”,然后单击“确定”,如下图标记所示;
4、在注册表编辑器中找到“MITSUBISHI”,然后右击删除它,这样问题就解决了,如下图所示。
可以做到,你的要求需要专门为的需求对 *** 作系统进行定制。
如果你用的是linux *** 作系统,可以通过自己修改内核源代码实现。
如果你用的是windows *** 作系统,请与微软中国联系,如果你的理由够充分、有市场、有价值,他们会为你提供技术上的解决方案。微软中国的业务之一就是为有特殊需求的windows用户提供技术解决方案和技术支持。
有的windows *** 作系统本身是可以进行定制的,比如windowz的服务器版的 *** 作系统,就可以为程序指定CPU的使用情况、内存分配、硬盘空间占用等等。
windows的 *** 作系统的定制,只能由微软公司给你做,你自己是不能做的。
采用这API可以做到SetProcessAffinityMask
不过默认都是支持多个cpu的了。
参考
>
1、在linux下修改进程的“cpu亲和力”
taskset是LINUX提供的一个命令(ubuntu系统可能需要自行安装,schedutils package)。他可以让某个程序运行在某个(或)某些CPU上。
以下均以redis-server举例。
1)显示进程运行的CPU
命令taskset -p 21184
显示结果:
pid 21184's current affinity mask: ffffff
注:21184是redis-server运行的pid
显示结果的ffffff实际上是二进制24个低位均为1的bitmask,每一个1对应于1个CPU,表示该进程在24个CPU上运行
2)指定进程运行在某个特定的CPU上
命令taskset -pc 3 21184
显示结果:
pid 21184's current affinity list: 0-23
pid 21184's new affinity list: 3
注:3表示CPU将只会运行在第4个CPU上(从0开始计数)。>
CPU外频:内存频率:主板总线频率=1:2:4
CPU总线带宽=CPU总线频率8,内存带宽=内存频率8(双通道再乘以2)
Intel FSB800 的264bit 双核CPU ,配两条64bit ddr2 800 的内存组双通道 ,内存工作的实际频率是400MHz,等效频率800MHz。(264bit 双核CPU ,这个说法不准确,就是64位双核,不是128位双核)。
Intel的FSB800的 64位双核 带宽是800128/8=128GB/s吗?那是否正好配两条64bit ddr2 800 的内存组双通道呢?
64位双核 带宽是80064/8=64GB/s。
配单条DDR2 800内存,带宽就够了。也就是说,Intel的CPU,总线是800MHz,配DDR2 800内存就够了。总线是1066的E7200或1333的E8300等CPU,得上内存双通道才能满足CPU总线带宽。
AMD 4200+的CPU支持HT 10总线,Athlon X2 7750采用的HT 30总线,即总线频率提升至3600MHz。
速龙双核都是HT 10规格,速龙FX系列的总线是HT 20规格。20规格的数据传输带宽由每通道16Gb/sec提升到了20GB/sec、24Gb/sec和28GB/sec,最大带宽由原来的128Gb/sec提升到了224GB/sec。
现在的羿龙系列都是HT 30规格。 HT 30的总线规范提供了18GHz、20GHz、24GHz、26GHz几种频率,最高可以支持32通道。32位通道下,单向带宽最高可支持208GB/s的传输效率。考虑到其DDR的特性,其总线的传输效率可以达到416GB/s。
AM2 K8平台下,内存实际工作频率=CPU当前的主频/一个除频数,这个除频数是一个整数,在倍频和内存分频选项(DDR 400/533/667/800选项)不变的情况下是不会改变的,具体可以计算也可以用CPU-Z来查看。
就以3800+来说,在默认的情况下,如果内存选择DDR 667,除频数是6,因为要保证主频2000/6<=333(667的一半),如果内存选DDR 800,则除频数为5,因为要保证主频2000/6<=400(800的一半),如果在DDR 667内存模式以及默认倍频的情况下将外频超到240,此时CPU频率为24010=2400MHz,而内存频率为2400/6=400(除频数在倍频和内存分频选项不变的情况下保持不变),此时内存实际上已经工作在DDR2 800的标准频率上。
如果用DDR2 800内存,在不设置异步的情况下,只有速龙双核20G、24G、28G等4的倍数主频的CPU,才能使内存工作在800MHz下。
你好,CPU是每个核心都是平均分配的,目前有的老游戏不支持多核心,手动是这样的:你运行游戏的时候可以打开任务管理器,看哪个核心的负荷最高,然后找到你的游戏进程,右键 -关系设置,然后把负荷最高的核心前面的勾去掉,然后重新勾上,在看时几个核心的负荷就平均了,希望能帮到你!
以上就是关于Linux下调节CPU使用的几种方法全部的内容,包括:Linux下调节CPU使用的几种方法、三菱PLC打开时会说你指定的工程CPU本版本不支持,请指定相应的CPU版本、怎么样让一个程序运行时,电脑CPU使用率超过50%等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)