1. 程式人生 > >七周一次課

七周一次課

vmstat top sar nload w

10.1 使用w查看系統負載

Linux w命令用於顯示目前登入系統的用戶信息。

執行這項指令可得知目前登入系統的用戶有哪些人,以及他們正在執行的程序。

單獨執行 w 指令會顯示所有的用戶,您也可指定用戶名稱,僅顯示某位用戶的相關信息。

語法
w [-fhlsuV] [用戶名稱]
參數說明:

-f  開啟或關閉顯示用戶從何處登入系統。
-h  不顯示各欄位的標題信息列。
-l  使用詳細格式列表,此為預設值。
-s  使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。
-u  忽略執行程序的名稱,以及該程序耗費CPU時間的信息。
-V  顯示版本信息。
實例
顯示當前用戶

w//顯示當前用戶,不顯示登錄位置

19:50:14 up 9:27, 4 users, load average: 0.31, 0.26, 0.18
USER   TTY   FROM       LOGIN@  IDLE  JCPU  PCPU WHAT
root   tty7   :0        Thu12  31:39m 10:10  0.60s gnome-session
root   pts/0  :0.0       17:09  2:18m 15.26s 0.15s bash
root   pts/1  192.168.1.17   18:51  1.00s 1.24s 0.14s -bash
root   pts/2  192.168.1.17   19:48  60.00s 0.05s 0.05s -bash

不顯示登錄位置

w -f

19:53:59 up 9:31, 4 users, load average: 0.05, 0.16, 0.15
USER   TTY    LOGIN@  IDLE  JCPU  PCPU WHAT
root   tty7   Thu12  31:43m 10:10  0.60s gnome-session
root   pts/0   17:09  2:21m 15.26s 0.15s bash
root   pts/1   18:51  0.00s 1.04s 0.14s -bash
root   pts/2   19:48  4:45  0.05s 0.05s -bash

以精簡模式顯示

w -s
19:54:37 up 9:31, 4 users, load average: 0.24, 0.19, 0.16
USER   TTY   FROM        IDLE WHAT
root   tty7   :0        31:43m gnome-session
root   pts/0  :0.0       2:22m bash
root   pts/1  192.168.1.17   0.00s -bash
root   pts/2  192.168.1.17   5:23 -bash

不顯示標題

w -h
root   tty7   :0        Thu12  31:44m 10:10  0.60s gnome-session
root   pts/0  :0.0       17:09  2:23m 15.26s 0.15s bash
root   pts/1  192.168.1.17   18:51  0.00s 1.05s 0.14s -bash
root   pts/2  192.168.1.17   19:48  5:54  0.05s 0.05s -bash

10.2 vmstat命令

? vmstat命令的含義為顯示虛擬內存狀態(“Viryual Memor Statics”),但是它可以報告關於進程、內存、I/O等系統整體運行狀態。
? -a:顯示活動內頁;
-f:顯示啟動後創建的進程總數;
-m:顯示slab信息;
-n:頭信息僅顯示一次;
-s:以表格方式顯示事件計數器和內存狀態;
-d:報告磁盤狀態;
-p:顯示指定的硬盤分區狀態;
-S:輸出信息的單位
? vmstat 監控系統狀態
? Vmstat 1 每隔1s打印一次
Vmstat 1 5 每隔1s打印一次,打印5次

[root@radius ~]# vmstat 1 6
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  60408 479876 443120 8139484    0    0     0    49    1    1  0  0 100  0  0
 0  0  60408 479920 443120 8139488    0    0     0    36  861 1416  0  0 100  0  0
 0  0  60408 479808 443120 8139488    0    0     0  1600  863 1387  0  0 99  0  0
 0  0  60408 480316 443120 8139504    0    0     0    40  772 1273  0  1 99  0  0
 0  0  60408 480084 443120 8139480    0    0     0   364  744 1226  0  0 100  0  0
 0  0  60408 479712 443120 8139480    0    0     0    28  698 1175  0  0 100  0  0

字段說明:
Procs(進程)
? r: 運行隊列中進程數量,這個值也可以判斷是否需要增加CPU。(長期大於1)
? b: 等待IO的進程數量。
Memory(內存)
? swpd: 使用虛擬內存大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統性能。
? free: 空閑物理內存大小。
? buff: 用作緩沖的內存大小。
? cache: 用作緩存的內存大小,如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那麽磁盤的讀IO bi會非常小。
Swap
? si: 每秒從交換區寫到內存的大小,由磁盤調入內存。
? so: 每秒寫入交換區的內存大小,由內存調入磁盤。
註意:內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。有些朋友看到空閑內存(free)很少的或接近於0時,就認為內存不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那麽不用擔心,系統性能這時不會受到影響的。
IO(現在的Linux版本塊的大小為1kb)
? bi: 每秒讀取的塊數
? bo: 每秒寫入的塊數
註意:隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。
system(系統)
? in: 每秒中斷數,包括時鐘中斷。
? cs: 每秒上下文切換數。
註意:上面2個值越大,會看到由內核消耗的CPU時間會越大。
CPU(以百分比表示)
? us: 用戶進程執行時間百分比(user?time)
us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那麽我們就該考慮優化程序算法或者進行加速。
? sy: 內核系統進程執行時間百分比(system time)
sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。
? wa: IO等待時間百分比
wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。
? id: 空閑時間百分比

? 關鍵的幾列:r,b,swpd,si,so,bi,bo,us,wa

10.3 top命令

top命令可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。通過top命令所提供的互動式界面,用熱鍵可以管理。
語法
top(選項)
選項
-b:以批處理模式操作;
-c:顯示完整的治命令;
-d:屏幕刷新間隔時間;
-I:忽略失效過程;
-s:保密模式;
-S:累積模式;
-i<時間>:設置間隔時間;
-u<用戶名>:指定用戶名;
-p<進程號>:指定進程;
-n<次數>:循環顯示的次數。
top交互命令
在top命令執行過程中可以使用的一些交互命令。這些命令都是單字母的,如果在命令行中使用了-s選項,?其中一些命令可能會被屏蔽。
h:顯示幫助畫面,給出一些簡短的命令總結說明;
k:終止一個進程;
i:忽略閑置和僵死進程,這是一個開關式命令;
q:退出程序;
r:重新安排一個進程的優先級別;
S:切換到累計模式;
s:改變兩次刷新之間的延遲時間(單位為s),如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s;
f或者F:從當前顯示中添加或者刪除項目;
o或者O:改變顯示項目的順序;
l:切換顯示平均負載和啟動時間信息;
m:切換顯示內存信息;
t:切換顯示進程和CPU狀態信息;
c:切換顯示命令名稱和完整命令行;
M:根據駐留內存大小進行排序;
P:根據CPU使用百分比大小進行排序;
T:根據時間/累計時間進行排序;
w:將當前設置寫入~/.toprc文件中。
實例

top - 09:44:56 up 16 days, 21:23,  1 user,  load average: 9.59, 4.75, 1.92
Tasks: 145 total,   2 running, 143 sleeping,   0 stopped,   0 zombie
Cpu(s): 99.8%us,  0.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4147888k total,  2493092k used,  1654796k free,   158188k buffers
Swap:  5144568k total,       56k used,  5144512k free,  2013180k cached

解釋:
? top - 09:44:56[當前系統時間],
? 16 days[系統已經運行了16天],
? 1 user[個用戶當前登錄],
? load average: 9.59, 4.75, 1.92[系統負載,即任務隊列的平均長度]
? Tasks: 145 total[總進程數],
? 2 running[正在運行的進程數],
? 143 sleeping[睡眠的進程數],
? 0 stopped[停止的進程數],
? 0 zombie[凍結進程數],
? Cpu(s): 99.8%us[用戶空間占用CPU百分比],
? 0.1%sy[內核空間占用CPU百分比],
? 0.0%ni[用戶進程空間內改變過優先級的進程占用CPU百分比],
? 0.2%id[空閑CPU百分比], 0.0%wa[等待輸入輸出的CPU時間百分比],
? 0.0%hi[],
? 0.0%st[],
? Mem: 4147888k total[物理內存總量],
? 2493092k used[使用的物理內存總量],
? 1654796k free[空閑內存總量],
? 158188k buffers[用作內核緩存的內存量]
? Swap:? 5144568k total[交換區總量],
? 56k used[使用的交換區總量],
? 5144512k free[空閑交換區總量],
? 2013180k cached[緩沖的交換區總量],

10.4 sar命令

? yum install -y sysstat
? sar -n DEV 網卡流量
? sar -q 系統負
? sar -b 磁盤讀寫
? sar -f /var/log/sa/saxx 歷史文件
Sa 二進制文件只能通過sar命令調用查看
Sar 第二天才能看到,可以cat查看
sar命令是Linux下系統運行狀態統計工具,它將指定的操作系統狀態計數器顯示到標準輸出設備。sar工具將對系統當前的狀態進行取樣,然後通過計算數據和比例來表達系統的當前運行狀態。它的特點是可以連續對系統取樣,獲得大量的取樣數據。取樣數據和分析的結果都可以存入文件,使用它時消耗的系統資源很小。
語法
sar(選項)(參數)
選項
-A:顯示所有的報告信息;
-b:顯示I/O速率;
-B:顯示換頁狀態;
-c:顯示進程創建活動;
-d:顯示每個塊設備的狀態;
-e:設置顯示報告的結束時間;
-f:從指定文件提取報告;
-i:設狀態信息刷新的間隔時間;
-P:報告每個CPU的狀態;
-R:顯示內存狀態;
-u:顯示CPU利用率;
-v:顯示索引節點,文件和其他內核表的狀態;
-w:顯示交換分區狀態;
-x:顯示給定進程的狀態。
參數
? 間隔時間:每次報告的間隔時間(秒);
? 次數:顯示報告的次數。
實例
察看內存和交換空間的使用率:

[root@aiker02 ~]# sar -r
Linux 3.10.0-514.26.2.el7.x86_64 (aiker02)      04/26/2018      _x86_64_        (1 CPU)

12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
12:10:01 AM     75980   1807744     95.97    142196   1424580    297316     15.78    848388    762212      1204
12:20:01 AM     75328   1808396     96.00    142200   1425140    297316     15.78    849252    761948       660
12:30:01 AM     74528   1809196     96.04    142200   1425696    297316     15.78    850040    761728       192
12:40:01 AM     71752   1811972     96.19    142200   1428412    297316     15.78    850868    763576      1164
12:50:01 AM     75308   1808416     96.00    142200   1424864    297316     15.78    843508    767408       772
01:00:01 AM     72608   1811116     96.15    142200   1427372    297316     15.78    844344    769108       712
01:10:01 AM     71984   1811740     96.18    142200   1427940    297316     15.78    845120    768856      1144
01:20:01 AM     71140   1812584     96.22    142204   1428492    297316     15.78    845944    768616       484
01:30:01 AM     70456   1813268     96.26    142204   1429048    297316     15.78    846752    768384       848
01:40:01 AM     70028   1813696     96.28    142204   1429640    297316     15.78    847552    768112      1192
01:50:01 AM     69056   1814668     96.33    142204   1430168    297316     15.78    848360    767856       296
02:00:01 AM     68424   1815300     96.37    142208   1430724    297316     15.78    849192    767632       692
02:10:01 AM     90376   1793348     95.20    142216   1407568    303348     16.10    828128    768216      1116
02:20:01 AM     87560   1796164     95.35    142228   1410176    303348     16.10    829088    769956       360
02:30:01 AM     80008   1803716     95.75    142232   1414848    306632     16.28    832644    773748      1092
02:40:01 AM     73348   1810376     96.11    142232   1415464    315948     16.77    838908    773512      1028

kbmemfree與kbmemused字段分別顯示內存的未使用與已使用空間,後面跟著的是已使用空間的百分比(%memused字段)。kbbuffers與kbcached字段分別顯示緩沖區與系統全域的數據存取量,單位為KB。
觀察系統部件10分鐘,並對數據進行排序:
sar -o temp 60 10

[root@aiker02 ~]# sar -o temp 60 10
Linux 3.10.0-514.26.2.el7.x86_64 (aiker02)      04/26/2018      _x86_64_        (1 CPU)

08:55:11 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
08:56:11 PM     all      0.43      0.00      0.33      0.07      0.00     99.16
08:57:11 PM     all      0.40      0.00      0.28      0.07      0.00     99.25

10.5 nload命令

yum install -y epel-release
yum install -y nload
nload
Device eth0 [172.18.111.154] (1/2):
===================================================================================
Incoming:

                                                         Curr: 3.66 kBit/s
                                                         Avg: 6.59 kBit/s
                                                         Min: 952.00 Bit/s
                                                         Max: 48.77 kBit/s
                                                         Ttl: 2.13 GByte
Outgoing:

                                                         Curr: 8.57 kBit/s
                                                         Avg: 14.32 kBit/s
                                                         Min: 4.70 kBit/s
                                                         Max: 52.80 kBit/s
                                                         Ttl: 865.76 MByte

七周一次課