linux效能分析 -- top__linux

來源:互聯網
上載者:User


top

top命令是最流行的效能工具之一。大多數系統管理員運行top查看Linux和UNIX系統的運行情況。top工具 + 生產力提供一種監視進程和Linux整體效能的理想方法。將Linux進程稱作任務更準確,但是在本章中我們還是將它們稱作進程,因為這個工具也這樣稱呼它們。1普通使用者和root使用者都可以運行top。圖3-1顯示一個空閑系統的典型top輸出。

圖3-1  top輸出

top顯示有兩個部分。大約前三分之一顯示關於Linux的整體資訊,其餘行為各個進程資訊。如果擴充視窗則顯示更多進程而填充整個螢幕。

更全面的Linux資訊可以通過使用top之外的幾個命令來得到。不過,通過一個命令在一個螢幕上顯示所有資訊比較理想。第一行顯示最近1分鐘、5分鐘和15分鐘的負載平均值。負載平均值表示在CPU上運行或者等待運行多少進程。uptime命令也可以用來顯示負載平均值。接下來是進程資訊,之後是CPU、記憶體和交換區。記憶體和交換區資訊與free命令輸出類似。在我們確定記憶體和CPU使用之後的下一個問題是哪些進程正在使用它。

大部分進程資訊也可以通過ps命令得到,但是top提供一種更易於閱讀的格式。最有用的是用於提供協助的h,它列出top的其他互動式命令。 3.1.1  添加和移除欄位

欄位可以從顯示中添加或移除。進程輸出可以按照CPU、記憶體或者其他指標排序。這是一個查看什麼進程搶奪記憶體的理想方法。各個Linux發布版本的top文法和互動式選項不同,協助命令可以快速列出什麼命令可用。有許多互動式選項可用,使用者應該花費一些時間來實驗它們。

圖3-2顯示Red Hat Enterprise Linux ES release 3的協助螢幕。

圖3-2  top的協助螢幕

f命令用來從top輸出中添加或者移除欄位。圖3-3是一個Red Hat Enterprise Linux ES release 3的協助螢幕,顯示什麼欄位可以添加。

圖3-3  top添加/移除欄位的螢幕

圖3-4顯示一個SUSE Linux 9.0 top的協助螢幕,可見它們提供的命令差別非常大。

圖3-4  SUSE top的協助螢幕 3.1.2  解釋輸出

讓我們研究top資訊的意義,以top的如下輸出為例:

top輸出的第一行顯示負載平均值資訊:

這個輸出與uptime的輸出類似。從中可看到Linux已經已耗用時間、目前時間和使用者數量,以及1分鐘、5分鐘和15分鐘負載平均值。接下來顯示進程概要:

我們看到總共有73個進程,其中72個進程正在休眠,一個進程正在運行,沒有僵化進程或者被停止的進程。當一個進程退出並且它的父進程沒有通過wait(2)或者waitpid(2)函數等待它時,它就會成為僵化進程。這通常是由於父進程在它的子進程之前退出造成的。不同於進程表中的項,僵化進程不使用資源。停止的進程是已經向它發送STOP訊號的進程。更多資訊,請參見signal(7)手冊頁。

接下來是CPU資訊:

CPU行描述CPU如何使用它們的CPU周期。top命令報告CPU在使用者或者核心模式、運行良好進程以及處在空閑狀態時所花費時間的百分比。iowait列顯示沒有進程在CPU上運行時,處理器等待I/O完成的時間的百分比。irq和softirq列表示處理硬體和軟體中斷所花費的時間。早於2.6版本的Linux核心不報告irq、softirq和iowait。

接下來是記憶體資訊:

前三個指標提供記憶體使用量的概要,列出了總的可用記憶體、已使用記憶體和自由記憶體,它們都是確定對於Linux記憶體是否足夠所需資訊。

接下來五個指標標識已使用的記憶體如何分配。shrd欄位顯示共用的記憶體使用量,buff是緩衝使用的記憶體。分配給核心或者使用者進程的記憶體可以處在三種不同狀態:活動(active)、不活動髒(inactive dirty)和不活動乾淨(inactive clean)。活動在top中用aotv表示,表示該記憶體最近被使用。不活動髒在top中用in_d表示,表示該記憶體最近沒有使用,可以回收。要回收記憶體,必須將它的內容寫到磁碟,這個進程命名為“清洗”,也可稱作記憶體的第四種臨時狀態。一旦被清洗,不活動髒記憶體成為不活動乾淨記憶體,在top中用in_c表示。由Norm Murray和Neil Horman合著的Understanding Virtual Memory in Red Hat Enterprise Linux 3是一本優秀的參考書,網址為http:people.redhat.com/nhorman/papers/ rhel3_vm.pdf。

接下來是交換區資訊:

av欄位是可用的交換區總量,之後是已用數量和自由數量,最後是核心用於緩衝的記憶體數量。

top顯示的其餘部分是進程資訊:

top顯示儘可能多的能適合螢幕的進程。top(1)手冊頁中提供了欄位說明的描述。表3-1提供了這些欄位的概要。

表3-1                                                      top進程欄位

字    段

說    明

PID

進程id編號

USER

進程所有者的使用者名稱

PRI

進程的優先順序

SIZE

進程大小,包括它的代碼、棧和資料區域,以KB為單位

RSS

進程使用的記憶體總量,以KB為單位

SHARE

進程使用的共用記憶體數量

STAT

進程的狀態,通常R表示運行,S表示休眠

%CPU

自從最近的螢幕更新以來,這個進程使用的CPU百分比

%MEM

這個進程使用的記憶體百分比

TIME

自從進程啟動以來,這個進程使用的CPU時間量

CPU

最近執行進程的CPU

COMMAND

正在執行的命令

3.1.3  儲存自訂

一個非常好的top功能是儲存當前配置。可以使用互動式命令s任意更改顯示,然後按w儲存該視圖。

top在使用者的主目錄中寫入一個.toprc檔案,用來儲存配置,以便下一次這個使用者啟動top時使用相同的顯示選項。

top也尋找預設設定檔/etc/toprc。這是一個全域設定檔,當任何使用者運行工具 + 生產力時,top將讀取該檔案。這個檔案可以使top以安全模式運行,也可以設定重新整理延遲。安全模式阻止非root使用者登出或者更改進程的正常值,也阻止非root使用者更改top的重新整理值。Red Hat Enterprise Linux ES release 3的一個/etc/toprc樣本檔案如下所示:

s表示安全模式,3定義三秒鐘重新整理間隔。其他發布版本可能有不同的/etc/toprc格式。登出進程是一個非常實用的功能。如果使用者有一個失控的進程,通過top命令可以輕易找到並登出它,具體步驟為:運行top,通過u命令顯示使用者的所有進程,然後使用k登出它。top不只是一個優秀的效能監控工具,它也可以用來通過登出那些產生問題的進程從而改進效能。 3.1.4  批處理模式

top也可以以批處理模式運行。嘗試運行以下命令:

-n 1告訴top只顯示一次迭代,-b選項表示以適合寫入檔案的文本形式輸出或者定向到另一個程式(例如less)。類似以下兩行指令碼的命令可以順利完成cron工作:

可以將它添加到crontab,並每隔15分鐘收集一次輸出。

通過批處理可以輕鬆完成所有任務,無需使用者的幹涉。所有進程都被列出,輸出並不是每5秒鐘重新整理一次。如果使用者的主目錄中存在一個.toprc設定檔,那麼它用來格式化顯示。以下是在一個多CPU Linux伺服器上運行top批處理模式的輸出。注意,其中沒有顯示top輸出的所有258個進程。

現在讀者可能明白了為什麼top會如此流行。top的互動式本質和容易自訂輸出的能力使它成為診斷問題的優秀工具。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.