Linux下和Windows下的效能監控

2021-08-30 10:50:32 字數 3860 閱讀 6481

uptime命令

top命令:可以知道每個程序佔cpu的情況

total 程序總數

running 正在執行的程序數

sleeping 睡眠的程序數

stopped 停止的程序數

zombie 殭屍程序數

cpu(s):

0.1% us 使用者空間占用cpu百分比

0.2% sy 核心空間占用cpu百分比

0.0% ni 使用者程序空間內改變過優先順序的程序占用cpu百分比

98.8% id 空閒cpu百分比

0.0% wa 等待輸入輸出的cpu時間百分比

0.0%hi:硬體cpu中斷占用百分比

0.0%si:軟中斷占用百分比

0.0%st:虛擬機器占用百分比

vmstat命令:可以統計系統的cpu,記憶體,swap,io等情況

procs

r: the number of processes waiting for run time.

等待執行的程序數。如果等待執行的程序數越多,意味著cpu非常繁忙。另外,如果該引數長期大於和等於邏輯cpu個數,則cpu資源可能存在較大的瓶頸。

b: the number of processes in uninterruptible sleep. 

處在非中斷睡眠狀態的程序數。意味著程序被阻塞。主要是指被資源阻塞的程序對列數(比如io資源、頁面排程等),當這個值較大時,需要根據應用程式來進行分析,比如資料庫產品,中介軟體應用等。

memory

swpd: the amount of virtual memory used.

已使用的虛擬記憶體大小。如果虛擬記憶體使用較多,可能系統的物理記憶體比較吃緊,需要採取合適的方式來減少物理記憶體的使用。swapd不為0,並不意味物理記憶體吃緊,如果swapd沒變化,si、so的值長期為0,這也是沒有問題的     

free: the amount of idle memory.

空閒的物理記憶體的大小

buff: the amount of memory used as buffers.

用來做buffer(快取,主要用於塊裝置快取)的記憶體數,單位:kb

cache: the amount of memory used as cache.

用來做cache(快取,主要用於快取檔案)的記憶體,單位:kb

inact: the amount of inactive memory. (-a option)

inactive memory的總量

active: the amount of active memory. (-a option)

active memroy的總量。

swap

從磁碟交換到swap虛擬記憶體的交換頁數量,單位:kb/秒。如果這個值大於0,表示物理記憶體不夠用或者記憶體洩露了  

從swap虛擬記憶體交換到磁碟的交換頁數量,單位:kb/秒,如果這個值大於0,表示物理記憶體不夠用或者記憶體洩露了

記憶體夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統效能會受到影響,磁碟io和cpu資源都會被消耗。

當看到空閒記憶體(free)很少的或接近於0時,就認為記憶體不夠用了,這個是不正確的。不能光看這一點,還要結合si和so,

如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統效能這時不會受到影響的。 

當記憶體的需求大於ram的數量,伺服器啟動了虛擬記憶體機制,通過虛擬記憶體,可以將ram段移到swap disk的特殊磁碟段上,

這樣會 出現虛擬記憶體的頁匯出和頁匯入現象,頁匯出並不能說明ram瓶頸,虛擬記憶體系統經常會對記憶體段進行頁匯出,

但頁匯入操作就表明了伺服器需要更多的記憶體了, 頁匯入需要從swap disk上將記憶體段複製回ram,導致伺服器速度變慢。

io     bi: blocks received from a block device (blocks/s).

每秒從塊裝置接收到的塊數,單位:塊/秒 也就是讀塊裝置。

bo: blocks sent to a block device (blocks/s).

每秒傳送到塊裝置的塊數,單位:塊/秒  也就是寫塊裝置。

system

in: the number of interrupts per second, including the clock.

每秒的中斷數,包括時鐘中斷 

cs: the number of context switches per second. 

每秒的環境(上下文)切換次數。比如我們呼叫系統函式,就要進行上下文切換,而過多的上下文切換會浪費較多的cpu資源,這個數值應該越小越好。

cputhese are percentages of total cpu time.

us: time spent running non-kernel code. (user time, including nice time)

使用者cpu時間(非核心程序占用時間)(單位為百分比)。 us的值比較高時,說明使用者程序消耗的cpu時間多

sy: time spent running kernel code. (system time)

系統使用的cpu時間(單位為百分比)。sy的值高時,說明系統核心消耗的cpu資源多,這並不是良性表現,我們應該檢查原因。

id: time spent idle. prior to linux 2.5.41, this includes io-wait time.

空閒的cpu的時間(百分比),在linux 2.5.41之前,這部分包含io等待時間。

wa: time spent waiting for io. prior to linux 2.5.41, shown as zero.

等待io的cpu時間,在linux 2.5.41之前,這個值為0 .這個指標意味著cpu在等待硬碟讀寫操作的時間,用百分比表示。wait越大則機器io效能就越差。說明io等待比較嚴重,這可能由於磁碟大量作隨機訪問造成,也有可能磁碟出現瓶頸(塊操作)。

st: time stolen from a virtual machine. prior to linux 2.6.11, unknown.

pidstat命令:需要安裝(sudo apt-get install sysstat), 可以細緻觀察程序,監控cpu,監控io,監控記憶體示例1:

pid:程序id

%usr:程序在使用者空間占用cpu的百分比

%system:程序在核心空間占用cpu的百分比

%guest:程序在虛擬機器占用cpu的百分比

%cpu:程序占用cpu的百分比

cpu:處理程序的cpu編號

command:當前程序對應的命令

示例2:

示例3:

Windows和Linux下socket的區別

1.標頭檔案 windows下winsock.h或winsock2.h linux下netinet in.h 大部分都在這兒 unistd.h close函式在這兒 sys socket.h 在in.h裡已經包含了,可以省了 2.初始化 windows下需要用wsastartup啟動ws2 32.l...

windows和linux下socket程式設計的不同

windows windows 標頭檔案的區別 include include windows 初始化的區別 windows 宣告socket socket型別 windows socket關閉 closesocket windows socket操作錯誤返回值 socket error windo...

windows下換行和linux下換行的區別

用以下文字為例 linux下 0000000 h t m l n n h t m l n 0000010 widows下 0000000 h t m l r n r n h t m l 0000010 0000011 由來 在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model ...