如何控制Java多线程漫衍到差别的CPU核上去?花呗小丽靠谱全网第一

摘要:Java语言的线程,从范例的角度来说是不强制要求任何具体的实现方法的。接纳1:1、N:1、M:N模型都可以。 具体到我们平时常用的JVM实现,Oracle/Sun的HotSpot VM,它是用1:1模型来实现Java线程


如何控制JAVA多线程漫衍到差别的CPU核上去?

Java语言的线程,plu小米凸点,从范例的角度来说是不强制要求任何具体的实现方法的。接纳1:1、N:1、M:N模型都可以。

具体到我们平时常用的JVM实现,Oracle/Sun的HotSpot VM,女童学马术坠亡,它是用1:1模型来实现Java线程的,也就是说一个Java线程是直接通过一个OS线程来实现的,中间并没有特别的间接结构。并且HotSpot VM自己也不干涉干与线程的调度,全权交给底下的OS去处理惩罚。所以如果OS想把某个线程调度到某个CPU/核上,它就自己弄了。

这个意义上说Java步伐跑在HotSpot VM上开多个Java线程,就跟一个C/C++步伐开了多线程来跑没有任何两样。那么怎么控制这些线程漫衍差别的CPU核上去呢?

在linux上的话,可以用taskset来把线程绑在某个指定的核上。在Java层面上,有大大写了个现成的库来利用taskset绑核:OpenHFT/Java-Thread-Affinity 有兴趣的话可以参考一下。

通过taskset,嬉戏谷死人,我们可以越发有效地利用CPU资源。我们可以把一些不太重要的好比copy/备份/同步等事情限定在一颗cpu上,或者是多核的cpu的一颗核心上进行处理惩罚,虽然这不一定是最有效的要领,但可以最洪流平上利用了有效资源,指环王3快播,降低那些不太重要的进程占用cpu资源;

检察系统下cpu信息:

#cat /proc/cpuinfo

taskset就可以帮我们完成这项事情,并且操纵非常简单;

该东西系统默认安装,亚妇医圣,rpm包名util-linux

#taskset --help

taskset (util-linux 2.13-pre7)

usage: taskset [options] [mask | cpu-list] [pid | cmd [args...]]

set or get the affinity of a process

-p, –pid operate on existing given pid

-c, –cpu-list display and specify cpus in list format

-h, –help display this help

-v, –version output version information

举例:

1、开启一个只用0标记的cpu核心的新进程(job.sh是你的事情脚本)

#taskset -c 0 sh job.sh

2、查找现有的进程号,调整该进程cpu核心使用情况(23328举例用的进程号)

#taskset -pc 0 23328

pid 23328's current affinity list: 0-3 #0-3体现使用所有4核进行处理惩罚

pid 23328's new affinity list: 0 #调整后改为仅适用0标记单核处理惩罚

3、可在top中进行负载check

最后你可以在你的事情脚本中加入该指令来合理利用现有的cpu资源;


本文地点:/fanwen/20190922/26142.html 转载请注明出处!
相关文章:
  1. [文档范文]如何设计千万级用户量网站的高并架构?副总
  2. [励志文章]控制不了情绪就做不了大事 精品总结
  3. [励志文章]实现梦想并不难,难在如何战胜自己 精品总结
  • [文档范文]2018年度妇女事情计划
  • [文档范文]劳动合同范本
  • [文档范文]老板开业致辞
  • [文档范文]大学军训心得体会1500字3篇
  • [文档范文]有关学校应急治理宣周活动总结及小结
  • [文档范文]口腔医生实习心得体会
  • [文档范文]供给室小我私家年终总结

  • 专题推荐:如何(74)差别(6)Java(17)控制(3)线程(4)漫衍(2)上去(2) 送蜂 离休干部 足协 廉政警句 防火标语 公事员转正申请 证婚人致辞 支教总结 教师小我私家述职 入党志愿 党员允许书 会议邀请函 预备党员思想汇报 世界遗产作文 弘扬雷锋精神征文 食品宁静法试题 金色花教案 捐赠仪式主持词 为人民办事教案 银行事情总结 拥堵费收取方案 高等学校结业生登记表基层组织意见 团拜会策划方案 优秀员工自荐书 结业感言 中国梦 正能量文章