您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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獲取方式的差異有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。