<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    怎么理解CPU負載與CPU使用率

    VSole2022-10-09 06:42:42

    1、簡介

    存儲、內存和 CPU(中央處理器)等系統資源不足會極大地影響應用程序的性能。因此,監控這些組件至關重要。
    與磁盤和內存不同,監控 Linux 系統上的 CPU 使用率并不那么簡單。在本文中,我們將了解如何解釋 CPU 指標并以人類可讀的格式顯示它們。

    2. CPU 負載與 CPU 使用率

    盡管 CPU 負載和 CPU 使用率聽起來很相似,但它們是不可互換的。CPU 負載定義為在單個時間點使用或等待使用一個內核的進程數。
    假設我們有一個單核系統,我們的 CPU 平均負載始終低于 0.6。這表明每個需要使用 CPU 的進程都可以立即使用它,而無需等待。如果 CPU 平均負載大于 1,則表示有進程需要使用 CPU,但由于 CPU 不可用,目前無法使用。
    但是,多處理器系統中高于 1 的平均負載不會成為問題,因為有更多內核可用。
    uptime命令為我們提供了以 1、5 和 15 分鐘為間隔的平均負載視圖:
    [root@localhost ~]# uptime
    12:40:05 up  2:29,  1 user,  load average: 0.37, 0.08, 0.03
    
    如果不知道系統的核心數,就無法解釋平均負載:
    [root@localhost ~]# cat /proc/cpuinfo |grep core
    core id        : 0
    cpu cores      : 1
    
    另一方面,CPU 使用率是 CPU 處理非空閑任務所花費的時間百分比。CPU 使用率只能在指定的時間間隔內測量。我們可以通過將空閑時間的百分比從 100 中減去來確定 CPU 使用率。

    3.計算CPU使用率

    3.1 使用vmstat獲取 CPU 使用率
    vmstat命令近乎實時地顯示 CPU 活動:
    [root@localhost ~]# vmstat 3 4
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     4  0      0 1347080   6120 941464    0    0    68    11   72  137  1  2 97  0  0
     1  0      0 1347080   6120 941464    0    0     0     0   84  157  1  2 97  0  0
     1  0      0 1347080   6120 941464    0    0     0     0   59  107  1  1 98  0  0
     1  0      0 1347080   6120 941464    0    0     0     1   59  104  1  1 98  0  0
    
    CPU 下的列提供了處理器時間花費在哪里的概覽:
    • us –運行非內核代碼所花費的時間
    • sy -運行內核代碼所花費的時間
    • id –空閑時間
    • wa –等待 I/O 所花費的時間
    • st -從虛擬機中竊取時間
    • id列是我們感興趣的。延遲一秒,我們使用 vmstat 計算CPU使用率:
    [root@localhost ~]# echo "CPU Usage: "$[100-$(vmstat 1 2|tail -1|awk '{print $15}')]"%"
    CPU Usage: 2%
    
    沒有提供任何參數的vmstat命令將給出自引導以來的 CPU 時間。這不會提供準確的 CPU 使用百分比。因此,參數只能是 1 和 2,我們采用一秒鐘后計算的指標:
    vmstat 1 2
    
    3.2. 使用/proc/stat獲取 CPU 使用率
    CPU 活動也可以從/proc/stat文件中提取。該文件包含自啟動以來有關系統的各種指標:
    [root@localhost ~]# cat /proc/stat 
    cpu  3020 28 1863 22404 35 432 47 0 0 0
    cpu0 3020 28 1863 22404 35 432 47 0 0 0
    intr 96468 28 100 0 0 0 0 0 0 1 0 0 0 1263 0 0 0 3696 0 153 928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 207 0 41 14600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 343 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    ctxt 340950
    btime 1628404433
    processes 3276
    procs_running 2
    procs_blocked 0
    softirq 112867 1 16857 56 269 510 0 261 0 0 94913
    
    第一行cpu 是系統所有核心指標的聚合。在具有 4 個內核的系統上,將有 4條cpu線——cpu0、cpu1、cpu2和cpu3。' cpu ' 行中的列表示處理不同任務所花費的時間:
    • user – 在用戶模式下花費的時間
    • nice – 在用戶模式下處理 nice 進程所花費的時間
    • system – 執行內核代碼所花費的時間
    • idle - 空閑時間
    • iowait – 等待 I/O 所花費的時間
    • irq - 服務中斷所花費的時間
    • softirq – 服務軟件中斷所花費的時間
    • steal —從虛擬機中竊取的時間
    • guest - 為來賓操作系統運行虛擬 CPU 所花費的時間
    • guest_nice – 為“不錯的”客戶操作系統運行虛擬 CPU 所花費的時間
    我們將使用這些指標來計算平均空閑百分比。隨后,我們將使用計算值來計算 CPU 使用率。需要注意的是,較舊的 Linux 發行版不計算竊取、來賓或來賓_nice指標。如果我們使用的是舊系統,我們會在計算中忽略這些指標:
    平均空閑時間 (%) = (idle * 100) / (user + nice + system + idle + iowait + irq + softirq +steal + guest + guest_nice)
    cat /proc/stat |grep cpu |tail -1|awk '{print ($5*100)/($2+$3+$4+$5+$6+$7+$8+$9+$10)}'|awk '{print "CPU Usage: " 100-$1}'
    CPU Usage: 2.4219
    
    由于我們正在開發單核系統,因此“cpu”行將與“cpu1 ”相同。因此,tail -1 的使用是 只檢索其中一行。然而,我們會在多處理器系統上使用“ cpu ”行,因為它是所有內核上的指標的集合。
    3.3. 使用top獲取 CPU 使用率
    通常,top命令通常用于顯示系統上的活動進程以及這些進程消耗了多少資源。不過,我們可以使用這個命令來測量 CPU 的狀態:
    [root@localhost ~]# top
    top - 07:08:31 up  2:41,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 322 total,   2 running, 320 sleeping,   0 stopped,   0 zombie
    %Cpu(s): 10.0 us, 15.0 sy,  0.0 ni, 97.8 id,  0.0 wa,  5.0 hi,  0.0 si,  0.0 st
    MiB Mem :   3709.4 total,   1483.1 free,   1402.0 used,    824.4 buff/cache
    MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   2053.4 avail Mem 
    
    此外,需要注意的是,top 命令顯示了單個內核的 CPU 百分比。在多處理器系統中,CPU 百分比可能超過 100%。例如,如果 4 個核心為 75%,top命令將顯示 CPU 為 300%。
    我們需要獲取空閑時間的值,以便我們可以從 100 中減去它來獲得使用情況:
    [root@localhost ~]# top -bn2 | grep '%Cpu' | tail -1 | grep -P '(....|...) id,'|awk '{print "CPU Usage: " 100-$8 "%"}'
    CPU Usage: 2.2%
    
    -n選項是top命令在結束前應該使用的迭代次數。我們避免使用第一個循環,因為我們檢索的指標將是自啟動以來的值。因此,我們進行了第二次迭代。
    或者,在多處理器系統中,我們必須將給定的“ id”值除以內核數,然后從 100 中減去該值。例如,如果我們在四核系統上運行,并且“ id ”值為 304%,我們將 CPU 使用率計算為:
    CPU 使用率 % = 100 – (304/4)
    [root@localhost ~]# top -bn2 | grep '%Cpu' | tail -1 | grep -P '(....|...) id,'|awk '{print "CPU Usage: " 100-($8/4) "%"}'
    

    4.結論

    在本文中,我們討論了 CPU 使用率和 CPU 負載之間的區別。許多人交替使用這兩個概念,這是不正確的。之后,我們深入研究了用于檢索 CPU 利用率指標的各種方法。
    cpu參數cpu時間
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    一個基于 Linux 操作系統的服務器運行的同時,也會表征出各種各樣參數信息。通常來說運維人員、系統管理員會對這些數據會極為敏感,但是這些參數對于開發者來說也十分重要,尤其當你的程序非正常工作的時候,這些蛛絲馬跡往往會幫助快速定位跟蹤問題。
    在本文中,我們將了解如何解釋 CPU 指標并以人類可讀的格式顯示它們。CPU 負載定義為在單個時間點使用或等待使用一個內核的進程數。假設我們有一個單核系統,我們的 CPU 平均負載始終低于 0.6。如果 CPU 平均負載大于 1,則表示有進程需要使用 CPU,但由于 CPU 不可用,目前無法使用。
    不可中斷狀態實際上是系統對進程和硬件設備的一種保護機制。當負載存在明顯升高趨勢時,及時進行分析和調查。系統調用過程中并不會涉及虛擬內存等進程用戶態資源,也不會切換進程。因此系統調用通常稱為特權模式切換。進程是由內核管理和調度的,進程上下文切換只能發生在內核態。因此相比系統調用來說,在保存當前進程的內核狀態和CPU寄存器之前,需要先把該進程的虛擬內存,棧保存下來。
    如果你的Linux服務器突然負載暴增,告警短信快發爆你的手機,如何在最短時間內找出Linux性能問題所在?來看Netflix性能工程團隊的這篇博文,看它們通過十條命令在一分鐘內對機器性能問題進行診斷。概述 通過執行以下命令,可以在1分鐘內對系統資源使用情況有個大致的了解。
    雖然監控工具可以幫助我們解決大多數問題,但我們有時需要登錄實例并運行一些標準的 Linux 性能工具。看他們通過十條命令在一分鐘內對機器性能問題進行診斷。飽和是指資源的負載超出其處理能力的情況,可以作為請求隊列的長度或等待時間來公開。當我們把 Linux 操作系統所有的關鍵一級計數器找完之后,就會得到這樣一張圖:這些命令的輸出,有助于快速定位性能瓶頸。
    后端們最怕的事情之一就是服務器的負載突然飆升,這可能又意味著一個個奪目Call馬上要打過來了。
    雖然平時大部分工作都是和網絡相關, 但會接觸Linux系統, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環境中. 自己記憶力不好, 很多有用的Linux命令不能很好的記憶, 現在逐漸總結一下, 以便后續查看。基本操作Linux 關機,重啟#?查看當前用戶環境變量。查看有幾顆cpu,每顆分別是幾核。
    Linux比較麻煩的就是很多東西都要用命令來控制,當然,這也是很多人喜歡它的原因,比較短小但卻功能強大。
    特權模式逃逸和掛載目錄逃逸是最常見的逃逸手法。 特權模式逃逸,也就是熟知的--privileged選項啟動后容器不受seccomp等機制的的限制,常見利用就是掛載根目錄或利用docker.sock創建惡意容器。 而基于容器特權模式逃逸也分不同特權情況,本文總結常見特權模式下不同Capabilities常見對應的攻擊手法。
    Linux高可用服務器集群解決方案讓IT系統管理員可以從容應對許多常見的硬件和軟件故障,允許多臺計算機一起工作,為關鍵服務正常運行提供保障,系統管理員可以不中斷服務執行維護和升級。Linux功能豐富、強大、靈活,你可以用它完成各種任務,在這篇文章中,我們將討論一些提高Linux服務器性能的技巧。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类