<optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

<code id="6y7f6"></code>

  • <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
    <code id="6y7f6"><form id="6y7f6"></form></code>

      linux 性能自我學習 ———— cpu 快速定位問題 [六]

      前言

      主要介紹一下cpu如何快速定位問題。

      正文

      cpu 的一些性能指標:

      1. cpu 使用率

      cpu 使用率描述了非空閑時間占總cpu時間的百分比,根據cpu上運行任務的不同,又被分為用戶cpu、系統cpu、 i/o 等待cpu、 軟中斷、硬中斷。

      用戶cpu使用率,包括用戶態cpu使用率,和低優先級用戶態cpu 使用率,表示cpu 在用戶態運行的時間的百分比。

      用戶cpu 使用率搞,通常說明應用程序比較繁忙。

      1. 系統cpu使用率,表示cpu在內核態運行的時間百分比(不包括中斷)。系統cpu使用率高,說明內核比較繁忙。

      2. 等待i/o 的cpu使用率,通常也稱為iowait,表示等待i/o 的時間百分比。 io wait高,說說嗎系統與硬件設備的i/o交互時間比較長。

      3. 軟中斷和硬中斷的cpu使用率,分布表示內核調用軟中斷處理程序、硬中斷處理程序的時間百分比。它們的使用率搞,通常說明系統發送了大量的中斷。

      2. 平均負載

      也就是系統的平均活躍進程數,它反應了系統的整體負債情況,主要包括三個數值,分別指過去1分鐘、過去5分鐘、過去15分鐘的平均負載。

      理想情況下,平均負載等于邏輯cpu個數,它表示cpu恰好被充分利用,一般可以大于70%。

      3. 進程上下文切換

      1. 無法獲取資源導致的資源上下文切換

      2. 被系統強制調度導致的非自愿上下文切換

      上下文切換,本身保證了linux 正常運行的一項核心功能。但過多的上下文切換,會將原本運行進程的cpu時間,消耗在寄存器、內核棧、以及虛擬內存等數據的保存和恢復上,

      縮短進程真正運行的時間,稱為性能瓶頸。

      用什么工具來排查呢?

      幾個案例總結:

      1. 平均負載案例。

      先用uptime,查看系統的平均負載;而在平均負載升高后,又用mpstat和pidstat,分布觀察了每個cpu 和 每個進程cpu的使用情況,進而找出導致平均負載高的進程,使用的是stress 工具。

      1. 上下文切換的案例

      先用vmstat 查看系統上下文切換和中斷次數。

      然后通過pidstat,觀察和進程的自愿上下文切換和非自愿上下文切換情況。最后通過pidstat,觀察線程的上下文切換情況,找出上下文切換次數增多的根源,也就是我們的基準測試工具sysbench。

      1. 進程cpu 升高案例,先用top,然后是perf top。

      2. 短時進程問題,系統cpu搞,但是找不到進程。 可能是短時進程,崩潰等。

      通過perf record 和 perf report。

      短時進程可以使用execsnoop。

      1. 不可中斷進程或者僵尸進程的案例。 我們先用top 觀察到了iowait升高的問題,并發現了大量的不可中斷進程和僵尸進程;

      接著我們用dstat 發現是磁盤導致的,于實通過pidstat 找到了相關的進程。 可以用strace查看進程系統調用失了,最后通過perf分析進程調用鏈,發現磁盤i/o問題。

      1. 軟中斷案例,通過top 觀察到,系統的軟中斷cpu 使用高。

      通過top查看系統的軟中斷cpu使用率升高;接著查看/proc/softirqs 找到了幾種變化快的軟中斷,通過sar命令,發現網絡小包的問題。

      最后用tcpdump 找出網絡幀的類型和來源,確定是一個syn flood 攻擊導致的。

      工具表:

      示例圖:

      下一節,內存相關。

      posted @ 2023-06-04 09:26  敖毛毛  閱讀(28)  評論(0編輯  收藏  舉報
      欧洲黄色网页链接入口,免费A级毛片无码无遮挡久久影院,a免费黄色网址,国产一级黄色的网站
      <optgroup id="6y7f6"><small id="6y7f6"></small></optgroup>

      <code id="6y7f6"></code>

    1. <p id="6y7f6"><tbody id="6y7f6"><ins id="6y7f6"></ins></tbody></p>
      <code id="6y7f6"><form id="6y7f6"></form></code>