Linux 性能監(jiān)控和優(yōu)化介紹
linux 系統(tǒng)管理員應(yīng)該精通 linux 性能監(jiān)控和優(yōu)化。本文對(duì)我們應(yīng)該如何在 Linux 中進(jìn)行性能監(jiān)控和調(diào)整,以及需要監(jiān)控的各種子系統(tǒng)(和性能指標(biāo))進(jìn)行了高級(jí)概述。
要識(shí)別系統(tǒng)瓶頸并提出解決方案,您應(yīng)該了解 Linux 的各種組件是如何工作的。例如,內(nèi)核如何使用 nice 值優(yōu)先于一個(gè) Linux 進(jìn)程,如何處理 I/O 中斷,內(nèi)存管理如何工作,Linux 文件系統(tǒng)如何工作,網(wǎng)絡(luò)層如何在 Linux 中實(shí)現(xiàn)等等。 ,
請(qǐng)注意,了解各種組件(或子系統(tǒng))的工作原理與了解執(zhí)行什么命令以獲得特定輸出不同。例如,您可能知道“uptime”或“top”命令給出了“l(fā)oad average”。但是,如果您不知道它的含義以及 CPU(或進(jìn)程)子系統(tǒng)如何工作,您可能無(wú)法正確理解它。了解子系統(tǒng)是一項(xiàng)持續(xù)的任務(wù),您將一直不斷地學(xué)習(xí)。
在非常高的層次上,以下是需要監(jiān)控的四個(gè)子系統(tǒng)。
CPU
Memory
I/O
Network
1. CPU
您應(yīng)該了解 CPU 的四個(gè)關(guān)鍵性能指標(biāo)——上下文切換、運(yùn)行隊(duì)列、cpu 利用率和平均負(fù)載。
當(dāng) CPU 從一個(gè)進(jìn)程(或線程)切換到另一個(gè)時(shí),稱為上下文切換。
當(dāng)進(jìn)程切換發(fā)生時(shí),內(nèi)核將 CPU(進(jìn)程或線程)的當(dāng)前狀態(tài)存儲(chǔ)在內(nèi)存中。
內(nèi)核還從內(nèi)存中檢索先前存儲(chǔ)的(進(jìn)程或線程的)狀態(tài)并將其放入 CPU 中。
上下文切換對(duì)于 CPU 的多任務(wù)處理非常重要。
但是,更高級(jí)別的上下文切換可能會(huì)導(dǎo)致性能問題。
運(yùn)行隊(duì)列表示當(dāng)前 CPU 隊(duì)列中的活動(dòng)進(jìn)程總數(shù)。
當(dāng) CPU 準(zhǔn)備好執(zhí)行一個(gè)進(jìn)程時(shí),它會(huì)根據(jù)進(jìn)程的優(yōu)先級(jí)從運(yùn)行隊(duì)列中選擇它。
請(qǐng)注意,處于睡眠狀態(tài)或 i/o 等待狀態(tài)的進(jìn)程不在運(yùn)行隊(duì)列中。
因此,運(yùn)行隊(duì)列中更多的進(jìn)程可能會(huì)導(dǎo)致性能問題。
這表明當(dāng)前使用了多少 CPU。
這相當(dāng)簡(jiǎn)單,您可以從top 命令查看 CPU 利用率。
100% CPU 利用率意味著系統(tǒng)已滿載。
因此,較高的 CPU 利用率百分比將導(dǎo)致性能問題。
這表示特定時(shí)間段內(nèi)的平均 CPU 負(fù)載。
在 Linux 上,顯示最后 1 分鐘、5 分鐘和 15 分鐘的平均負(fù)載。這有助于查看系統(tǒng)上的整體負(fù)載是上升還是下降。
例如,平均負(fù)載為“0.75 1.70 2.10”表示系統(tǒng)負(fù)載正在下降。0.75 是最后 1 分鐘的平均負(fù)載。1.70 是最近 5 分鐘的平均負(fù)載。2.10 是過(guò)去 15 分鐘的平均負(fù)載。
請(qǐng)注意,此負(fù)載平均值是通過(guò)結(jié)合隊(duì)列中的進(jìn)程總數(shù)和處于不可中斷任務(wù)狀態(tài)的進(jìn)程總數(shù)來(lái)計(jì)算的。
2. Network
在分析任何網(wǎng)絡(luò)問題時(shí),對(duì) TCP/IP 概念的良好理解是有幫助的。我們將在以后的文章中對(duì)此進(jìn)行更多討論。
對(duì)于網(wǎng)絡(luò)接口,您應(yīng)該監(jiān)控通過(guò)接口接收/發(fā)送的數(shù)據(jù)包(和字節(jié))總數(shù)、丟棄的數(shù)據(jù)包數(shù)等,
3. I/O
I/O 等待是 CPU 等待 I/O 的時(shí)間。如果您在系統(tǒng)上看到持續(xù)的高 i/o 等待,則表明磁盤子系統(tǒng)存在問題。
您還應(yīng)該監(jiān)控讀取/秒和寫入/秒。這是以塊為單位測(cè)量的。即每秒讀/寫的塊數(shù)。這些也被稱為 bi 和 bo(阻擋和阻擋)。
tps 表示每秒總事務(wù)數(shù),它是 rtps(每秒讀取事務(wù)數(shù))和 wtps(每秒寫入事務(wù)數(shù))之和。
4. Memory
如您所知,RAM 是您的物理內(nèi)存。如果您的系統(tǒng)上安裝了 4GB RAM,那么您就有 4GB 物理內(nèi)存。
虛擬內(nèi)存 = 磁盤上可用的交換空間 + 物理內(nèi)存。虛擬內(nèi)存包含用戶空間和內(nèi)核空間。
使用 32 位或 64 位系統(tǒng)在確定進(jìn)程可以使用多少內(nèi)存方面有很大的不同。
在 32 位系統(tǒng)上,一個(gè)進(jìn)程最多只能訪問 4GB 的虛擬內(nèi)存。在 64 位系統(tǒng)上沒有這樣的限制。
未使用的 RAM 將被內(nèi)核用作文件系統(tǒng)緩存。
Linux 系統(tǒng)會(huì)在需要更多內(nèi)存時(shí)進(jìn)行交換。即當(dāng)它需要比物理內(nèi)存更多的內(nèi)存時(shí)。當(dāng)它交換時(shí),它將物理內(nèi)存中使用最少的內(nèi)存頁(yè)面寫入磁盤上的交換空間。
大量交換可能會(huì)導(dǎo)致性能問題,因?yàn)榇疟P比物理內(nèi)存慢得多,并且將內(nèi)存頁(yè)面從 RAM 交換到磁盤需要時(shí)間。
以上 4 個(gè)子系統(tǒng)都是相互關(guān)聯(lián)的。僅僅因?yàn)槟吹捷^高的讀取/秒、寫入/秒或 I/O 等待并不意味著 I/O 子系統(tǒng)存在問題。它還取決于應(yīng)用程序在做什么。在大多數(shù)情況下,性能問題可能是由 Linux 系統(tǒng)上運(yùn)行的應(yīng)用程序引起的。
記住 80/20 法則——80% 的性能改進(jìn)來(lái)自于調(diào)整應(yīng)用程序,其余 20% 來(lái)自于調(diào)整基礎(chǔ)架構(gòu)組件。
有多種工具可用于監(jiān)控 Linux 系統(tǒng)性能。例如:top、free、ps、iostat、vmstat、mpstat、sar、tcpump、netstat、iozone 等,我們將在本系列的后續(xù)文章中詳細(xì)討論這些工具以及如何使用它們。
以下是識(shí)別和解決性能問題的 4 步方法。
第 1 步——理解(并重現(xiàn))問題:當(dāng)你清楚地理解問題是什么時(shí),問題就解決了一半。在嘗試解決性能問題之前,首先要明確定義問題。你花在理解和定義問題上的時(shí)間越多,你就會(huì)有足夠的細(xì)節(jié)來(lái)在正確的地方尋找答案。如果可能,請(qǐng)嘗試重現(xiàn)問題,或至少模擬您認(rèn)為與問題非常相似的情況。這將在稍后幫助您驗(yàn)證您提出的解決性能問題的解決方案。
第 2 步 - 監(jiān)控和收集數(shù)據(jù):明確定義問題后,監(jiān)控系統(tǒng)并嘗試盡可能多地收集各個(gè)子系統(tǒng)的數(shù)據(jù)。根據(jù)這些數(shù)據(jù),列出潛在問題。
第 3 步 – 消除和縮小問題范圍:列出潛在問題后,深入研究每個(gè)問題并消除任何非問題。進(jìn)一步縮小范圍以查看它是應(yīng)用程序問題還是基礎(chǔ)架構(gòu)問題。進(jìn)一步向下鉆取并將其縮小到特定組件。例如,如果是基礎(chǔ)架構(gòu)問題,請(qǐng)縮小范圍并確定導(dǎo)致問題的子系統(tǒng)。如果是 I/O 子系統(tǒng)問題,請(qǐng)將其縮小到特定分區(qū)、RAID 組、LUN 或磁盤。基本上,繼續(xù)深入研究,直到找到問題的根本原因。
第 4 步 – 一次一項(xiàng)更改:一旦您縮小到一小部分潛在問題,不要嘗試一次進(jìn)行多項(xiàng)更改。如果您進(jìn)行多項(xiàng)更改,您將不知道哪一項(xiàng)解決了原始問題。一次進(jìn)行多項(xiàng)更改也可能會(huì)導(dǎo)致新的問題,而您將追逐這些新問題,而不是修復(fù)原始問題。所以,一次做一個(gè)改變,看看它是否能解決原來(lái)的問題。
Linux 任務(wù)調(diào)度
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。