系統調優概述 系統調優
1. 系統的運作狀況: CPU-> MEM ->DISK*-> NETWORK -> 應用程式調優
2. 分析是否有瓶頸(依據目前應用需求)
3. 調優(把錯誤的調正确)
性能優化就是找到系統進行中的瓶頸以及去除這些的過程。 性能優化其實是對 OS 各子系統達到一種平衡的定義,這些子系統包括了:
CPU Memory IO Network
這些子系統之間關系是互相彼此依賴的,任何一個高負載都會導緻其他子系統出現問題.
例如: 大量的網頁調入請求導緻記憶體隊列的擁塞; 網卡的大吞吏量可能導緻更多的 CPU 開銷; 大量來自記憶體的磁盤寫請求可能導緻更多的 CPU 以及 IO 問題;
是以要對一個系統進行優化,查找瓶頸來自哪個方面是關鍵,雖然看似是某一個子系統出現問題,其實有 可能是别的子系統導緻的.
調優就像醫生看病,是以需要你對伺服器所有地方都了解清楚。
1、檢視 CPU 負載相關工具 uptime 指令:
[root@silence80 ~]# uptime
13:22:30 up 8 min, 4 users, load average: 0.14, 0.38, 0.25
其内容如下:
12:38:33目前時間
up 50days系統運作時間 ,說明此伺服器連續運作 50 天了
1 user目前登入使用者數
load average: 0.06, 0.60, 0.48
系統負載,即任務隊列的平均長度。
三個數值分别為 1 分鐘、5 分鐘、15 分鐘前到現在的平均值。
注: 負載的數字記得跟你的處理器有關。
舉例:
如果伺服器的 CPU 為 1 核心,則 load average 中的數字 >=3 負載過高,如果伺服器的 CPU 為 4 核 心,則 load average 中的數字 >=12 負載過高。
隊列數為 3 時,如圖:
例:
15:13:31 up 6:19, 2 users, load average: 0.15, 0.08, 0.01
1,5,15 系統平均負載
1 分鐘 5 分鐘 15 分鐘
1 分鐘的系統負載,指的是 1 分鐘系統中持續運作的程序個數 理論上:單核心,1 分鐘的系統平均負載不要超過 3
2、通過/proc 目錄下的檔案了解系統實時運作狀态
[root@silence80 ~]# cat /proc/cpuinfo processor: 0
vendor_id: GenuineIntel
cpu family: 6
model: 42
model name : Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz
stepping : 7
cpu MHz: 2195.039
cache size: 6144 KB
physical id: 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception: yes
cpuid level: 13
wp: yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts
bogomips: 4390.07
clflush size: 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor: 1
。。。
processor: 2
processor: 3#說明本機器支援 4 個 CPU
擷取核心的指令行參數
[root@silence80 ~]# cat /proc/cmdline
roroot=UUID=ba5875b0-6c75-4c2f-a312-eb12e2a733a8rd_NO_LUKSrd_NO_LVM
LANG=en_US.UTF-8rd_NO_MDquietSYSFONT=latarcyrheb-sun16rhgb
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
注:/proc/cmdline 中的内容和 vim /etc/grub.conf 中的内容一樣
這個檔案列出字元和塊裝置的主裝置号,以及配置設定到這些裝置号的裝置名稱。
[root@silence80 ~]# cat /proc/diskstats
[root@silence80 ~]# cat /proc/diskstats相當于 (fdisk -l)
80 sda 9057 6029 579268 117444 2193 4811 56026 715330 0 66476 832739
81 sda1 584 244 4634 911 3 0 18 109 0 1000 1019
82 sda2 7967 5753 570330 114747 2190 4811 56008 715221 0 65749 829935
83 sda3 332 31 2904 745 0 0 0 0 0 744 744
檢視目前系統中可以支援的檔案系統類型 這個檔案列出可供使用的檔案系統類型,一種類型一行。雖然它們通常是編入核心的檔案系統類型,但該 檔案還可以包含可加載的核心子產品加入的其它檔案系統類型。
[root@silence80 ~]# cat /proc/filesystems (nodev 表示支援但不存在,沒使用)
nodevramfs nodevhugetlbfs
iso9660#已經在使用
nodevpstore nodevmqueue
ext4#已經在使用
nodevrpc_pipefs nodevautofs
檢視 raid 裝置資訊
#這個檔案包含了由 md 裝置驅動程式控制的 RAID 裝置資訊。
[root@silence80 ~]# cat /proc/mdstat
Personalities (個性):
unused devices: <none>
cat /proc/modules( lsmod 就是從這裡讀取資料的 )
檢視目前核心加載了哪些動态子產品:
lsmod ----> /proc/modules(lsmod)
[root@silence80 ~]# cat /proc/mounts
這個檔案以/etc/mtab 檔案的格式給出目前系統所安裝的檔案系統資訊。這個檔案也能反映出任何手工安 裝進而在/etc/mtab 檔案中沒有包含的檔案系統。
cat /proc/partitions#檢視分區表資訊
[root@silence80 ~]# cat /proc/partitions major minor #blocks name
8020971520 sda
81204800 sda1
8210240000 sda2
831024000 sda3
#檢視每個程序的資訊
ls /proc 程序 ID 号
[root@silence80 ~]# ls /proc/
11867230265031105acpimodules
101923612653314750asoundmounts
111907 2366 2654 3251buddyinfompt
11019132426623352busmtd
11231932240726643453cgroupsmtrr
[root@silence80 ~]# ll /proc/1/exe #檢視 1 号程序運作的絕對路徑
lrwxrwxrwx 1 root root 0 Nov 7 2014 /proc/1/exe -> /sbin/init
程序清單:
ps 指令:隻對具體程序進行觀測
ps -axu
5 個主要程序狀态:
S -->睡眠
R -->正在運作或準備運作
Z--> 僵屍程序
D -->不可中斷的睡眠程序
L -->(記憶體鎖,防止交換--解決 swap 資訊洩漏,鎖住記憶體,防止交換)
s --> session header 父子/父子----> 父程序,引導程序
+ -->前台程序組 表示是一組程序,而不是一個程序
l -->程序,線程
< -->高優先級程序
N --> 低優先級程序
實戰:按照實際使用記憶體從大到小排序顯示程序清單
[root@silence80 ~]# ps -aux --sort -rss | more 記憶體降序排序(去掉減号就是升序)
或:
[root@silence80 ~]# ps -aux --sort -rss > a.log
[root@silence80 ~]# ps -aux --sort rss | more 記憶體升序排序
[root@silence80 ~]# ps -aux --sort -pcpu | more#按 cpu 降序排序
檢視 -pcpu 幫助:
[root@silence80 ~]# man ps #然後搜尋 pcpu ,找到下面内容
pcpucpu utilization# cpu 使用率
找出占用 CPU 時間比較多的程序=
使用 top 檢視程序
top 指令:(這個指令本身就徆消耗 CPU 時間的)
[root@silence80 ~]# top
op - 21:39:26 up 1:18, 3 users, load average: 0.00, 0.07, 0.12
Tasks: 193 total,1 running, 192 sleeping,0 stopped,0 zombie
Cpu(s): 3.2%us, 1.4%sy, 0.0%ni, 95.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem:1164636k total,804456k used,360180k free,68964k buffers
Swap: 1023992k total,0k used, 1023992k free,420716k cached
CPU 相關參數:
Cpu(s):
95.8%us,使用者态
1.1%sy,核心态
2.6%ni,優先級切換
0.0%id,CPU 空閑***
0.0%wa,等待,IO 輸入輸出等待
0.0%hi,硬中斷
0.5%si,軟中斷
0.0%stCPU 偷竊時間。 如開啟虛拟機會出現這種情況
排序方法: M 記憶體排序 P CPU 排序
<前後翻頁,檢視程序
>
動态檢視某兩個程序狀态:
[root@silence80 ~]#ps -axu | grep find#找到程序 id
[root@silence80 ~]#vim a.txt
[root@silence80 ~]#ps -axu | grep a.txt#找到程序 id
[root@silence80 ~]# top -p 3987,15872
CPU 與用的 mpstat
mpstat ---> CPU 運作情況
[root@silence80 ~]# rpm -qf `which mpstat `
sysstat-9.0.4-18.el6.x86_64 #此軟體包,包括徆多檢視系統狀态的軟體包
[root@silence80 ~]# mpstat
[root@silence80 ~]# mpstat -P ALL #檢視所有 CPU 運作狀态
top然後數字鍵 1
[root@silence80 ~]# mpstat -P ALL 1 100#一秒鐘重新整理一次 連續重新整理 100 次
3、檢視 Memory 運作狀态相關工具
[root@silence80 ~]# free -m
totalusedfreesharedbufferscached
Mem:1137785352067410
-/+ buffers/cache:306830
Swap:9990999
buffers #記憶體從磁盤讀出的内容
cached #記憶體需要寫入磁盤的内容 當實體記憶體不夠用的時候,核心會把非活躍的資料清空。
通過/proc 檔案夾,檢視非活躍的記憶體:
/proc 檔案系統下的多種檔案提供的系統資訊不是針對某個特定程序的,而是能夠在整個系統範圍的上下 文中使用。可以使用的檔案随系統配置的變化而變化。
[root@silence80~]# cat /proc/meminfo MemTotal:1720320 kB MemFree:909000 kB Buffers:41500 kB
Cached:385016 kB SwapCached:0 kB
Active:347340 kB 活躍記憶體,指程序一直讀寫的記憶體空間
Inactive:346992 kB 非活躍記憶體
注:當記憶體不夠用時,kernel 總是把不活躍的記憶體交換到 swap 空間。如果 inactive 記憶體多時,加 swap
空間可以解決問題,而 active 多,則考慮加記憶體。
HighTotal: 981512 kB HighFree: 318568 kB LowTotal: 738808 kB
檢視記憶體及系統整體運作狀态:
vmstat :指令是最常見的 Linux/Unix 監控工具,可以展現給定時間間隔的伺服器的狀态值,包括服務
器的 CPU 使用率,MEM 記憶體使用,VMSwap 虛拟記憶體交換情況,IO 讀寫情況。
使用 vmstat 可以看到整個機器的 CPU,記憶體,IO 的使用情況,而不是單單看到各個程序的 CPU 使用率
和記憶體使用率。 比 top 指令節省資源。
注:當機器運作比較慢時,建議大家使用 vmstat 檢視運作狀态,不需要使用 top,因 top 使用資源比較
多。
[root@silence80 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r bswpdfreebuff cachesisobiboincs us sy id wa st
0 00 361292 69344 420744002134042 0 1 98 1 0
如圖:
每一列參數作用:
r 運作狀态的程序個數 。展示了正在執行和等待 cpu 資源的任務個數。當這個值超過了 cpu 個數,就會 出現 cpu 瓶頸。
b 不可中斷睡眠 正在進行 i/o 等待--阻塞狀态的程序個數 程序讀取外設上的資料,等待時
free剩餘記憶體,機關是 KB buffers #記憶體從磁盤讀出的内容 cached #記憶體需要寫入磁盤的内容
si swapinswap 換入到記憶體
so swapout 記憶體換出到 swap換出的越多,記憶體越不夠用
bi blockin 從硬碟往記憶體讀。 機關是塊。把磁盤中的資料讀入記憶體
bo blockout 從記憶體拿出到硬碟 (周期性的有值) 寫到硬碟 注:#判斷是讀多還是寫多,是否有 i/o 瓶頸
in 系統的中斷次數,cpu 排程的次數多
cs 每秒的上下文切換速度
注:如果這個資料比較大,說明有大并發的程序或線程在運作。 這種情況下,一般會用大理網絡通路請求。
更多記憶體參以一下表格: vmstat 每個字段含義說明
類别 項目 含義 說明
Procs(程序) r 等待執行的任務數 展示了正在執行和等待 cpu 資源的任務個數。當這 個值超過了 cpu 個數,就會出現 cpu 瓶頸。
B 等待 IO 的程序數量
Memory(記憶體) swpd 正在使用虛拟的記憶體大小,機關 k
free 空閑記憶體大小
buff 已用的 buff 大小,對塊裝置 的讀寫進行緩沖
cache 已用的 cache 大小,檔案系統 的 cache
inact非活躍記憶體大小,即被标明可回收的記憶體,差別于 free 和active 具體含義見:概念補充(當使用-a 選項時顯示)
active活躍的記憶體大小具體含義見:概念補充(當使用-a 選項時顯示)
Swap si 每秒從交換區寫入記憶體的大小(機關:kb/s)
so 每秒從記憶體寫到交換區的大小
IO bi 每秒讀取的塊數(讀磁盤) 現在的 Linux 版本塊的大小為 1024bytes
bo 每秒寫入的塊數(寫磁盤)
system in 每秒中斷數,包括時鐘中斷 這兩個值越大,會看到由核心消耗的 cpu 時間會越多
cs 每秒上下文切換數
CPU(以百分比表示) Us 使用者程序執行消耗 cpu 時間(user time) us 的值比較高時,說明使用者程序消耗的 cpu 時間多,但是如果長期超過 50%的使用,那麼我們就該 考慮優化程式算法或其他措施了
Sy 系統程序消耗 cpu 時間(system time) sys 的值過高時,說明系統核心消耗的 cpu 資源多,這個不是良性的表現,我們應該檢查原因。
Id 空閑時間(包括 IO 等待時間)
wa 等待 IO 時間 Wa 過高時,說明 io 等待比較嚴重,這可能是由于 磁盤大量随機通路造成的,也有可能是磁盤的帶寬 出現瓶頸。
4、I/O 調優相關檢視工具
檢視系統塊大小
[root@silence80 ~]# tune2fs -l /dev/sda1 | grep size
Filesystem features:has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Block size:1024 # 為 1 個位元組 。 一個扇區 512 位元組。
通過 iostat 指令檢視 IO 是否存大瓶頸?
iostat 可以顯示 CPU 和 I/O 系統的負載情況及每個磁盤分區的讀寫狀态資訊.
進而知道我們系統 IO 是否存在問題。
安裝 iostat:
[root@silence80 ~]# rpm -qf `which iostat `
sysstat-9.0.4-18.el6.x86_64
[root@silence80 ~]# rpm -ivh /mnt/Packages/sysstat-9.0.4-18.el6.x86_64.rpm
直接執行 iostat 可以顯示下面内容: [root@silence80 ~]# iostat
Linux 2.6.32-220.el6.x86_64 (silence80.cn)08/04/2015_x86_64_ (4 CPU)
avg-cpu: %user%nice %system %iowait %steal%idle
0.790.001.502.030.0095.68
Device: tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtn
scd0 0.77 4.40 0.0019040
sda 13.69956.8548.8141390621114
注釋:
avg-cpu 段:
%user: 在使用者級别運作所使用的 CPU 的百分比.
%nice: nice 操作所使用的 CPU 的百分比.
%sys: 在系統級别(kernel)運作所使用 CPU 的百分比.
%iowait: CPU 等待硬體 I/O 時,所占用 CPU 百分比.
%idle: CPU 空閑時間的百分比. Device 段:
tps: 每秒鐘發送到的 I/O 請求數.
Blk_read /s: 每秒讀取的 block 數,這裡的 block,指的是扇區數,一個扇區大小:512B Blk_wrtn/s: 每秒寫入的 block 數. 這裡的 block,指的是扇區數,一個扇區大小:512B Blk_read:讀入的 block 總數. 這裡的 block,指的是扇區數,一個扇區大小:512B Blk_wrtn: 寫入的 block 總數. 這裡的 block,指的是扇區數,一個扇區大小:512B
iostat 各個參數說明:
-c 僅顯示 CPU 統計資訊.不-d 選項互斥.
-d 僅顯示磁盤統計資訊.不-c 選項互斥.
例:[root@silence80 ~]# iostat -d
Device:tps Blk_read/sBlk_wrtn/sBlk_readBlk_wrtn
scd00.532.99 0.00 1904 0
sda 9.31649.44 33.29413906 21218
-k 以 K 為機關顯示每秒的磁盤請求數,預設機關塊.
-p device | ALL 不-x 選項互斥,用于顯示塊裝置及系統分區的統計資訊.
例:顯示每個分區讀寫速度
[root@silence80 ~]# iostat -p sda -dk
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 7.25 252.33 12.99 20695310657
sda1 0.63 2.43 0.01 1996 9
sda2 5.99 247.27 12.98 20280510648
sda3 0.43 1.77 0.00 1452 0
注:
每列含意:
kB_read/s 每秒從驅動器讀入的資料量,機關為 K. kB_wrtn/s每秒吐驅動器寫入的資料量,機關為 K. kB_read讀入的資料總量,機關為 K.
kB_wrtn寫入的資料總量,機關為 K.
-x輸出擴充資訊 顯示輸出擴充資訊
[root@silence80 ~]# iostat -x -d -k
Device: rrqm/s wrqm/sr/sw/s rkB/swkB/s avgrq-sz avgqu-sz await svctm %util
scd0 0.10 0.000.310.000.890.00 5.68 0.00 2.21 2.21 0.07
sda 5.68 1.744.800.79 193.6010.11 72.87 0.35 63.34 5.67 3.17
rrqm/s将讀入請求合并後,每秒發送到裝置的讀入請求數.
wrqm/s将寫入請求合并後,每秒發送到裝置的寫入請求數.
r/s每秒發送到裝置的讀入請求數.
w/s每秒發送到裝置的寫入請求數. rsec/s 每秒從裝置讀入的扇區數. wsec/s 每秒吐裝置寫入的扇區數.
rkB/s每秒從裝置讀入的資料量,機關為 K. wkB/s每秒吐裝置寫入的資料量,機關為 K.
avgrq-sz 發送到裝置的請求的平均大小,機關是扇區. avgqu-sz 發送到裝置的請求的平均隊列長度.
awaitI/O 請求平均執行時間.包括發送請求和執行的時間.機關是毫秒. svctm發送到裝置的 I/O 請求的平均執行時間.機關是毫秒.
%util在 I/O 請求發送到裝置期間,占用 CPU 時間的百分比.用于顯示裝置的帶寬使用率.
當這個值接近 100%時,表示裝置帶寬已經占滿. I/O 不夠使用。
%util 含意如圖:
檢視 iostat 其它用法:
# iostat -d -k 2
每隔 2 秒,顯示一次裝置統計資訊. 以 k 為機關
# iostat -d 2 6
每隔 2 秒,顯示一次裝置統計資訊.總共輸出 6 次.
# iostat -x hda hdb 2 6
每隔 2 秒顯示一次 hda,hdb 兩個裝置的擴充統計資訊,共輸出 6 次.
# iostat -p sda 2 6
每隔 2 秒顯示一次 sda 及上面所有分區的統計資訊,共輸出 6 次.
問題:檢視哪個程序使用磁盤讀寫最多? iotop 指令,檢視哪個程序使用磁盤讀寫最多 執行個體:檢視系統中使用 io 最多的程序
參數:
-o, –only 隻顯示在讀寫硬碟的程式
-d SEC, –delay=SEC 設定顯示時間間隔
退出,按 q 或 ctrl+C
[root@silence80 ~]# iotop -o -d 1#顯示正在使用磁盤的程序
例 1:
[root@silence80 ~]# iotop#不加參數,動态檢視所有程序使用磁盤的狀态
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USERDISK READ DISK WRITE SWAPINIO>COMMAND
2560 be/4 root0.00 B/s0.00 B/s 0.00 % 0.00 % gconfd-2
1 be/4 root0.00 B/s0.00 B/s0.00 %0.00 % init
2 be/4 root0.00 B/s0.00 B/s0.00 %0.00 % [kthreadd]
3 rt/4 root0.00 B/s0.00 B/s0.00 %0.00 % [migration/0]
4 be/4 root0.00 B/s0.00 B/s0.00 %0.00 % [ksoftirqd/0]
5 rt/4 root0.00 B/s0.00 B/s0.00 %0.00 % [migration/0]
例 2:
Total DISK READ: 1458.61 K/s | Total DISK WRITE: 0.00 B/s
2654 be/4 root1458.61 K/s0.00 B/s 0.00 % 60.62 % find /
1 be/4 root0.00 B/s0.00 B/s 0.00 % 0.00 % init
在另一個終端執行:
[root@silence80 ~]# find /
檢視結果:
檢視 Network 運作狀态相關工具
[root@silence80 ~]# netstat -antup
使用 sar 指令記錄系統一段時間的運作狀态
sysstat 工具包------可以把檢查到的資訊儲存下來!存在/var/log/sa 目錄下,檔案名為 sa 目前日期
sar 預設顯示每10分鐘統計一次狀态資訊 (從裝 sysstat 包開始)
sar 指令行的常用格式:
sar [options] [-A] [-o file] t [n]
在指令行中,n 和 t 兩個參數組合起來定義采樣間隔和次數,t 為采樣間隔,是必須有的參數,n 為采樣
次數,是可選的,預設值是 1,-o file 表示将指令結果以二進制格式存放在檔案中,file 在此處不是關鍵 字,是檔案名。options 為指令行選項,sar 指令的選項很多,
下面隻列出常用選項:
-A:所有報告的總和。
-n:網絡接口的情況。
-u:CPU 使用率
-v:程序、I 節點、檔案和鎖表狀态。
-d:硬碟使用報告。
-r:沒有使用的記憶體頁面和硬碟塊。
-g:序列槽 I/O 的情況。
-b:緩沖區使用情況。
-a:檔案讀寫情況。
-c:系統調用情況。
-R:程序的活動情況。
-y:終端裝置活動情況。
-w:系統交換活動。
-o 檔案名:列印到螢幕并将采樣結果以二進制形式存入目前目錄下的檔案中。
-f 檔案名:檢視之前儲存的二進制檔案。
-d 顯示磁盤
-d 1 100#每 1 秒統計一次磁盤資訊,統計 100 次。
-c 每秒建立程序的個數
-i 1 10 指定時間間隔
-P 檢視 cpu
-r 檢視記憶體
-w 每秒上下文切換次數
-o /cpu.sar 儲存并顯示
-f cpu.sar 讀取
例一:使用指令行 sar -u t n
例如,每 2 秒采樣一次,連續采樣 5 次,觀察 CPU 的使用情況,并将采樣結果以二進制形式存入目前目 錄下的檔案 cpu.sar 中,需鍵入如下指令:
[root@silence80 ~]# sar -u 2 5 -o cpu.sar #螢幕顯示以一下内容,同時内容也會寫到 cpu.sar 中
10:44:45 PMCPU%user%nice%system%iowait%steal%idle
10:44:47 PMall0.140.002.340.140.0097.39
10:44:49 PMall1.080.001.330.360.0097.23
10:44:51 PMall2.540.002.160.000.0095.29
10:44:53 PMall0.250.001.520.130.0098.10
10:44:55 PMall1.520.001.650.280.0096.56
Average:all1.110.001.790.180.0096.92
在顯示内容包括:
%usr:CPU 處在使用者模式下的時間百分比。
%sys:CPU 處在系統模式下的時間百分比。
%wio:CPU 等待輸入輸出完成時間的百分比。
%idle:CPU 空閑時間百分比。
在所有的顯示中,我們應主要注意%wio 和%idle,%wio 的值過高,表示硬碟存在 I/O 瓶頸,%idle 值 高,表示 CPU 較空閑,如果%idle 值高但系統響應慢時,有可能是 CPU 等待配置設定記憶體,此時應加大記憶體 容量。%idle 值如果持續低于 10,那麼系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU。
執行個體 2:檢視二進制檔案 cpu.sar 中的内容
[root@silence80 ~]# sar -u -f cpu.sar
Linux 2.6.32-220.el6.x86_64 (silence80.cn) 08/04/2015 _x86_64_ (4 CPU)
08:21:43 PMCPU%user%nice%system%iowait%steal%idle
08:21:45 PMall0.000.000.722.030.0097.25
08:21:47 PMall0.000.000.600.000.0099.40
08:21:49 PMall0.130.000.750.000.0099.12
08:21:51 PMall0.000.000.750.000.0099.25
08:21:53 PMall0.120.000.750.000.0099.13
注:sar 指令即可以實時采樣,又可以對以往的采樣結果進行查詢。
檢視 sar 的計劃任務:
[root@silence80 ~]#vim /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -S DISK 1 1 #關于磁盤
# 0 * * * * root /usr/lib64/sa/sa1 -S DISK 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A# -A:所有報告的總和。 生成的日志位置:
# ls /var/log/sa
讀取日志:
[root@silence80 ~]# ls /var/log/sa#隻要安裝 sar 後就會定期收集系統資訊
sa04 sa07 sa18
[root@silence80 ~]# sar -n DEV -f /var/log/sa/sa04 #檢視網絡資訊
擴充:
# sar -r -f /var/log/sa/sa27
# sar -b -f /var/log/sa/sa27
# sar -f /var/log/sa/sa27
動态檢視:
sar 1#預設顯示 CPU 狀态,1 秒顯示一次
sar 1 10
sar -P 0 1 10
sar 最大特點是可以監控所有狀态
sar -r 1 檢視記憶體
sar -n ALL 檢視所有
sar -b 1 10 sar -I irq#
sar -I ALL 1 0
sar -r -f /tmp/file-n-r-b-m sar -s 15:00:00 -e 15:30:00