这篇文章将为大家详细讲解有关jdk1.8u131 与jdk1.8u222 cpu获取方式的差异有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
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版本,造成的线程数不一致,机器负载太高等情况
关于“jdk1.8u131 与jdk1.8u222 cpu获取方式的差异有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。