1. 程式人生 > 實用技巧 >Linux資源-cpu

Linux資源-cpu

1 簡單介紹

32/64位處理器指的是cpu一次能處理多少位的資料。64位處理器速度快於32位處理器,主要體現在以下兩方面:

在運算能力方面,處理總長128位的指令,64位處理器只需要2個指令,而32位處理器需要4個指令;

在定址空間方面,CPU最大能查詢多大範圍的地址叫做定址能力,32位的CPU可以定址2的32次方個地址,每個地址代表1個位元組,那加起來就是4G,這也是為什麼32位的CPU最大能搭配4G記憶體的原因,再多的話CPU就找不到了;而64位CPU最大能搭載16G的記憶體。

2 cpu指標

如上所示,top命令可以看到總體的系統執行狀態和cpu的使用率 。

load average:

表示系統最近 1 分鐘、5 分鐘、15 分鐘的系統瓶頸負載。

%us:表示使用者空間程式的cpu使用率(沒有通過nice排程)

%sy:表示系統空間的cpu使用率,主要是核心程式。

%ni:表示使用者空間且通過nice排程過的程式的cpu使用率。

%id:空閒cpu

%wa:cpu執行時在等待io的時間

%hi:cpu處理硬中斷的數量

%si:cpu處理軟中斷的數量

%st:被虛擬機器使用的cpu

2.1 指標範圍

1)r(runq-sz)

  參考值:小於4,佇列大於4時,表明系統的cpu或記憶體可能有問題,如果r經常大於4,且id經常少於40,表示cpu的負荷很重。當佇列變長時,佇列中程序在等待cpu排程執行時所花的時間會變長。

2)Id(idle)

  參考值:大於40,如果r經常大於4,且id經常小於40,表示cpu的負荷很重。

3)User mode CPU utilization+ System mode CPU utilization

  合理值:60-85%,如果在一個多使用者系統中us+sy時間超過85%,則程序可能要花時間在執行佇列中等待,響應時間和業務吞吐量會受損害;us過大,說明有使用者程序佔用很多cpu時間,需要進一步的分析其它軟硬體因素;sy過大,說明系統管理方面花了很多時間,說明該系統中某個子系統產生了瓶頸,需要進一步分析其它軟硬體因素。

4)Wa(wait)

  參考值:小於25%,超過25%的wa的值可以表示子系統可能沒有被正確平衡,也可能是磁碟密集工作負載的結果,系統的磁碟或其它I/o可能有問題,可以通過iostat/SAR –C命令進一步分解分析。

2.2 CPU問題分析

top 系統CPU => vmstat 上下文切換次數 => pidstat 非自願上下文切換次數 => 各類程序分析工具(perf strace ps execsnoop pstack)
top 使用者CPU => pidstat 使用者CPU => 一般是CPU計算型任務
top 殭屍程序 =>  各類程序分析工具(perf strace ps execsnoop pstack)
top 平均負載 => vmstat 執行狀態程序數 =>  pidstat 使用者CPU => 各類程序分析工具(perf strace ps execsnoop pstack)
top 等待IO CPU => vmstat 不可中斷狀態程序數  => IO分析工具(dstat、sar -d)
top 硬中斷 => vmstat 中斷次數 => 檢視具體中斷型別(/proc/interrupts)
top 軟中斷 => 檢視具體中斷型別(/proc/softirqs) => 網路分析工具(sar -n、tcpdump) 或者 SCHED(pidstat 非自願上下文切換)