操作系统性能优化分析及工具
- 操作系統(tǒng)性能工具之top
top - 20:00:19 up 10 min, 2 users, load average: 0.21, 2.93, 2.63
top 命令第一行結(jié)果和uptime的輸出結(jié)果一樣:
當(dāng)前時間,運行時間,登陸用戶數(shù),系統(tǒng)負載
系統(tǒng)負載有三個參數(shù):系統(tǒng)任務(wù)隊列的平均長度,分別統(tǒng)計最近1、5、15分鐘的系統(tǒng)平均負載
[root@docker_master ~]# uptime20:41:18 up 51 min, 2 users, load average: 0.20, 0.17, 0.38
Tasks: 232 total, 2 running, 230 sleeping, 0 stopped, 0 zombie
#總進程數(shù),正在運行的進程數(shù),正在休眠的進程數(shù),停止的進程數(shù),僵尸進程數(shù)
%Cpu0 : 0.0 us, 0.7 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.7 us, 2.1 sy, 0.0 ni, 97.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
#按數(shù)字1顯示出多核cpu信息
#us用戶空間占用CPU百分比,sy內(nèi)核空間占用CPU百分比
#ni用戶進程空間內(nèi)改變過優(yōu)先級的進程占用百分比
#id孔家CPU百分比,wa等待輸入輸出的CPU時間百分比
#hi CPU服務(wù)于硬件中斷所消耗的時間總額,hard_interrupt
#si CPU服務(wù)軟中斷所消耗的時間總額,soft_interrupt
KiB Mem : 3861512 total, 1603888 free, 1169252 used, 1088372 buff/cache
#物理內(nèi)存總量,空閑內(nèi)容總量,使用的屋里內(nèi)存總量,用作內(nèi)核緩存的內(nèi)存量
KiB Swap: 2097148 total, 2097148 free, 0 used. 2313272 avail Mem
#交換分區(qū)總量,空閑交換分區(qū)量,使用交換分區(qū)量,應(yīng)用程序可用內(nèi)存數(shù)
PID: 進程ID
USER:進程擁有者
PR:進程優(yōu)先權(quán)
NI:進程nice值,代表這個進程的優(yōu)先值
VIRT:申請的虛擬內(nèi)存總量
RES:是進程使用物理內(nèi)存的總和。
SHR:和其他進程共享的物理內(nèi)存空間。
S:State(進程狀態(tài)),有S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中斷的睡眠狀態(tài)),Z=zombie。
%CPU:CPU使用率
%MEM:物理內(nèi)存的使用
TIME:進程占用的總共CPU時間
COMMAND:進程命令
?
topas是AIX的命令
?
vmstat命令
[root@docker_master ~]# vmstat 5 10
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 0 1390236 2116 1293856 0 0 92 98 792 2813 1 3 94 2 0
1 0 0 1389988 2116 1293884 0 0 0 830 1523 5168 1 2 97 0 0
0 0 0 1389988 2116 1293888 0 0 0 47 1470 5944 1 2 98 0 0
0 0 0 1389988 2116 1293888 0 0 0 114 1402 5623 0 2 98 0 0
0 0 0 1389816 2116 1293892 0 0 0 57 1477 5102 0 2 98 0 0
0 0 0 1389768 2116 1293896 0 0 0 73 1479 4870 1 2 97 0 0
0 0 0 1389608 2116 1293904 0 0 0 222 1497 4827 1 2 97 0 0
0 0 0 1389940 2116 1293940 0 0 0 50 1439 5251 1 2 97 0 0
0 0 0 1389212 2116 1293948 0 0 0 58 1507 5491 1 2 97 0 0
0 0 0 1389212 2116 1293956 0 0 0 111 1450 5779 1 2 98 0 0
#vmstat命令的兩個參數(shù),第一個是采樣的時間間隔,第二個參數(shù)是采樣的次數(shù)
| 類別 | 項目 | 含義 |
| Procs(進程) | ?r | ?等待執(zhí)行的任務(wù)數(shù) |
| b | 等待IO的進程數(shù) | |
| ?Memory | ?swpd | ?正在使用虛擬內(nèi)存的大小 |
| free | 空閑內(nèi)存大小 | |
| buff | 已用的buff大小,單位k對塊設(shè)備的讀寫進行緩沖 | |
| cache | 已用的cache大小,文件系統(tǒng)的cache | |
| ?swap | si | ?每秒從交換區(qū)寫入內(nèi)存的大小 |
| ? | so | 每秒從內(nèi)存寫到交換分區(qū)的大小 |
| io | bi | 每秒讀取的塊數(shù)(讀磁盤);(塊設(shè)備每秒接收的塊數(shù)量,單位是block,這里的塊設(shè)備是之系統(tǒng)上所有的磁盤和其他塊設(shè)備,默認塊大小是1024byte) |
| ? | bo | 每秒寫入的塊數(shù)(塊設(shè)備每秒發(fā)送的塊數(shù)量,單位是block) |
| system | in | 每秒中斷數(shù),包括時鐘中斷(這兩個值越大,會看到由內(nèi)核消耗的cpu的時間sy會越多) |
| ? | cs | 每秒上下文切換數(shù) |
| CPU(數(shù)值以百分比表示) | us | 用戶進程執(zhí)行消耗CPU時間(user time);us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長時間超過50%的使用,那么我們就該考慮優(yōu)化程序算法或其他措施了 |
| ? | sy | 系統(tǒng)進程消耗CPU時間(system time);sys的值過高時,說明系統(tǒng)訥河消耗的CPU資源越多,這是不良的表現(xiàn),說明我們應(yīng)該檢查原因了。這里us+sy的參考值是80%,如果us+sy大于80%說明可能存在CPU不足。 |
| ? | id | 空閑時間(包括IO等待時間);一般來說us+sys+id=100 |
| ? | wa | 等待IO時間,wa過高是,說明io等待比較嚴重,這可能是由于磁盤大量隨機訪問造成的,也有可能是磁盤的帶寬出現(xiàn)瓶頸。 |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
參考文章:https://blog.csdn.net/m0_38110132/article/details/84190319
?
?
iostat
[root@docker_master ~]# iostat Linux 3.10.0-957.5.1.el7.x86_64 (docker_master) 2019年03月15日 _x86_64_ (2 CPU)avg-cpu: %user %nice %system %iowait %steal %idle1.07 0.01 2.72 1.29 0.00 94.91Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn scd0 0.00 0.11 0.00 1028 0 sda 15.77 116.71 172.59 1069251 1581267 dm-0 15.98 112.92 170.90 1034595 1565768 dm-1 0.01 0.32 0.00 2972 0
單獨執(zhí)行iostat,顯示的結(jié)果為從胸痛開機到當(dāng)前執(zhí)行命令時刻的統(tǒng)計信息:
Linux 3.10.0-957.5.1.el7.x86_64 (docker_master) 2019年03月15日 _x86_64_ (2 CPU)
系統(tǒng)版本,主機名,當(dāng)前時間,CPU架構(gòu),CPU核數(shù)
avg-cpu: %user %nice %system %iowait %steal %idle
總體CPU使用情況統(tǒng)計信息,對于多核CPU,這里為所有CPU的平均值
%user:CPU在用戶態(tài)執(zhí)行進程的時間百分比
%nice:CPU在用戶狀態(tài)下,用于nice操作,所占用CPU總時間的百分比
%system:CPU處在內(nèi)核狀態(tài)執(zhí)行進程的時間百分比
%iowait:CPU用于等待IO操作占用CPU總時間的百分比
%steal:管理程序hypervisor為另一個虛擬進程提供服務(wù)而等待虛擬CPU的百分比
%idle:CPU空閑時間百分比
注意項:%iowait的值過高,表示硬盤存在I/O瓶頸
%idle的值過高但胸痛相應(yīng)慢時,有可能CPU等待分配內(nèi)存,此時應(yīng)加大內(nèi)從容量
%idle的值持續(xù)低于1,則系統(tǒng)的CPU處理能力相對較低,表明系統(tǒng)中最需要解決的資源是CPU。
Device:各磁盤設(shè)備IO統(tǒng)計信息。
tps:每秒向磁盤設(shè)備請求數(shù)據(jù)的次數(shù),包括讀、寫請求,為rtps與wtps的總和。出于效率考慮,
每一次IO下發(fā)后并不是立即處理請求,二三十將請求合并(merge),這里tps指請求合并和的請求計數(shù)。
kB_read/s、kB_wrtn/s、kB_read、kB_wrtn的值均以kB為單位,相比山區(qū)數(shù)為單位,這里的值為原值的一半(1kB=512bytes*2)
?
free命令:
| Mem | total:表示物理內(nèi)存總量。 |
| used | 表示總計分配給緩存(包含buffers 與cache )使用的數(shù)量,但其中可能部分緩存并未實際使用。 |
| free | 未被分配的內(nèi)存 |
| shared | 共享內(nèi)存,一般系統(tǒng)不會用到,這里也不討論。 |
| buffers | 系統(tǒng)分配但未被使用的buffers 數(shù)量。 |
| cached | 系統(tǒng)分配但未被使用的cache 數(shù)量。buffer 與cache 的區(qū)別見后面。?total = used + free?第2行 -/+ buffers/cached:?used:也就是第一行中的used - buffers-cached 也是實際使用的內(nèi)存總量。? |
| free | 未被使用的buffers 與cache 和未被分配的內(nèi)存之和,這就是系統(tǒng)當(dāng)前實際可用內(nèi)存。?free 2= buffers1 + cached1 + free1 //free2為第二行、buffers1等為第一行 |
| buffer 與cache 的區(qū)別 | A buffer is something that has yet to be “written” to disk.?A cache is something that has been “read” from the disk and stored for later use? |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
參考:https://www.cnblogs.com/pengdonglin137/p/3315124.html
?mpstat是Multiprocessor Statistics的縮寫,能實時監(jiān)控系統(tǒng)。其報告關(guān)于CPU的一些統(tǒng)計信息,這些信息存放在/proc/stat文件中。在多CPUs系統(tǒng)里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。mpstat最大的特點是:可以查看多核心CPU中每個計算核心的統(tǒng)計數(shù)據(jù);而類似工具vmstat只能查看系統(tǒng)整體cpu情況。
[root@docker_master ~]# mpstat 1 2 Linux 3.10.0-957.5.1.el7.x86_64 (docker_master) 2019年03月16日 _x86_64_ (2 CPU)09時43分40秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09時43分41秒 all 0.52 0.00 3.09 0.00 0.00 0.00 0.00 0.00 0.00 96.39 09時43分42秒 all 0.52 0.00 1.55 0.00 0.00 0.00 0.00 0.00 0.00 97.94 平均時間: all 0.52 0.00 2.32 0.00 0.00 0.00 0.00 0.00 0.00 97.16
網(wǎng)絡(luò)分析工具iptraf-ng:
首先系統(tǒng)不帶此命令需安裝此命令
yum -y intall iptraf-ng
安裝完成后輸入命令iptraf-ng彈出對話框如下:
Detailed interface statistics----->ens33
操作系統(tǒng)性能收集與分析之nmon:
nmon是一種在AIX與linux操作系統(tǒng)廣泛使用的監(jiān)控與分析工具,相對于其它一些系統(tǒng)資源監(jiān)控工具來說,nmon所記錄的信息是比較全面的,它能在系統(tǒng)運行過程中實時地捕捉系統(tǒng)資源使用情況,并且能輸出結(jié)果到文件中,然后再通過nmon_analyzer工具產(chǎn)生數(shù)據(jù)文件與圖形化結(jié)果。
?
轉(zhuǎn)載于:https://www.cnblogs.com/ZonHorizon/p/10540433.html
總結(jié)
以上是生活随笔為你收集整理的操作系统性能优化分析及工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue $createElement
- 下一篇: Linux系统开发之路-中