jdk1.8u131 与jdk1.8u222 cpu获取方式的差异

Wesley13
• 阅读 716

JDK1.8u222 的cpu获取方式

int OSContainer::active_processor_count() {

int quota_count = 0, share_count = 0;

int cpu_count, limit_count;

int result;

cpu_count = limit_count = os::Linux::active_processor_count();

int quota  = cpu_quota();

int period = cpu_period();

int share  = cpu_shares();

if (quota > -1 && period > 0) {

quota_count = ceilf((float)quota / (float)period);

if (PrintContainerInfo) {

tty->print_cr("CPU Quota count based on quota/period: %d", quota_count);

}

}

if (share > -1) {

share_count = ceilf((float)share / (float)PER_CPU_SHARES);

if (PrintContainerInfo) {

tty->print_cr("CPU Share count based on shares: %d", share_count);

}

}

// If both shares and quotas are setup results depend

// on flag PreferContainerQuotaForCPUCount.

// If true, limit CPU count to quota

// If false, use minimum of shares and quotas

if (quota_count !=0 && share_count != 0) {

if (PreferContainerQuotaForCPUCount) {

limit_count = quota_count;

} else {

limit_count = MIN2(quota_count, share_count);

}

} else if (quota_count != 0) {

limit_count = quota_count;

} else if (share_count != 0) {

limit_count = share_count;

}

result = MIN2(cpu_count, limit_count);

if (PrintContainerInfo) {

tty->print_cr("OSContainer::active_processor_count: %d", result);

}

return result;

}

JDK1.8u131 的cpu获取方式

int os::active_processor_count() {

// Linux doesn't yet have a (official) notion of processor sets,

// so just return the number of online processors.

int online_cpus = ::sysconf(_SC_NPROCESSORS_ONLN);

assert(online_cpus > 0 && online_cpus <= processor_count(), "sanity check");

return online_cpus;

}

容器场景需要注意jdk版本,造成的线程数不一致,机器负载太高等情况

本文分享自微信公众号 - 云服务圈(heidcloud)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
CuterCorley CuterCorley
3年前
C语言基础习题50例(八)36-40
习题36求100之内的素数。实现思路:使用函数实现,并循环遍历依次判断。代码如下:cinclude<stdio.hinclude<math.hintmain(){intisPrime(intn);inti,count0;for(i2;i<101;i){if(isPrime(i)){
Karen110 Karen110
3年前
两行Python代码将JSON文本转换成标准字典
在获取网页报文时,经常遇到JSON格式的文本。如:\\\html"code":200,"message":"success","data":   "count":47,"pageCount":3,"floorCount":27,"list":     \       "info":           "
Wesley13 Wesley13
3年前
MySQL 中的 COUNT 的使用经验
COUNT(_)vsCOUNT(COL):他们在逻辑上是不同的。在MySQL中,COUNT(COL)是不会统计NULL列的。例如下面这张pet表,COUNT(_)与COUNT(owner)是不同的:ForExampleselectfrompet;
Easter79 Easter79
3年前
TiDB数据库 使用syncer工具同步实时数据
mysqlselectcampaign_id,count(id)fromcreative_outputgroupbycampaign_id;602843rowsinset(4min44.23sec)mysqlselectis_cr_own,count(id)fromcreative_o
Stella981 Stella981
3年前
Cocos Creator 如何制作拼图游戏,支持无规则形状!
预览效果!(https://oscimg.oschina.net/oscnet/c075e00adf85d09d261e7006e2eeeef3065.gif)  实现思路  假设一张图,按照row行col列分成count(row\col) 份,由count份碎片组成,每个碎片有自己特定的
Stella981 Stella981
3年前
Shell对比两个文件中的记录有多少重复
问题是这样的:有两个uid的文件,格式如下:uid1.txt1234523456....uid2.txt1234534567....需要统计这两个文件中相同的uid有多少个。方法有两个:1.一个是读入一个文件的一行然后再另一个文件中找,找到就加一,shell大概是这样的(未测试)count0
Wesley13 Wesley13
3年前
K8S 容器的资源需求、资源限制
容器的资源需求,资源限制requests:需求,最低保障;limits:限制,硬限制;CPU:1颗逻辑CPU11000,millicores500m0.5CPUQoS:1.Guranteed:每个容器同时设置CPU和内存的requests和limits即:cpU.limit
Wesley13 Wesley13
3年前
Mysql 多种Count写法的区别
今天我们来看看count的不同实现方式count(\)的实现方式先来看一下coun(\)的实现,MyISAM和InnoDB的实现上是不同的MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(_)的时候会直接返回这个数,效率很高;而InnoDB引擎就麻烦了,它执行count(_)的时候,需要把数
Stella981 Stella981
3年前
Hibernate纯sql查询结果和该sql在数据库直接查询结果不一致
问题:今天在做一个查询的时候发现一个问题,我先在数据库实现了我需要的sql,然后我在代码中代码:selectdistinctd.id,d.name,COALESCE(c.count_num,0),COALESCE(c.count_fix,0),COALESCE(c