一、系統負載監測
1.使用uptime命令
使用uptime命令可以查看系統負載,系統平均負載被定義為在特定時間間隔內運行隊列中的平均進程數目。如果一個進程滿足以下條件則其就會位于運行隊列中:沒有在等待I/O操作的結果、它沒有主動進入等待狀態(也就是沒有被調用、沒有被停止。
# uptime
9:51pm up 39 days, 4:43, 4 users, load average:1.02, 1.90, 1.44
上面命令顯示示最近1 分鐘內系統的平均負載是1.02,在最近5分鐘內系統的平均負載是1.90,在最近的15 分鐘內系統的平均負載是1.44。一共四個用戶。通常來說只要每個CPU的當前活動進程數不小于1那幺系統的性能就是良好的,如果每個CPU的任務數大于5,那幺就表示這臺機器的性能有嚴重問題。
2.使用cron命令進行定時監測系統負載:
cron是一個守護進程,它提供定時器的功能,讓用戶在特定時間執行命令,首先使用命令:“chkconfig -list|grep crond”查看該服務是否啟動,然后使用命令:
# crontab -e
此時打開一個vi編輯器:輸入以下內容:
#30 * * * * * uptime
存盤退出,這樣每隔30分鐘就記載其平均負載,這樣累計一天,我們就可以得到最近一天的平均負載。
二、Unix進程運行的監測
1.使用ps命令
Unix系統提供了ps等察看進程信息的系統調用,通過結合使用這些系統調用,我們可以清晰地了解進程的運行狀態以及存活情況,從而采取相應的措施,來確保Unix系統的性能。它們是目前在Unix下最常見的進程狀況查看工具,是隨 Unix版本發行的,安裝好系統之后,用戶就可以使用。 這里以ps命令為例,ps命令是最基本同時也是非常強大的進程查看命令。利用它可以確定有哪些進程正在運行及運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等。ps命令可以監控后臺進程的工作情況,因為后臺進程是不和屏幕鍵盤這些標準輸入/輸出設備進行通信的,如果需要檢測其情況,可以使用使用ps -el命令。ps-el|more命令輸出的例子。
![]() |
表 1 ps 報告中字段的匯總:
字段 |
說明 |
F |
用數值表示目前進程的狀態 |
S |
用字符表示目前進程的狀態 |
UID |
進程所有者的有效用戶 ID。 |
PID |
進程 ID。 |
PPID |
父進程 ID。 |
C |
用于調度的處理器使用率。使用 -c 選項時,將不顯示此字段。 |
CLS |
進程所屬的調度類,例如實時、系統或分時。只有 -c 選項包括此字段。 |
PRI |
內核線程的調度優先級。數值越大,表示優先級越高。 |
NI |
進程的nice數值,該數值對其調度優先級有影響。使進程“更好”,意味著降低其優先級。 |
ADDR |
proc 結構的地址。 |
SZ |
進程的虛擬地址大小。 |
WCHAN |
進程休眠的事件或鎖定的地址。 |
STIME |
以小時、分鐘和秒表示的進程開始時間。 |
TTY |
從中啟動進程或其父級的終端。問號表示沒有控制終端。 |
TIME |
進程自開始以來使用的 CPU 時間總量。 |
CMD |
生成進程的命令。 |
在進行運行時,如果CPU占用增加而又不知道是哪一個進程造成的情況。使用命令:
#ps -el | sort +4n
說明:因為c選項在第4列,所以sort 選4作參數,+表示升序輸出結果。
2.使用進程監控工具
如果安裝了CDE環境,可以使用圖形界面進程等系統信息,使用方法是單擊“前面板”上“工具”子面板上的“查找進程”控件。 顯示“進程管理器”主窗口。它立即對工作站進行采樣,并顯示所有當前進程的采樣。如圖1 。
![]() |
圖1 進程管理器 |
圖1進程管理器列表中的每個進程項會以表1中解釋的那樣給出有用的信息:
表2進程信息
列標題 |
含義 |
ID |
進程 ID |
名稱 |
進程名 |
屬主 |
屬主名 |
CPU% |
最近使用的 CPU 時間與同一時期中的可用時間之比,以百分數表示 |
RAM |
該進程當前所占用的 RAM 容量 |
交換 |
虛擬內存中的總容量 |
啟動于 |
實際啟動時間(如果不是當前時間,則為日期) |
父進程 |
父進程的進程 ID,即 “PPID” |
命令 |
執行的實際 UNIX 命令(已截斷) |
1. 采樣周期的選擇
默認情況下,“進程管理器”對工作站進行抽樣,并且每隔 30 秒更新一次顯示。要禁用/啟用連續采樣模式,請從“抽樣”菜單中選擇“停止/啟動”。如果啟動連續抽樣模式,則將在“采樣”菜單上看到“停止”菜單項;否則,菜單項將為“啟動”。要更改抽樣間隔,請在“抽樣間隔”框中鍵入秒數(最大值為 604800,即 14 天)。按回車鍵以使新的抽樣頻率生效。要立即抽樣,請從“抽樣”菜單中選擇“現在”。“進程管理器”進行抽樣,然后更新顯示。
2. 更改顯示的排序順序
默認情況下,“進程管理器”按 CPU 使用的降序列出進程項。因為 CPU 使用列 (CPU%) 上方的列標題是凹陷的,而其它列標題卻不是,所以可以知道這一點。要選擇用以對進程項列表進行排序的列,請單擊相關的列標題或者從“查看”菜單中選擇列名稱。“進程管理器”將進程項的列表排序,并按照新順序顯示它們。要顛倒任何一列的排序順序(例如,要按 RAM 使用的升序進行排列),請單擊凹陷的列標題按鈕。列標題區將變為黑色,并且以相反的順序對顯示進行排序。圖2是按照RAM使用的升序的排序ps進程。
圖2按照RAM使用的升序的排序ps進程。
![]() |
圖2按照RAM使用的升序的排序ps進程 |
三、內存使用情況監測
內存是Unix內核所管理的最重要的資源之一。內存管理系統是操作系統中最為重要的部分,因為系統的物理內存總是少于系統所需要的內存數量。虛擬內存就是為了克服這個矛盾而采用的策略。系統的虛擬內存通過在各個進程之間共享內存而使系統看起來有多于實際內存的內存容量。Unix支持虛擬內存, 就是使用磁盤作為RAM的擴展,使可用內存相應地有效擴大。核心把當前不用的內存塊存到硬盤,騰出內存給其他目的。當原來的內容又要使用時,再讀回內存。
如果物理內存太少,就會增加交換的次數,性能就會減低。前面使用ps –el命令監測進程,其SZ字段就是檢查使用需擬內存的大小。
(1)使甩vmstat命令監視虛擬內存使用情況:
vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。通常使用vmstat 5 5(表示在5秒時間內進行5次采樣)命令測試。將得到一個數據匯總它可以反映真正的系統情況。
![]() |
類別 |
字段名 |
說明 |
procs |
進程 |
報告以下內容: |
r |
分發隊列中的內核線程數 |
|
b |
正在等待資源的阻塞內核線程數 |
|
w |
正在等待處理中的資源完成的換出 LWP 數 |
|
memory |
內存 |
報告實際內存和虛擬內存的使用情況: |
swap |
可用交換空間 |
|
free |
可用列表的大小 |
|
page |
分頁 |
以秒為單位報告頁面錯誤和分頁活動: |
|
re |
回收的頁面 |
mf |
次要錯誤和主要錯誤 |
|
pi |
頁入的千字節數 |
|
po |
頁出的千字節數 |
|
fr |
釋放的千字節數 |
|
de |
最近換入的進程所需的預計內存 |
|
sr |
由 page 守護程序掃描的當前未使用的頁數。如果 sr 不等于零,則 page 守護程序一直在運行。 |
|
disk |
磁盤 |
報告每秒的磁盤操作數,最多顯示四個磁盤中的數據 |
faults |
中斷 |
報告每秒的陷阱/中斷速率: |
in |
每秒的中斷次數 |
|
sy |
每秒的系統調用數 |
|
cs |
CPU 上下文切換速率 |
|
cpu |
中央處理器 |
報告 CPU 使用時間: |
us |
用戶時間 |
|
sy |
系統時間 |
|
id |
空閑時間 |
有關此命令的更多詳細說明,請參見 vmstat 手冊頁。