出于對Linux操作系統(tǒng)的興趣,以及對底層知識的強(qiáng)烈欲望,因此整理了這篇文章。本文也可以作為檢驗(yàn)基礎(chǔ)知識的指標(biāo),另外文章涵蓋了一個(gè)系統(tǒng)的方方面面。如果沒有完善的計(jì)算機(jī)系統(tǒng)知識,網(wǎng)絡(luò)知識和操作系統(tǒng)知識,文檔中的工具,是不可能完全掌握的,另外對系統(tǒng)性能分析和優(yōu)化是一個(gè)長期的系列。
本文檔主要是結(jié)合Linux 大牛,搜集Linux系統(tǒng)性能優(yōu)化相關(guān)文章整理后的一篇綜合性文章,主要是結(jié)合博文對涉及到的原理和性能測試的工具展開說明。
背景知識:具備背景知識是分析性能問題時(shí)需要了解的。比如硬件 cache;再比如操作系統(tǒng)內(nèi)核。應(yīng)用程序的行為細(xì)節(jié)往往是和這些東西互相牽扯的,這些底層的東西會(huì)以意想不到的方式影響應(yīng)用程序的性能,比如某些程序無法充分利用 cache,從而導(dǎo)致性能下降等等。
性能分析工具
首先來看一張圖:
上圖是Brendan Gregg 的一次性能分析的分享,這里面的所有工具都可以通過 man
來獲得它的幫助文檔,下面簡單介紹介紹一下常規(guī)的用法:
1,vmstat--虛擬內(nèi)存統(tǒng)計(jì)
vmstat(VirtualMeomoryStatistics,虛擬內(nèi)存統(tǒng)計(jì))是 Linux 中監(jiān)控內(nèi)存的常用工具,可對操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU 等的整體情況進(jìn)行監(jiān)視。vmstat 的常規(guī)用法:vmstat interval times
即每隔 interval
秒采樣一次,共采樣 times
次,如果省略 times
,則一直采集數(shù)據(jù),直到用戶手動(dòng)停止為止。簡單舉個(gè)例子:
可以使用 ctrl+c
停止 vmstat
采集數(shù)據(jù)。
第一行顯示了系統(tǒng)自啟動(dòng)以來的平均值,第二行開始顯示現(xiàn)在正在發(fā)生的情況,接下來的行會(huì)顯示每5秒間隔發(fā)生了什么,每一列的含義在頭部,如下所示:
- procs:r 這一列顯示了多少進(jìn)程在等待cpu,b列顯示多少進(jìn)程正在不可中斷的休眠(等待IO)。
- memory:swapd 列顯示了多少塊被換出了磁盤(頁面交換),剩下的列顯示了多少塊是空閑的(未被使用),多少塊正在被用作緩沖區(qū),以及多少正在被用作操作系統(tǒng)的緩存。
- swap:顯示交換活動(dòng):每秒有多少塊正在被換入(從磁盤)和換出(到磁盤)。
- io:顯示了多少塊從塊設(shè)備讀取(bi)和寫出(bo),通常反映了硬盤I/O。
- system:顯示每秒中斷(in)和上下文切換(cs)的數(shù)量。
- cpu:顯示所有的cpu時(shí)間花費(fèi)在各類操作的百分比,包括執(zhí)行用戶代碼(非內(nèi)核),執(zhí)行系統(tǒng)代碼(內(nèi)核),空閑以及等待IO。
內(nèi)存不足的表現(xiàn):free memory 急劇減少,回收 buffer 和 cache 也無濟(jì)于事,大量使用交換分區(qū)(swpd),頁面交換(swap)頻繁,讀寫磁盤數(shù)量(io)增多,缺頁中斷(in)增多,上下文切換(cs)次數(shù)增多,等待IO的進(jìn)程數(shù)(b)增多,大量CPU時(shí)間用于等待IO(wa)
2,iostat--用于報(bào)告中央處理器統(tǒng)計(jì)信息
iostat 用于報(bào)告中央處理器(CPU)統(tǒng)計(jì)信息和整個(gè)系統(tǒng)、適配器、tty 設(shè)備、磁盤和 CD-ROM 的輸入/輸出統(tǒng)計(jì)信息,默認(rèn)顯示了與 vmstat 相同的 cpu 使用信息,使用以下命令顯示擴(kuò)展的設(shè)備統(tǒng)計(jì):
第一行顯示的是自系統(tǒng)啟動(dòng)以來的平均值,然后顯示增量的平均值,每個(gè)設(shè)備一行。
常見 linux 的磁盤 IO 指標(biāo)的縮寫習(xí)慣:rq 是 request,r 是 read,w 是 write,qu 是 queue,sz 是 size,a 是verage,tm 是 time,svc 是 service。
- rrqm/s 和 wrqm/s:每秒合并的讀和寫請求,“合并的”意味著操作系統(tǒng)從隊(duì)列中拿出多個(gè)邏輯請求合并為一個(gè)請求到實(shí)際磁盤。
- r/s和w/s:每秒發(fā)送到設(shè)備的讀和寫請求數(shù)。
- rsec/s和wsec/s:每秒讀和寫的扇區(qū)數(shù)。
- avgrq –sz:請求的扇區(qū)數(shù)。
- avgqu –sz:在設(shè)備隊(duì)列中等待的請求數(shù)。
- await:每個(gè)IO請求花費(fèi)的時(shí)間。
- svctm:實(shí)際請求(服務(wù))時(shí)間。
- %util:至少有一個(gè)活躍請求所占時(shí)間的百分比。
3, dstat--系統(tǒng)監(jiān)控工具
dstat 顯示了 cpu 使用情況,磁盤 io 情況,網(wǎng)絡(luò)發(fā)包情況和換頁情況,輸出是彩色的,可讀性較強(qiáng),相對于 vmstat 和iostat 的輸入更加詳細(xì)且較為直觀。在使用時(shí),直接輸入命令即可,當(dāng)然也可以使用特定參數(shù)。
4,iotop--LINUX進(jìn)程實(shí)時(shí)監(jiān)控工具
iotop命令是專門顯示硬盤IO的命令,界面風(fēng)格類似top命令,可以顯示IO負(fù)載具體是由哪個(gè)進(jìn)程產(chǎn)生的。是一個(gè)用來監(jiān)視磁盤I/O使用狀況的top類工具,具有與top相似的UI,其中包括PID、用戶、I/O、進(jìn)程等相關(guān)信息。
可以以非交互的方式使用:
iotop –bod interval
查看每個(gè)進(jìn)程的 I/O
,可以使用
pidstat,pidstat –d instat
5, pidstat--監(jiān)控系統(tǒng)資源情況
pidstat 主要用于監(jiān)控全部或指定進(jìn)程占用系統(tǒng)資源的情況,如 CPU,內(nèi)存、設(shè)備 IO、任務(wù)切換、線程等。
使用方法:
pidstat –d interval
pidstat 還可以用以統(tǒng)計(jì)CPU使用信息:
pidstat –u interval
統(tǒng)計(jì)內(nèi)存信息:
pidstat –r interval
6,top
- top 命令的匯總區(qū)域顯示了五個(gè)方面的系統(tǒng)性能信息:
- 負(fù)載:時(shí)間,登陸用戶數(shù),系統(tǒng)平均負(fù)載;
- 進(jìn)程:運(yùn)行,睡眠,停止,僵尸;
- cpu:用戶態(tài),核心態(tài),NICE,空閑,等待IO,中斷等;
- 內(nèi)存:總量,已用,空閑(系統(tǒng)角度),緩沖,緩存;
- 交換分區(qū):總量,已用,空閑
任務(wù)區(qū)域默認(rèn)顯示:進(jìn)程 ID,有效用戶,進(jìn)程優(yōu)先級,NICE 值,進(jìn)程使用的虛擬內(nèi)存,物理內(nèi)存和共享內(nèi)存,進(jìn)程狀態(tài),CPU 占用率,內(nèi)存占用率,累計(jì) CPU 時(shí)間,進(jìn)程命令行信息。
7,htop
htop 是 Linux 系統(tǒng)中的一個(gè)互動(dòng)的進(jìn)程查看器,一個(gè)文本模式的應(yīng)用程序(在控制臺或者X終端中),需要 ncurses。
Htop 可讓用戶交互式操作,支持顏色主題,可橫向或縱向滾動(dòng)瀏覽進(jìn)程列表,并支持鼠標(biāo)操作。
與 top 相比,htop 有以下優(yōu)點(diǎn):
- 可以橫向或者縱向滾動(dòng)瀏覽進(jìn)程列表,以便看到所有的進(jìn)程和完整的命令行。
- 在啟動(dòng)上,比top更快。
- 殺進(jìn)程時(shí)不需要輸入進(jìn)程號。
- htop支持鼠標(biāo)操作。
8,mpstat
mpstat 是 Multiprocessor Statistics的縮寫,是實(shí)時(shí)系統(tǒng)監(jiān)控工具。其報(bào)告CPU的一些統(tǒng)計(jì)信息,這些信息存放在 /proc/stat
文件中。在多 CPUs 系統(tǒng)里,其不但能查看所有 CPU 的平均狀況信息,而且能夠查看特定 CPU 的信息。常見用法:
mpstat –P ALL interval times
-
Linux
+關(guān)注
關(guān)注
87文章
11320瀏覽量
209845 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7519瀏覽量
88203 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6850瀏覽量
123431
發(fā)布評論請先 登錄
相關(guān)推薦
評論