自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Top:高效的監(jiān)控系統(tǒng)資源使用率

系統(tǒng) Linux
對于桌面用戶來說,資源監(jiān)控是件比較重要的事情。在這么多監(jiān)控軟件中,大多數(shù)人使用top工具(procps包的一個組件)。Top給我們提供了用系統(tǒng)快照來監(jiān)控系統(tǒng)資源使用率。

  對于桌面用戶來說,資源監(jiān)控是件比較重要的事情。我們可以以此明白系統(tǒng)的性能瓶頸以計劃如何優(yōu)化系統(tǒng),定位內(nèi)存溢出等問題。但問題是,我們該用哪個軟件或什么軟件才能滿足我們的目的呢?在這么多監(jiān)控軟件中,大多數(shù)人使用top工具(procps包的一個組件)。Top給我們提供了用系統(tǒng)快照來監(jiān)控系統(tǒng)資源使用率。在這篇文章中,所有的內(nèi)容都是基于linux內(nèi)核2.6.×的procps3.2.5組件包來講的。

  現(xiàn)在,假設(shè)你已經(jīng)在你的linux環(huán)境中安裝并運(yùn)行了procps組件包。你不需要有任何top命令的使用經(jīng)驗,但是你如果已經(jīng)簡單用過一下了,就更好了。

  下面是一些挑戰(zhàn):

  A.交互還是批處理模式?

  默認(rèn)情況下,Top 被調(diào)用時使用交互模式。在此模式下,Top 無限期運(yùn)行,并可以通過按鍵重新定義 Top 的運(yùn)行方式。但是,有時你需要對 Top 的輸出進(jìn)行后續(xù)處理,但這在此模式下難以實現(xiàn)。解決方法?使用批處理模式。

  $ top -b

  你將獲得類似下面的輸出:

   top - 15:22:45 up  4:19,  5 users,  load average: 0.00, 0.03, 0.00

  Tasks:  60 total,   1 running,  59 sleeping,   0 stopped,   0 zombie

  Cpu(s):  3.8% us,  2.9% sy,  0.0% ni, 89.6% id,  3.3% wa,  0.4% hi,  0.0% si

  Mem:    515896k total,   495572k used,    20324k free,    13936k buffers

  Swap:   909676k total,        4k used,   909672k free,   377608k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

  1 root      16   0  1544  476  404 S  0.0  0.1   0:01.35 init

  2 root      34  19     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/0

  3 root      10  -5     0    0    0 S  0.0  0.0   0:00.11 events/0

  哈,等等,它是不斷重復(fù)運(yùn)行的,同交互模式一樣。不用擔(dān)心,你可以使用 -n 限制重復(fù)數(shù)量。所以,如果你希望獲得一次性結(jié)果,鍵入:

  $ top -b -n 1

  這一模式的真正優(yōu)勢在于你可以很容易的與 at 或 cron 命令結(jié)合。它們的結(jié)合,使得 Top 可以在特定時間對資源使用狀態(tài)進(jìn)行快照。例如,使用 at ,我們可以設(shè)定 top 在一分鐘之后運(yùn)行。

  $ cat ./test.at
  TERM=linux top -b -n 1 >/tmp/top-report.txt
  $ at -f ./test.at now+1minutes

  細(xì)心的讀者可能會問“在創(chuàng)建新任務(wù)時,為什么我需要在調(diào)用 Top 之前設(shè)置環(huán)境變量 TERM?”。答案是,Top 運(yùn)行時需要此變量,但“at”在定時調(diào)用時并不會保留它。同上面那樣簡單的設(shè)置可以確保 Top 正常運(yùn)行。#p#

  B.如何監(jiān)控制定進(jìn)程?

  有時,我們只對幾個進(jìn)程感興趣,可能只是全部進(jìn)程中的4個或5個。例如,如果你想要監(jiān)測進(jìn)程標(biāo)識(PID)為4360和4358的進(jìn)程,你需要鍵入:

  $ top -p 4360,4358
  或
  $ top -p 4360 -p 4358

  看起來很簡單,只需要使用 -p 列出所有需要的 PID,并使用逗號間隔或簡單的多次使用 -p即可。

  另一種可能是監(jiān)測擁有特定用戶標(biāo)識(UID)的進(jìn)程。應(yīng)對此需求,你可以使用 -u 或 -U 選項。假設(shè)用戶“johndoe”的 UID 為500,鍵入:

  $ top -u johndoe
  OR
  $ top -u 500

  或

  $ top -U johndoe

  結(jié)論是,你既可以純使用用戶名,也可使用數(shù)字 UID。“-u,-U?這兩者不同?”是的。同多數(shù)其它 GNU 工具一樣,選項是大小寫敏感的。-U 意味著 Top 將會搜索有效的、真實的、被保存的以及文件系統(tǒng)的 UID 進(jìn)行匹配,而 -u 僅匹配有效的用戶id。要知道,每一個 *nix 進(jìn)程在運(yùn)行時都是用有效用戶標(biāo)識(effective UID),而其中有些并不等同真實用戶標(biāo)識。多數(shù)情況是,對類似文件系統(tǒng)權(quán)限或操作系統(tǒng)功能這項的有效用戶標(biāo)識感興趣的人將會檢查它,而不是 UID。

  不同于 -p 僅用于命令行選項,-U 和 -u 都可以在交互模式中使用。同你猜測的一樣,鍵入‘U’或‘u’可以依據(jù)用戶名過濾進(jìn)程。同樣的規(guī)則依然適用,‘u’為有效用戶標(biāo)識,‘U’為 真實/有效/保存/文件系統(tǒng)用戶名。你將被要求鍵入用戶名或數(shù)字 UID。#p#

  C.快熟還是緩慢更新?

  在回答這個問題之前,讓我們先簡單介紹一下,Top 是如何運(yùn)行的。這里,Strace 能夠幫助你:

  $ strace -o /tmp/trace.txt top -b -n 1

  使用你偏愛的文本編輯器打開 /tmp/trace.txt。你怎么想?一次調(diào)用有太多的活要做了,反正我是這么想的。Top 在每次遍歷中必做的工作之一就是打開很多文件,并解析其內(nèi)容,可以看看次數(shù):

  $ grep open( /tmp/hasil.txt | wc -l

  舉例而言,我的 Linux 中,這個數(shù)量是304.仔細(xì)觀察就會發(fā)現(xiàn),Top 遍歷 /proc 文件夾,以收集進(jìn)程信息。/proc 本身是一個虛擬文件系統(tǒng),意味著它并非存在于真實硬盤之中,而是由 Linux 內(nèi)核憑空創(chuàng)建,保存在內(nèi)存中的。在文件夾中,如/proc/2097(2097為 PID),Linux 內(nèi)核將與之關(guān)聯(lián)的信息打印到此文件中,而這里就是 Top 的消息來源。

  同時試一下:

  $ time top -b -n 1

  這樣你就能了解到 Top 單輪工作有多快了。在我的系統(tǒng)中,大約為0.5-0.6秒???ldquo;real”字段,不是“user”或“system”字段,因為“real”字段反應(yīng)了 Top 工作需要的總時間。

  所以,有了這個認(rèn)知之后,使用適度的更新間隔是明智的?;谖募到y(tǒng)訪問內(nèi)存也是需要時間的。經(jīng)驗法則是,對于多數(shù)用戶來說,1到3秒的間隔就足夠了。在命令行中使用-d,或在交互模式下按下“s”以設(shè)置。你可以使用類似2.5,4.1這樣的小樹。

  什么時候我們需要快于1秒的更新?

  時間段內(nèi)需要更多的樣本。應(yīng)對這點要求,***使用批處理模式,并將標(biāo)準(zhǔn)輸出重定向到文件中,以便更好的分析。

  你并不在意 Top 消耗的額外CPU負(fù)荷。是的,雖然它很小,它依然需要負(fù)荷。如果你的 Linux 系統(tǒng)相對比較空閑,隨意使用短間隔,如果不是,***為重要的任務(wù)保留你的 CPU 時間。

  一個減少 Top 工作的辦法是只監(jiān)測特定的幾個 PID。這樣,Top 無需遍歷 /proc 下所有的子文件夾。用戶名過濾呢?并不會變得更好。用戶名過濾會給Top帶來額外工作量,因此將其與短間隔聯(lián)合將會增加 CPU 負(fù)荷。

  當(dāng)然,當(dāng)你需要強(qiáng)制更新時,按下 Space 鍵,Top 將會刷新統(tǒng)計。#p#

  D.我們需要的字段

  默認(rèn)時,Top 啟動后會顯示下面的任務(wù)屬性:

  字段 描述

  • PID:進(jìn)程 ID
  • USER:有效用戶 ID
  • PR:動態(tài)優(yōu)先值
  • NI:良好值,也被稱為基本優(yōu)先級
  • VIRT:任務(wù)虛擬大小。包括進(jìn)程的可執(zhí)行二進(jìn)制文件大小,數(shù)據(jù)區(qū)大小以及所有已加載的共享庫的大小。
  • RES:目前任務(wù)內(nèi)存消耗。存入交換分區(qū)的部分并不包含。
  • SHR:一些內(nèi)存區(qū)域可能由兩個或多個任務(wù)分享,此字段反應(yīng)這些共享區(qū)域。例如共享庫以及 Sysv 共享內(nèi)存。
  • S:任務(wù)狀態(tài)
  • %CPU:Top 屏幕更新時專用于運(yùn)行任務(wù)的CPU 時間百分比。
  • %MEM:任務(wù)當(dāng)前內(nèi)存消耗的百分比
  • TIME+:在任務(wù)啟動后消耗的總CPU時間。"+" sign means it is displayed with hundreth of a second granularity. 默認(rèn)時,TIME/TIME+ 不會計入已經(jīng)關(guān)閉的任務(wù)子進(jìn)程。
  • COMMAND :顯示程序名。

  不止這些。下面我介紹一些你可能會用到的列:

  要顯示以上的列,在交互模式下按 'f' 鍵,然后再按相應(yīng)的鍵。按一下顯示指定的列,再按一下隱藏該列。要確定當(dāng)前顯示的是哪些列,只需看***行的字母(在"Current Fields"的右邊)。大寫字母表示顯示了該列,小寫表示隱藏。你選好以后,按回車即可。

  排序使用了類似的方法。按 'O' (大寫),然后再按相應(yīng)的鍵。即使記不住那些按鍵也沒關(guān)系,top 會顯示出來。新的排序鍵將標(biāo)上星號,相應(yīng)的字母會變成大寫,很直觀。選好以后,記得按回車。#p#

  E.多視圖比單個視圖更好嗎?

  在不同的情況下,有時候我們想監(jiān)視不同的系統(tǒng)屬性。例如,你想同時監(jiān)控CPU的百分比和CPU被所有任務(wù)消耗的時間。在另一段時間,你想監(jiān)控常駐內(nèi)存和所有任務(wù)的總頁面故障??焖侔?lsquo;F’鍵然后切換界面?我想這也太不明智了吧。

  為什么不試試多視圖窗口模式呢?按‘A’(大寫)切換到多窗口界面。默認(rèn)的,你將會看到4個不同的系列的字段組。每個字段組有默認(rèn)的標(biāo)簽/名稱:

  ***字段組: Def

  第二字段組: Job

  第三字段組: Mem

  第四字段組: Usr

  ***字段組就是你在單一視圖窗口所常見的組,而其余的組會被隱藏。內(nèi)置多視圖窗口模式,所有可用的窗口通過按‘a’或者‘w’循環(huán)。注意,切換到其他窗口時會改變活動窗口(也稱為當(dāng)前窗口)。假如你不確定哪一個是活動窗口的話,只需要看一下top展示的***行(在當(dāng)前時間字段的左邊)。另一個改變活動窗口的方法是通過按‘G’緊跟著輸入數(shù)字(1到4)。

  活動窗口是針對用戶輸入的,因此在開始干活之前確定選好了你偏好的界面。然后,你可以在單一窗口模式下愛干嘛干嘛。在這種情況你一般想自定義字段展示,那么你只需要按‘f’然后開始自定義。

  假如你認(rèn)為第四字段組太多的話,你只需要切換到字段組然后按‘-’隱藏。請注意,即使你隱藏了當(dāng)前的字段組,那并不以意味著你同時改變了活動組。再次按‘-’的話,當(dāng)前組就可見了。

  如果你想操作多視圖窗口模式,再次按‘A’鍵。那樣也將使得活動組成為了單一視圖窗口模式的新的字段組。#p#

  F. "我的Linux主機(jī)上怎么會只有很少的空閑內(nèi)存?"

  有同樣的問題? 不管你在主板上增加多少內(nèi)存,你都會很快發(fā)現(xiàn)空閑內(nèi)存減少的非常迅速. 空閑內(nèi)存算錯了? 不!

  在回答這個之前, 先查看一下top命令頂部顯示的內(nèi)存概要 (有可能你需要按 'm'來顯示出來). 在這里,你可以看到兩個區(qū)域: 緩沖(buffers)和緩存(cached)。 "緩沖(Buffers)" 代表有多少內(nèi)存用來緩存磁盤塊 "緩存(Cached)" 有一點類似 "緩沖(Buffers)", 只是僅僅從文件讀取緩存頁面. 想透徹了解這部分,建議讀一下Linux內(nèi)核的書比如Robert M.Love寫的《Linux Kernel Development》。

  這足夠了解緩沖(buffers)和緩存(cached)代表系統(tǒng)緩存. 他們會根據(jù)linux內(nèi)核機(jī)制動態(tài)增加或減少。

  除去被緩存的消耗,程序和代碼同樣要占據(jù)RAM. 所以,最終空閑內(nèi)存顯示的是RAM中不被緩存和程序/代碼占用的部分 一般來說,你也可以考慮緩存區(qū)域為另一部分“空閑”RAM,如果程序需要更多內(nèi)存它會減少。

  從進(jìn)程的角度來看,你可能想知道哪個區(qū)域代表真實的內(nèi)存消耗,VIRT(virtual memory usage )區(qū)域? 當(dāng)然不是! 回顧一下,這個區(qū)域代表了進(jìn)程地址空間里一切,包括相關(guān)的庫。閱讀top命令的源代碼和proc.txt (在內(nèi)核代碼樹中的Documentation/filesystem 文件夾內(nèi)), 我的結(jié)論是RSS字段是進(jìn)程內(nèi)存消耗的***的描述.我說“***的”是因為你可以考慮它是近似而不是所有時間100%準(zhǔn)確。

  G.使用數(shù)個保存的配置

  希望保存多個不同的配置文件,以便于輕松的切換預(yù)配置視圖?只需要創(chuàng)建一個 Top 二進(jìn)制文件的軟連接到你喜歡的名字:

  # ln -s /usr/bin/top /usr/bin/top-a

  然后運(yùn)行新的“top-a”。調(diào)整完畢后鍵入‘W’保存配置,它將被保存到 ~/.top-arc(格式為你的 Top 別名+rc)。

  這樣,運(yùn)行原來的 Top 可以使用之前的視圖,而 top-a 則使用第二個,依次類推。

  H.總結(jié)

  有很多竅門使用top會更加高效。關(guān)鍵是知道你真正需要的是什么和可能的對Linux低級別原理的一般理解。統(tǒng)計并不總是正確,但至少有助于總體衡量。所有這些數(shù)字收集自 /proc,因此首先確保它已掛載!

  參考:Understanding The Linux Kernel,第二版。內(nèi)核源代碼樹里的/filesystems/proc.txt文檔。Linux 內(nèi)核源代碼。

責(zé)任編輯:黃丹 來源: oschina.net
相關(guān)推薦

2024-04-11 13:27:19

Linuxtop命令

2021-08-10 11:45:57

topCPULinux

2021-05-31 15:53:57

CPU Top命令

2011-04-06 11:36:30

MRTG監(jiān)控內(nèi)存

2016-11-15 15:23:27

2009-09-21 09:51:19

LoadRunnerLinux系統(tǒng)監(jiān)控Linux

2009-09-28 10:34:32

LR監(jiān)控Linux系統(tǒng)資源Linux

2014-12-23 09:43:33

linux監(jiān)控工具

2019-09-12 08:03:56

MySQL索引數(shù)據(jù)庫

2023-12-20 08:00:52

Zabbix腳本信息

2009-06-16 09:18:26

Linux系統(tǒng)管理系統(tǒng)資源

2016-10-11 08:33:32

服務(wù)器使用率多線程

2015-01-05 14:07:27

云計算虛擬化云環(huán)境

2022-01-24 16:17:26

htop工具Linux

2010-05-10 11:34:38

Oracle系統(tǒng)表空間

2017-05-03 11:10:14

Linux進(jìn)程監(jiān)控cpustat

2009-10-21 12:42:20

Linux系統(tǒng)資源操作系統(tǒng)

2010-03-11 17:25:17

Linux系統(tǒng)使用率proc文件系統(tǒng)

2019-01-15 15:04:54

CPU電腦使用率

2012-12-28 11:46:35

手機(jī)系統(tǒng)iOS黑莓
點贊
收藏

51CTO技術(shù)棧公眾號