linux監控平臺搭建-cpu
linux監控平臺搭建-cpu
目前服務器的主流CPU是intel或者AMD。到底主頻是什麽。多核、多線程、並發、並行、超頻、一級緩存、二級緩存、三級緩存。i386、x86
cpu:含有算術邏輯、控制、記憶等單元
頻率:就是CPU每秒鐘可以進行的工作次數。3.0GHz 這個CPU在一秒內進行3.0*10(9)
外頻:CPU與外部組件進行數據傳輸、運算是的速度。最好與內存相匹配。
總核數 = 物理CPU個數 X 每顆物理CPU的核數
總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數
查看物理CPU個數:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
查看每個物理CPU中core的個數(即核數):cat /proc/cpuinfo| grep "cpu cores"| uniq
查看邏輯CPU的個數:cat /proc/cpuinfo| grep "processor"| wc -l
查看CPU信息(型號):cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看CPU的主頻:cat /proc/cpuinfo |grep MHz|uniq
1.監控相關的CPU計算方法:通過采集/proc/stat來得到,大家可以參考sar命令的統計輸出來理解。
cpu.idle:CPU或CPUs空閑並且系統沒有未完成的磁盤I / O請求的時間百分比。
cpu.busy:與cpu.idle相對,他的值等於100減去cpu.idle。
cpu.guest:CPU或CPUS用於運行虛擬處理器的時間百分比。
cpu.iowait:CPU或CPUS用於維護硬件中斷所花費的時間百分比。
cpu.irq:CPU或CPUS用於維護硬件中斷所花費的時間百分比。
cpu.softirq:CPU或CPUS用於服務軟件中斷所花費的時間百分比。
cpu.nice:在優先級高的用戶級別執行時CPU占用率的百分比。
cpu.steal:當虛擬機管理程序為另一個虛擬處理器服務時,虛擬CPU或CPUS在非自願等待中花費的時間百分比。
cpu.system:在系統級別(內核)上執行時CPU占用率的百分比。
cpu.user:在用戶級別(應用程序)執行時CPU占用率的百分比。
cpu.cnt:cpu核數。
cpu.switches:cpu上下文切換次數,計數器類型。在stat裏面是這個 ctxt 30516916343
CPU時間=user+system+nice+idle+iowait+irq+softirq
例如:查看cpu核0
%usr %nice %sys %iowait %irq %soft %steal %guest %idle
cpu0 3143580 88 2678777 3863810314 2442 0 5461 0 0
btime:這行展示從系統啟動到現在為止的時間(以Epoch時間開始計算, 1970-01-01 00:00:00 +0000 (UTC)),單位為秒。
processes:(total_forks) 自系統啟動以來所創建的任務的個數目。
procs_running:當前運行隊列的任務的數目。
procs_blocked:當前被阻塞的任務的數目。
softirq:從系統啟動開始累計到當前時刻,軟中斷時間(單位:jiffies)
intr:這行給出中斷的信息,第一個為自系統啟動以來,發生的所有的中斷的次數;然後每個數對應一個特定的中斷自系統啟動以來所發生的次數。
2.監控相關的CPU-load計算方法:讀取/proc/loadavg,都是原始值類型的:
load.1min:表示最近1分鐘的平均負載(取決於機器的核數)
load.5min:表示最近5分鐘的平均負(取決於機器的核數)
load.15min:表示最近15分鐘的平均負載(取決於機器的核數)
常用的命令:sar、mpstat、top、iostat、vmstat、w...
mpstat [-P {cpu|ALL}] [internal [count]]
3.獲取進程cmd的方式:
ps -e o user,pid,cmd | grep ssh
ps w -p $pid
4.計算進程啟動的時間:
ps -p $pid -o lstart
或者腳本
#!/bin/bash
pid=$1
elt=$( ps w -p $pid o pid=,cmd=,etime= | awk ‘{print $NF}‘ )
case $( echo $elt | sed -e ‘s/:/:\n/g‘ | grep ":" -c ) in
"1")
elt=$( echo $elt | sed -e ‘s/:/ minutes ago /‘ )
;;
*)
elt=$( echo $elt | sed -e ‘s/-/ days ago /‘ -e ‘s/:/ hours ago /‘ -e ‘s/:/ minutes ago /‘ )
;;
esac
date -d "$elt seconds ago"
5.查看單個進程的狀態:
cat /proc/$pid/stat
參考:
http://blog.51cto.com/asinego/1949715
linux監控平臺搭建-cpu