0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

服務(wù)器CPU的使用率能達(dá)到100%嗎?

strongerHuang ? 來源:濤歌依舊 ? 作者:濤歌依舊 ? 2021-07-04 10:55 ? 次閱讀

最近,一位同事急匆匆跑過來跟我說:糟糕了,服務(wù)器CPU的使用率達(dá)100%了。我心想不可能啊,CPU有那么多核,怎會跑滿?于是看了一眼,結(jié)果虛驚一場。這位同事看到的100%,并非指整個(gè)CPU使用率到了100%,而是指CPU某些核的使用率到了100%.趁此機(jī)會,我來聊聊與CPU相關(guān)的概念,對很多軟件開發(fā)和運(yùn)維人員來說,這些概念是必須要掌握的:

CPU主頻

多個(gè)CPU

多核CPU

邏輯核(超線程)

大小端

以一款CPU為例,看下具體參數(shù)

CPU主頻(時(shí)鐘頻率) 在上面這些參數(shù)中,人們最熟知的是CPU主頻(時(shí)鐘頻率)。買電腦時(shí),肯定需要看CPU主頻是多少。我們知道:CPU時(shí)鐘越快,產(chǎn)生上升沿/下降沿的速度就越快,就能更快地迫使其它器件做相應(yīng)工作。CPU的時(shí)鐘,就像龍舟比賽的擊鼓人,擊鼓頻率越快,就迫使劃船的人跟上節(jié)奏,結(jié)果龍舟也越快。

從CPU參數(shù)可以看到,該CPU有12個(gè)物理核,每個(gè)物理核對應(yīng)2個(gè)邏輯核(超線程技術(shù))。所以,從外部看,該CPU有24個(gè)核(邏輯核)。也就是說,該CPU有12個(gè)物理上的運(yùn)算器&控制器,有24個(gè)邏輯上的運(yùn)算器&控制器。

多個(gè)CPU我們看linux命令lscpu給出的信息

Socket(s): 2

可以看到,在這臺服務(wù)器上,總共插了2個(gè)CPU, 這2個(gè)CPU是物理上的CPU, 人眼可以看到,手也可以觸摸到:

多核CPU我們看linux命令lscpu給出的信息:

Core(s) per socket: 12

可以看到,針對每一個(gè)物理CPU而言,內(nèi)部有12個(gè)物理核。也就是說,在一個(gè)物理CPU內(nèi),有12個(gè)物理層面的運(yùn)算器&控制器,它們是實(shí)實(shí)在在存在的。很霸氣的感覺,12個(gè)物理核如下圖所示:

邏輯核(超線程)我們看linux命令lscpu給出的信息:

Thread(s) per core: 2

由于Intel采用了超線程技術(shù),所以每個(gè)物理核對應(yīng)2個(gè)邏輯核:

要注意,在物理上看來,只有一個(gè)核,但采用了超線程技術(shù),在使用時(shí),實(shí)際效果是2個(gè)核在同時(shí)并行(不是同步并發(fā))工作,也即有2個(gè)邏輯核,如下圖所示:

那么,在上面這臺服務(wù)器中,有多少個(gè)邏輯核呢?服務(wù)器中插有2個(gè)物理CPU, 每個(gè)物理CPU有12個(gè)物理核,每個(gè)物理核有2個(gè)邏輯核,故總共48個(gè)邏輯核。因此,當(dāng)操作系統(tǒng)俯視CPU硬件時(shí),它看到的是,在計(jì)算機(jī)中,有48個(gè)核,即有48個(gè)運(yùn)算器&控制器。

對于操作系統(tǒng)而言,它可以認(rèn)為有48個(gè)CPU核在同時(shí)并行(不是同步并發(fā))為它提供服務(wù),lscpu查出的信息如下:

CPU(s): 48

這里的48個(gè)CPU(s), 其實(shí)就是48個(gè)邏輯核。有時(shí),我們也可以說,這臺服務(wù)器有48個(gè)核。這臺服務(wù)器有2個(gè)CPU, 針對其中一個(gè)CPU,我們也可以說,它是“12核24線程”。

操作系統(tǒng)對核的分配需要注意的是,如上的服務(wù)器有2個(gè)CPU, 每個(gè)CPU有12物理核,每個(gè)物理核有2個(gè)邏輯核,這僅僅是針對特定服務(wù)器和CPU的。其他計(jì)算機(jī)或者CPU, 就不一定如此了。來看我的另外一臺服務(wù)器,配置略微寒酸:總共只有1個(gè)CPU, 1個(gè)物理核,1個(gè)邏輯核:

poYBAGDhJD2AHU4bAADkvl2Dw00344.jpg

如果在這個(gè)單核服務(wù)器上,運(yùn)行如下的死循環(huán)程序,會如何呢?

#include 《stdio.h》int main(){ while(1); // 死循環(huán) return 0;}

觀察top命令給出的結(jié)果,可以看到,1個(gè)進(jìn)程就消耗了大約99.0%的CPU,整個(gè)CPU的使用率達(dá)到99.7%: 那么,如果開啟2個(gè)進(jìn)程并發(fā)執(zhí)行呢?可以看到,每個(gè)進(jìn)程幾乎都是占用49.x%的CPU,整個(gè)CPU的使用率達(dá)到99.7%:

那么,如果開啟3個(gè)進(jìn)程并發(fā)執(zhí)行呢?可以看到,每個(gè)進(jìn)程幾乎都是占用32.x%的CPU,整個(gè)CPU的使用率達(dá)到98.7%:

可以看到,整個(gè)CPU幾乎被瓜分殆盡。這種調(diào)度和分配,是由操作系統(tǒng)完成的。

再來看多核CPU的情況,我找了另一臺服務(wù)器,有32個(gè)邏輯核,簡稱32個(gè)核。運(yùn)行一下死循環(huán)進(jìn)程,用top命令來分析??梢钥吹剑?個(gè)進(jìn)程占滿1個(gè)核,使用率100%, 而服務(wù)器32個(gè)核的使用率是3.6%:

運(yùn)行2個(gè)進(jìn)程,可以看到,2個(gè)進(jìn)程都占用99.7%的核,而服務(wù)器32個(gè)核的使用率是6.5%:

運(yùn)行3個(gè)進(jìn)程,可以看到,3個(gè)進(jìn)程都占用100%的核,而服務(wù)器32個(gè)核的使用率是9.8%:

看到使用率為100%時(shí),不要緊張,不要以為CPU就用完了,這臺服務(wù)器有32個(gè)核呢(擁有3200%的能力)。來看下3個(gè)進(jìn)程時(shí),每個(gè)核的具體使用情況(3個(gè)進(jìn)程,總共大概占用300%的核):

這些值會動態(tài)地變化,而且不一定是消耗在某些固定的核上。核的調(diào)度和資源分配,由操作系統(tǒng)來完成:

CPU大小端最后,來看一個(gè)大小端的問題,看lscpu命令的信息:

Byte Order: Little Endian它的含義是: CPU是小端模式。相信幾乎所有的程序員都聽說過這個(gè)概念,我們具體來測試一下。

下面是在Intel CPU + Windows + VC++6.0上的測試結(jié)果,可以看到:低位的0x78存儲在地址較小的位置(小端模式):

下面是對8051單片機(jī)進(jìn)行的仿真測試,可以看到:高位的0x12存儲在地址較小的位置(大端模式):

至此為止,我們對CPU的基本參數(shù)有了大致了解,這也是linux相關(guān)的開發(fā)、運(yùn)維人員必須掌握的。

以后也可以談笑風(fēng)生地聊多個(gè)CPU、多核CPU、邏輯核和大小端了,而不是一如既往地一知半解。

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10782

    瀏覽量

    210542
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8875

    瀏覽量

    84986

原文標(biāo)題:CPU使用率到100%,有哪些因素影響?

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    路由內(nèi)存使用率多少算正常

    路由內(nèi)存使用率的正常范圍取決于多種因素,包括路由的硬件規(guī)格、網(wǎng)絡(luò)環(huán)境、連接的設(shè)備數(shù)量以及用戶的具體使用情況。 路由內(nèi)存使用率概述 路由
    的頭像 發(fā)表于 10-15 14:35 ?188次閱讀

    服務(wù)器cpu用率高怎么解決

    服務(wù)器CPU用率高是一個(gè)常見的問題,它可能會導(dǎo)致服務(wù)器性能下降,甚至影響用戶體驗(yàn)。 一、了解服務(wù)器CP
    的頭像 發(fā)表于 10-10 15:14 ?349次閱讀

    服務(wù)器cpu和臺式機(jī)cpu區(qū)別

    服務(wù)器CPU和臺式機(jī)CPU的區(qū)別是一個(gè)復(fù)雜的話題,涉及到多個(gè)方面,包括設(shè)計(jì)、性能、功耗、可靠性、成本等。 服務(wù)器CPU和臺式機(jī)
    的頭像 發(fā)表于 10-10 15:12 ?352次閱讀

    gpu服務(wù)器cpu服務(wù)器的區(qū)別對比,終于知道怎么選了!

    gpu服務(wù)器cpu服務(wù)器的區(qū)別主要體現(xiàn)在架構(gòu)設(shè)計(jì)、性能特點(diǎn)、能耗效率、應(yīng)用場景、市場定位等方面,在以上幾個(gè)方面均存在顯著差異。CPU服務(wù)器
    的頭像 發(fā)表于 08-01 11:41 ?383次閱讀

    恒訊科技全面解析:如何有效降低服務(wù)器CPU用率

    降低服務(wù)器CPU用率是一個(gè)涉及監(jiān)控、診斷和優(yōu)化的全面過程。以下是一些有效的方法: 1、監(jiān)控CPU使用率: 使用工具如top, htop,
    的頭像 發(fā)表于 05-10 17:24 ?605次閱讀

    服務(wù)器資源監(jiān)控與告警處理方案的全面總結(jié)

    通過 top 命令,查看所有進(jìn)程運(yùn)行情況,在結(jié)果界面,通過 shift + p 切換視圖,按照CPU使用率倒序排列,找出CPU使用率最高的進(jìn)程依次分析(查看 %
    的頭像 發(fā)表于 04-20 09:35 ?547次閱讀

    服務(wù)器入侵現(xiàn)象、排查和處理步驟

    近期有一個(gè)朋友的服務(wù)器(自己做了網(wǎng)站)好像遭遇了入侵,具體現(xiàn)象是: 服務(wù)器 CPU 資源長期 100%,負(fù)載較高。 服務(wù)器上面的
    發(fā)表于 03-22 10:56 ?1008次閱讀
    <b class='flag-5'>服務(wù)器</b>入侵現(xiàn)象、排查和處理步驟

    Linux服務(wù)器CPU飆升的原因

    首先在Linux系統(tǒng)中檢查CPU使用率。可以通過在命令行中輸入top或htop命令來查看當(dāng)前系統(tǒng)中各個(gè)進(jìn)程的CPU使用率。如果CPU
    發(fā)表于 02-28 11:00 ?1300次閱讀
    Linux<b class='flag-5'>服務(wù)器</b><b class='flag-5'>CPU</b>飆升的原因

    服務(wù)器cpu和普通電腦cpu的區(qū)別

    服務(wù)器CPU和普通電腦CPU之間存在許多區(qū)別。在以下文章中,我們將詳細(xì)介紹服務(wù)器CPU和普通電腦CPU
    的頭像 發(fā)表于 02-01 11:14 ?6128次閱讀

    gpu服務(wù)器是干什么的 gpu服務(wù)器cpu服務(wù)器的區(qū)別有哪些

    gpu服務(wù)器是干什么的 gpu服務(wù)器cpu服務(wù)器的區(qū)別 GPU服務(wù)器是一種專門用于處理圖形運(yùn)算的服務(wù)器
    的頭像 發(fā)表于 01-30 15:31 ?764次閱讀

    Linux系統(tǒng)CPU用率100%的排查思路

    今天浩道跟大家分享linux硬核干貨,工作中當(dāng)你服務(wù)器CPU達(dá)到100%時(shí),干著急是沒有用的,該查問題還得自己去查。本文將給大家羅列排查異常故障思路,并且文末附上相關(guān)shell腳本,去
    的頭像 發(fā)表于 01-23 10:26 ?5680次閱讀
    Linux系統(tǒng)<b class='flag-5'>CPU</b>占<b class='flag-5'>用率</b><b class='flag-5'>100</b>%的排查思路

    如何在Linux系統(tǒng)中檢查CPU使用率

    首先在Linux系統(tǒng)中檢查CPU使用率??梢酝ㄟ^在命令行中輸入top或htop命令來查看當(dāng)前系統(tǒng)中各個(gè)進(jìn)程的CPU使用率。如果CPU
    發(fā)表于 01-06 10:42 ?1172次閱讀
    如何在Linux系統(tǒng)中檢查<b class='flag-5'>CPU</b><b class='flag-5'>使用率</b>

    Java程序CPU使用率高的原因

    Java程序是一種高級編程語言,由于其跨平臺的特性和強(qiáng)大的功能,被廣泛應(yīng)用于服務(wù)器端、企業(yè)級應(yīng)用和大數(shù)據(jù)處理等場景。然而,在某些情況下,我們可能會發(fā)現(xiàn)Java程序的CPU使用率異常高,這會導(dǎo)致系統(tǒng)
    的頭像 發(fā)表于 12-05 11:20 ?5005次閱讀

    gpu服務(wù)器是干什么的 gpu服務(wù)器cpu服務(wù)器的區(qū)別

     相比于傳統(tǒng)的CPU服務(wù)器,GPU服務(wù)器支持同時(shí)計(jì)算大量相似的計(jì)算操作,可以實(shí)現(xiàn)更強(qiáng)的并行計(jì)算性能。GPU服務(wù)器通常配備多個(gè)高性能的GPU,可以有效地支持大規(guī)模數(shù)據(jù)并行處理,提高了計(jì)算
    的頭像 發(fā)表于 12-02 17:20 ?1805次閱讀

    codewarrior怎樣知道各種內(nèi)存的使用率?

    codewarrior怎樣知道rom,ram,eeprom的使用率
    發(fā)表于 11-01 07:02