- 論壇徽章:
- 0
|
在此部分中,了解用于監(jiān)視物理組件的高級(jí) Linux 命令
Linux 系統(tǒng)由若干主要物理組件組成,如 CPU、內(nèi)存、網(wǎng)卡和存儲(chǔ)設(shè)備。要有效地管理 Linux 環(huán)境,您應(yīng)該能夠以合理的精度測(cè)量這些資源的各種指標(biāo) — 每個(gè)組件處理多少資源、是否存在瓶頸等。
在本系列的其他部分中,您已經(jīng)學(xué)習(xí)了處于宏級(jí)別的用于測(cè)量指標(biāo)的一些命令。但在此部分中,您將了解專門用于監(jiān)視物理組件的高級(jí) Linux 命令。具體而言,您將了解以下類別的命令:
組件
命令
內(nèi)存
free、vmstat、mpstat、iostat、sar
CPU
vmstat、mpstat、iostat、sar
I/O
vmstat、mpstat、iostat、sar
進(jìn)程
ipcs、ipcrm
正如您所見,某些命令出現(xiàn)在多個(gè)類別中。這是由于這些命令可以執(zhí)行很多任務(wù)。某些命令比較適合于某些組件,例如 iostat 適合 I/O,但是您應(yīng)該了解它們工作的差別并使用您更熟悉的命令。
在多數(shù)情況下,單個(gè)命令可能對(duì)于了解實(shí)際發(fā)生的情況沒什么用。要獲取所需的信息,您應(yīng)該了解多個(gè)命令。
free
一個(gè)常見的問題是“我的應(yīng)用程序和各種服務(wù)器、用戶和系統(tǒng)進(jìn)程正在使用多少內(nèi)存?”或者“現(xiàn)在有多少內(nèi)存可用?”如果正在運(yùn)行的進(jìn)程使用的內(nèi)存大于可用 RAM,則需要將這些進(jìn)程移到交換區(qū)。因此,一個(gè)補(bǔ)充問題是“正在使用多少交換區(qū)空間?”
free 命令將回答所有這些問題。而且,一個(gè)非常有用的選項(xiàng) –m 可以顯示可用內(nèi)存(以 MB 為單位):
# free -m
total used free shared buffers cached
Mem: 1772 1654 117 0 18 618
-/+ buffers/cache: 1017 754
Swap: 1983 1065 918
以上輸出顯示系統(tǒng)具有 1,772 MB 的 RAM,已使用 1,654 MB,還有 117 MB 內(nèi)存可用。第二行顯示在物理內(nèi)存中緩沖區(qū)和緩存大小的更改。第三行顯示交換區(qū)利用情況。
要以 KB 或 GB 為單位顯示以上內(nèi)容,請(qǐng)將 -m 選項(xiàng)分別替換為 -k 或 -g。使用 –b 選項(xiàng)將以字節(jié)為單位。
# free -b
total used free shared buffers cached
Mem: 1858129920 1724039168 134090752 0 18640896 643194880
-/+ buffers/cache: 1062203392 795926528
Swap: 2080366592 1116721152 963645440
–t 選項(xiàng)在輸出底部顯示總數(shù)(物理內(nèi)存和交換區(qū)的總和):
# free -m -t
total used free shared buffers cached
Mem: 1772 1644 127 0 16 613
-/+ buffers/cache: 1014 757
Swap: 1983 1065 918
Total: 3756 2709 1046
盡管 free 不顯示百分比,但是我們可以提取并格式化輸出的特定部分,將已使用的內(nèi)存僅顯示為總數(shù)的百分比:
# free -m | grep Mem | awk '{print ($3 / $2)*100}'
98.7077
這在具體數(shù)據(jù)非常重要的 shell 腳本中非常方便。例如,您可能希望在可用內(nèi)存的百分比低于特定閾值時(shí)觸發(fā)一個(gè)警報(bào)。
同樣,要發(fā)現(xiàn)已使用交換區(qū)空間的百分比,您可以發(fā)出:
free -m | grep -i Swap | awk '{print ($3 / $2)*100}'
可以使用 free 查看應(yīng)用程序施加的內(nèi)存負(fù)載。例如,啟動(dòng)備份應(yīng)用程序之前檢查可用內(nèi)存,啟動(dòng)之后立即檢查可用內(nèi)存。兩者之差就是備份應(yīng)用程序消耗的內(nèi)存。
針對(duì) Oracle 用戶的用法
那么,您如何使用該命令管理運(yùn)行 Oracle 環(huán)境的 Linux 服務(wù)器呢?性能問題的一個(gè)最常見原因是內(nèi)存不足,從而導(dǎo)致系統(tǒng)臨時(shí)將內(nèi)存區(qū)域“交換”到磁盤中。某種程度的交換可能是必然的,但是交換過多則表示可用內(nèi)存不足。
而現(xiàn)在,您可以使用 free 獲得可用內(nèi)存信息,緊接著使用 sar 命令(稍后介紹)檢查內(nèi)存和交換區(qū)消耗的歷史趨勢(shì)。如果交換區(qū)的使用是暫時(shí)的,則可能出現(xiàn)一次高峰,但是如果明確要經(jīng)過一段時(shí)間,則應(yīng)注意。持續(xù)的內(nèi)存過載可能有幾個(gè)明顯且可能的疑點(diǎn):
較大的 SGA 高于可用內(nèi)存
在 PGA 上分配了大量?jī)?nèi)存
某些進(jìn)程出現(xiàn)泄露內(nèi)存的錯(cuò)誤
對(duì)于第一種情況,應(yīng)確保 SGA 低于可用內(nèi)存。根據(jù)經(jīng)驗(yàn),對(duì) SGA 使用大約物理內(nèi)存的 40%,當(dāng)然,應(yīng)根據(jù)具體情況定義該參數(shù)。對(duì)于第二種情況,應(yīng)嘗試減少查詢中的大量緩沖區(qū)分配。對(duì)于第三種情況,應(yīng)使用 ps 命令(在本系列的之前部分中介紹過)確定可能泄露內(nèi)存的具體進(jìn)程。
ipcs
當(dāng)某個(gè)進(jìn)程運(yùn)行時(shí),它會(huì)奪取“共享內(nèi)存”。該進(jìn)程可能擁有一個(gè)或很多個(gè)共享內(nèi)存段。進(jìn)程之間彼此(“進(jìn)程間通信”或 IPC)發(fā)送消息并使用信號(hào)。要顯示有關(guān)共享內(nèi)存段、IPC 消息隊(duì)列以及信號(hào)的信息,可以使用一個(gè)命令:ipcs。
–m 選項(xiàng)非常受歡迎;它顯示共享內(nèi)存段。
# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xc4145514 2031618 oracle 660 4096 0
0x00000000 3670019 oracle 660 8388608 108
0x00000000 327684 oracle 600 196608 2 dest
0x00000000 360453 oracle 600 196608 2 dest
0x00000000 393222 oracle 600 196608 2 dest
0x00000000 425991 oracle 600 196608 2 dest
0x00000000 3702792 oracle 660 926941184 108
0x00000000 491529 oracle 600 196608 2 dest
0x49d1a288 3735562 oracle 660 140509184 108
0x00000000 557067 oracle 600 196608 2 dest
0x00000000 1081356 oracle 600 196608 2 dest
0x00000000 983053 oracle 600 196608 2 dest
0x00000000 1835023 oracle 600 196608 2 dest
該輸出表明服務(wù)器正在運(yùn)行 Oracle 軟件,顯示了各種共享內(nèi)存段。每個(gè)共享內(nèi)存段由顯示在“shmid”列下面的共享內(nèi)存 ID 唯一標(biāo)識(shí)。(稍后,您將看到如何使用該列值。)顯然,“owner”顯示內(nèi)存段的所有者,“perms”列顯示權(quán)限(與 unix 權(quán)限相同),“bytes”顯示字節(jié)大小。
-u 選項(xiàng)顯示一個(gè)非?焖俚恼
# ipcs -mu
------ Shared Memory Status --------
segments allocated 25
pages allocated 264305
pages resident 101682
pages swapped 100667
Swap performance: 0 attempts 0 successes
–l 選項(xiàng)顯示限定值(相對(duì)于當(dāng)前值):
# ipcs -ml
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 907290
max total shared memory (kbytes) = 13115392
min seg size (bytes) = 1
如果您看到當(dāng)前值處于或接近限定值,則應(yīng)該考慮提高限定值。
可以使用 shmid 值獲取具體共享內(nèi)存段的詳細(xì)圖片。–i 選項(xiàng)可以完成該操作。下面是查看 shmid 3702792 詳細(xì)信息的方法:
# ipcs -m -i 3702792
Shared memory Segment shmid=3702792
uid=500 gid=502 cuid=500 cgid=502
mode=0660 access_perms=0660
bytes=926941184 lpid=12225 cpid=27169 nattch=113
att_time=Fri Dec 19 23:34:10 2008
det_time=Fri Dec 19 23:34:10 2008
change_time=Sun Dec 7 05:03:10 2008
稍后,本文將采用一個(gè)示例向您介紹如何解釋以上輸出。
-s 顯示系統(tǒng)中的信號(hào):
# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x313f2eb8 1146880 oracle 660 104
0x0b776504 2326529 oracle 660 154
… and so on …
它顯示一些有價(jià)值的數(shù)據(jù)。它顯示 ID 為 1146880 的信號(hào)數(shù)組具有 104 個(gè)信號(hào),另一個(gè)數(shù)組具有 154 個(gè)信號(hào)。如果您增加信號(hào),則總值必須低于內(nèi)核參數(shù) (semmax) 定義的上限。安裝 Oracle 數(shù)據(jù)庫(kù)軟件時(shí),預(yù)安裝的檢查程序?qū)z查 semmax 的設(shè)置。之后,當(dāng)系統(tǒng)達(dá)到穩(wěn)定狀態(tài)時(shí),您可以檢查實(shí)際的利用情況,然后相應(yīng)地調(diào)整內(nèi)核值。
針對(duì) Oracle 用戶的用法
如何查看 Oracle 數(shù)據(jù)庫(kù)實(shí)例使用的共享內(nèi)存段?為此,請(qǐng)使用 oradebug 命令。首先以 sysdba 身份連接到數(shù)據(jù)庫(kù):
# sqlplus / as sysdba
在 SQL 中,使用 oradebug 命令,如下所示:
SQL> oradebug setmypid
Statement processed.
SQL> oradebug ipc
Information written to trace file.
要查找跟蹤文件的名稱,執(zhí)行以下命令:
SQL> oradebug TRACEFILE_NAME
/opt/oracle/diag/rdbms/odba112/ODBA112/trace/ODBA112_ora_22544.trc
現(xiàn)在,如果打開該跟蹤文件,將會(huì)看到共享內(nèi)存 ID。下面是該文件的節(jié)選:
Area #0 `Fixed Size' containing Subareas 0-0
Total size 000000000014613c Minimum Subarea size 00000000
Area Subarea Shmid Stable Addr Actual Addr
0 0 17235970 0x00000020000000 0x00000020000000
Subarea size Segment size
0000000000147000 000000002c600000
Area #1 `Variable Size' containing Subareas 4-4
Total size 000000002bc00000 Minimum Subarea size 00400000
Area Subarea Shmid Stable Addr Actual Addr
1 4 17235970 0x00000020800000 0x00000020800000
Subarea size Segment size
000000002bc00000 000000002c600000
Area #2 `Redo Buffers' containing Subareas 1-1
Total size 0000000000522000 Minimum Subarea size 00000000
Area Subarea Shmid Stable Addr Actual Addr
2 1 17235970 0x00000020147000 0x00000020147000
Subarea size Segment size
0000000000522000 000000002c600000
... and so on ...
共享內(nèi)存 id 以紅色粗體顯示?梢允褂迷摴蚕韮(nèi)存 ID 來(lái)獲取共享內(nèi)存的詳細(xì)信息:
# ipcs -m -i 17235970
另一個(gè)有用的觀察是 lpid 的值 — 最后一個(gè)接觸共享內(nèi)存段的進(jìn)程的進(jìn)程 ID。要展示該屬性的值,使用 SQL*Plus 從另一個(gè)會(huì)話連接到該實(shí)例。
# sqlplus / as sysdba
在該會(huì)話中,查找服務(wù)器進(jìn)程的 PID:
SQL> select spid from v$process
2 where addr = (select paddr from v$session
3 where sid =
4 (select sid from v$mystat where rownum
現(xiàn)在,針對(duì)同一共享內(nèi)存段再次執(zhí)行 ipcs 命令:
# ipcs -m -i 17235970
Shared memory Segment shmid=17235970
uid=500 gid=502 cuid=500 cgid=502
mode=0660 access_perms=0660
bytes=140509184 lpid=13224 cpid=27169 nattch=113
att_time=Fri Dec 19 23:38:09 2008
det_time=Fri Dec 19 23:38:09 2008
change_time=Sun Dec 7 05:03:10 2008
注意,lpid 的值已經(jīng)從原來(lái)的值 12225 更改為 13224。lpid 顯示最后一個(gè)接觸共享內(nèi)存段的進(jìn)程的 PID。
該命令自身的價(jià)值不大。下一個(gè)命令 ipcrm 允許您基于輸出采取操作,正如您將在下一部分所見。
ipcrm
既然您已經(jīng)標(biāo)識(shí)了共享內(nèi)存和其他 IPC 指標(biāo),那么使用它們做什么呢?之前您看到過一些用法,如標(biāo)識(shí) Oracle 使用的共享內(nèi)存、確保為共享內(nèi)存設(shè)置了內(nèi)核參數(shù)等等。另一個(gè)常見的應(yīng)用是刪除共享內(nèi)存、IPC 消息隊(duì)列或信號(hào)數(shù)組。
要?jiǎng)h除某個(gè)共享內(nèi)存段,注意 ipcs 命令輸出中它的 shmid。然后使用 –m 選項(xiàng)刪除該段。要?jiǎng)h除 ID 為 3735562 的段,使用:
# ipcrm –m 3735562
這將刪除該共享內(nèi)存。還可以使用該命令刪除信號(hào)和 IPC 消息隊(duì)列(使用 –s 和 –q 參數(shù))。
針對(duì) Oracle 用戶的用法
有時(shí)當(dāng)您關(guān)閉數(shù)據(jù)庫(kù)實(shí)例時(shí),Linux 內(nèi)核可能未完全清除共享內(nèi)存段。留下的共享內(nèi)存沒有什么用處,但它會(huì)占用系統(tǒng)資源,從而使可用于其他進(jìn)程的內(nèi)存更少。這種情況下,可以檢查“oracle”用戶所擁有的任何延遲共享內(nèi)存段,然后刪除它們,如果有這樣的段,使用 ipcrm 命令。
vmstat
vmstat 是最早用于顯示所有與內(nèi)存和進(jìn)程相關(guān)信息的命令,調(diào)用時(shí),該命令會(huì)持續(xù)運(yùn)行并發(fā)布其信息。它有兩個(gè)參數(shù):
# vmstat
是兩次運(yùn)行之間的時(shí)間間隔,以秒為單位。 是 vmstat 重復(fù)的次數(shù)。下面是當(dāng)我們希望 vmstat 每隔 5 秒運(yùn)行一次并在第 10 次運(yùn)行后停止時(shí)的示例。每 5 秒之后都會(huì)輸出一行并顯示此時(shí)的統(tǒng)計(jì)信息。
# vmstat 5 10
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 1087032 132500 15260 622488 89 19 9 3 0 0 4 10 82 5
0 0 1087032 132500 15284 622464 0 0 230 151 1095 858 1 0 98 1
0 0 1087032 132484 15300 622448 0 0 317 79 1088 905 1 0 98 0
… shows up to 10 times.
該輸出顯示有關(guān)系統(tǒng)資源的大量信息。我們來(lái)詳細(xì)介紹它們:
procs
顯示進(jìn)程數(shù)
r
等待運(yùn)行的進(jìn)程。系統(tǒng)上的負(fù)載越多,等待運(yùn)行 CPU 周期的進(jìn)程數(shù)量越多。
b
不可中斷睡眠的進(jìn)程,也稱為“被阻塞”的進(jìn)程。這些進(jìn)程最有可能等待 I/O,但也可能等待其他事情。
有時(shí),還存在另外一列,該列位于標(biāo)題“w”下,顯示可以運(yùn)行但已經(jīng)交換到交換區(qū)域中的進(jìn)程數(shù)。
“b”下的數(shù)值應(yīng)接近于 0。如果“w”下的數(shù)值很高,可能需要更多內(nèi)存。
下表顯示了內(nèi)存指標(biāo):
swpd
虛擬內(nèi)存或交換內(nèi)存的數(shù)量(以 KB 為單位)
free
可用物理內(nèi)存的數(shù)量(以 KB 為單位)
buff
用作緩沖區(qū)的內(nèi)存數(shù)量(以 KB 為單位)
cache
用作緩存的物理內(nèi)存數(shù)量(以 KB 為單位)
緩沖區(qū)內(nèi)存用來(lái)存儲(chǔ)文件元數(shù)據(jù)(如 i-nodes)以及原始?jí)K設(shè)備中的數(shù)據(jù)。緩存內(nèi)存用于文件數(shù)據(jù)本身。
下表顯示了交換活動(dòng):
si
將內(nèi)存從磁盤交換回物理 RAM 的速率(以 KB/秒為單位)
so
將內(nèi)存從物理 RAM 交換到磁盤的速率(以 KB/秒為單位)
下表顯示了 I/O 活動(dòng):
bi
系統(tǒng)向塊設(shè)備發(fā)送數(shù)據(jù)的速率(以塊/秒為單位)
bo
系統(tǒng)從塊設(shè)備中讀取數(shù)據(jù)的速率(以塊/秒為單位)
下表顯示了系統(tǒng)相關(guān)活動(dòng):
in
系統(tǒng)每秒接收到的中斷數(shù)
cs
在進(jìn)程空間中切換上下文的速率(以數(shù)量/秒為單位)
最后這張表可能用得最多 — 有關(guān) CPU 負(fù)載的信息:
us
顯示花費(fèi)在用戶進(jìn)程中的 CPU 百分比。Oracle 進(jìn)程屬于這一類。
sy
系統(tǒng)進(jìn)程(如所有根進(jìn)程)使用的 CPU 百分比
id
可用 CPU 百分比
wa
花費(fèi)在“等待 I/O”上的百分比
讓我們看一看如何解釋這些值。輸出的第一行是自從系統(tǒng)重新啟動(dòng)以來(lái)所有指標(biāo)的平均值。因此,忽略該行,因?yàn)樗⒉伙@示當(dāng)前狀態(tài)。其他行顯示實(shí)時(shí)指標(biāo)。
理想情況下,等待或阻塞的進(jìn)程數(shù)量(位于“procs”標(biāo)題下)應(yīng)該為 0 或接近于 0。如果數(shù)值較高,則表示系統(tǒng)沒有足夠的資源(如 CPU、內(nèi)存或 I/O)。診斷性能問題時(shí)該信息非常有用。
“swap”下的數(shù)據(jù)表明交換是否過多。如果交換過多,則表明物理內(nèi)存可能不足。應(yīng)該減少內(nèi)存需求或增加物理 RAM。
“io”下的數(shù)據(jù)表示往返于磁盤的數(shù)據(jù)流。這表明正在進(jìn)行的磁盤活動(dòng)量,這并不一定表明存在問題。如果您看到“proc”和“b”列(正在阻塞的進(jìn)程)下有較大的數(shù)值和較高的 I/O,則可能出現(xiàn)了嚴(yán)重的 I/O 爭(zhēng)用問題。
“cpu”標(biāo)題下是最有用的信息!id”列顯示空閑 CPU。如果用 100 減去該數(shù)值,則會(huì)得到繁忙 CPU 的百分比。還記得本系列的另一個(gè)部分中描述的 top 命令嗎?該命令還顯示 CPU 的空閑百分比數(shù)值。區(qū)別是:top 顯示每個(gè) CPU 的空閑百分比,而 vmstat 顯示所有 CPU 的空閑百分比。
vmstat 命令還顯示 CPU 使用情況的劃分:Linux 系統(tǒng)使用多少、用戶進(jìn)程使用多少以及等待 I/O 使用多少。通過該劃分,您可以確定 CPU 消耗的組成。如果系統(tǒng) CPU 負(fù)載較高,能表明正在運(yùn)行某個(gè)根進(jìn)程(如備份)嗎?
一段時(shí)間內(nèi)的系統(tǒng)負(fù)載應(yīng)該一致。如果系統(tǒng)顯示較高的數(shù)值,請(qǐng)使用 top 命令確定占有 CPU 的系統(tǒng)進(jìn)程。
針對(duì) Oracle 用戶的用法
Oracle 進(jìn)程(后臺(tái)進(jìn)程和服務(wù)器進(jìn)程)和用戶進(jìn)程(sqlplus、apache 等)位于“us”下。如果該數(shù)值較高,則使用 top 來(lái)確定進(jìn)程。如果“wa”列顯示較高的數(shù)值,則表明 I/O 系統(tǒng)無(wú)法跟上讀取或?qū)懭氲臄?shù)量。有時(shí)這可能是因?yàn)樵跀?shù)據(jù)庫(kù)中進(jìn)行大量更新,從而導(dǎo)致日志切換以及后續(xù)的大量存檔進(jìn)程。但是,如果它持續(xù)顯示一個(gè)較大的數(shù)值,則表明可能存在 I/O 瓶頸。
Oracle 數(shù)據(jù)庫(kù)中的 I/O 瓶頸可能會(huì)造成嚴(yán)重的問題。與性能問題不同,慢速 I/O 可能導(dǎo)致控制文件寫入速度緩慢,這會(huì)導(dǎo)致等待獲取控制文件的進(jìn)程加入隊(duì)列。如果等待超過 900 秒且等待者是關(guān)鍵進(jìn)程(如 LGWR),則會(huì)關(guān)閉數(shù)據(jù)庫(kù)實(shí)例。
如果您看到很多交換,可能是 SGA 的太大,以至于物理內(nèi)存容納不下。應(yīng)該減小 SGA 大小或增加物理內(nèi)存。
mpstat
另一個(gè)用于獲取 CPU 相關(guān)統(tǒng)計(jì)信息的有用的命令是 mpstat。下面是一個(gè)示例輸出:
# mpstat -P ALL 5 2
Linux 2.6.9-67.ELsmp (oraclerac1) 12/20/2008
10:42:38 PM CPU %user %nice %system %iowait %irq %soft %idle intr/s
10:42:43 PM all 6.89 0.00 44.76 0.10 0.10 0.10 48.05 1121.60
10:42:43 PM 0 9.20 0.00 49.00 0.00 0.00 0.20 41.60 413.00
10:42:43 PM 1 4.60 0.00 40.60 0.00 0.20 0.20 54.60 708.40
10:42:43 PM CPU %user %nice %system %iowait %irq %soft %idle intr/s
10:42:48 PM all 7.60 0.00 45.30 0.30 0.00 0.10 46.70 1195.01
10:42:48 PM 0 4.19 0.00 2.20 0.40 0.00 0.00 93.21 1034.53
10:42:48 PM 1 10.78 0.00 88.22 0.40 0.00 0.00 0.20 160.48
Average: CPU %user %nice %system %iowait %irq %soft %idle intr/s
Average: all 7.25 0.00 45.03 0.20 0.05 0.10 47.38 1158.34
Average: 0 6.69 0.00 25.57 0.20 0.00 0.10 67.43 724.08
Average: 1 7.69 0.00 64.44 0.20 0.10 0.10 27.37 434.17
它顯示了系統(tǒng)中 CPU 的各種統(tǒng)計(jì)信息。–P ALL 選項(xiàng)指示該命令顯示所有 CPU 的統(tǒng)計(jì)信息,而不只是特定 CPU 的統(tǒng)計(jì)信息。參數(shù) 5 2 指示該命令每隔 5 秒運(yùn)行一次,共運(yùn)行 2 次。以上輸出首先顯示了所有 CPU 的合計(jì)指標(biāo),然后顯示了每個(gè) CPU 各自的指標(biāo)。最后,在結(jié)尾處顯示所有 CPU 的平均值。
讓我們看一看這些列值的含義:
%user
表示處理用戶進(jìn)程所使用 CPU 的百分比。用戶進(jìn)程是用于應(yīng)用程序(如 Oracle 數(shù)據(jù)庫(kù))的非內(nèi)核進(jìn)程。在本示例輸出中,用戶 CPU 百分比非常低。
%nice
表示使用 nice 命令對(duì)進(jìn)程進(jìn)行降級(jí)時(shí) CPU 的百分比。在之前的部分中已經(jīng)對(duì) nice 命令進(jìn)行了介紹。簡(jiǎn)單來(lái)說,nice 命令更改進(jìn)程的優(yōu)先級(jí)。
%system
表示內(nèi)核進(jìn)程使用的 CPU 百分比
%iowait
表示等待進(jìn)行 I/O 所使用的 CPU 時(shí)間百分比
%irq
表示用于處理系統(tǒng)中斷的 CPU 百分比
%soft
表示用于軟件中斷的 CPU 百分比
%idle
顯示 CPU 的空閑時(shí)間
%intr/s
顯示每秒 CPU 接收的中斷總數(shù)
當(dāng)您擁有前面所述的 vmstat 時(shí),您可能想知道 mpstat 命令的作用。差別很大:mpstat 可以顯示每個(gè)處理器的統(tǒng)計(jì),而 vmstat 顯示所有處理器的統(tǒng)計(jì)。因此,編寫糟糕的應(yīng)用程序(不使用多線程體系結(jié)構(gòu))可能會(huì)運(yùn)行在一個(gè)多處理器機(jī)器上,而不使用所有處理器。從而導(dǎo)致一個(gè) CPU 過載,而其他 CPU 卻很空閑。通過 mpstat 可以輕松診斷這些類型的問題。
針對(duì) Oracle 用戶的用法
與 vmstat 相似,mpstat 命令還產(chǎn)生與 CPU 有關(guān)的統(tǒng)計(jì)信息,因此所有與 CPU 問題有關(guān)的討論也都適用于 mpstat。當(dāng)您看到較低的 %idle 數(shù)字時(shí),您知道出現(xiàn)了 CPU 不足的問題。當(dāng)您看到較高的 %iowait 數(shù)字時(shí),您知道在當(dāng)前負(fù)載下 I/O 子系統(tǒng)出現(xiàn)了某些問題。該信息對(duì)于解決 Oracle 數(shù)據(jù)庫(kù)性能問題非常方便。
iostat
性能評(píng)估的一個(gè)主要部分就是磁盤性能。iostat 命令提供了存儲(chǔ)接口的性能指標(biāo)。
# iostat
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
avg-cpu: %user %nice %sys %iowait %idle
15.71 0.00 1.07 3.30 79.91
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
cciss/c0d0 4.85 34.82 130.69 307949274 1155708619
cciss/c0d0p1 0.08 0.21 0.00 1897036 3659
cciss/c0d0p2 18.11 34.61 130.69 306051650 1155700792
cciss/c0d1 0.96 13.32 19.75 117780303 174676304
cciss/c0d1p1 2.67 13.32 19.75 117780007 174676288
sda 0.00 0.00 0.00 184 0
sdb 1.03 5.94 18.84 52490104 166623534
sdc 0.00 0.00 0.00 184 0
sdd 1.74 38.19 11.49 337697496 101649200
sde 0.00 0.00 0.00 184 0
sdf 1.51 34.90 6.80 308638992 60159368
sdg 0.00 0.00 0.00 184 0
... and so on ...
輸出的開始部分顯示了可用 CPU 和 I/O 等待時(shí)間等指標(biāo),與您在 mpstat 命令中看到的相同。
輸出的下一部分顯示對(duì)系統(tǒng)上每個(gè)磁盤設(shè)備非常重要的指標(biāo)。讓我們看一看這些列的含義:
Device
設(shè)備名稱
tps
每秒的傳輸數(shù)量,例如,每秒的 I/O 操作數(shù)。注:這只是 I/O 操作的數(shù)量;每個(gè)操作可能非常大,也可能非常小。
Blk_read/s
每秒從該設(shè)備讀取的塊數(shù)。通常,塊的大小為 512 字節(jié)。這是一個(gè)磁盤利用率較好的值。
Blk_wrtn/s
每秒寫入該設(shè)備的塊數(shù)
Blk_read
到目前為止從該設(shè)備讀取的塊數(shù)。注意,這并不是正在發(fā)生的情況。很多塊已經(jīng)從該設(shè)備讀取?赡墁F(xiàn)在什么也沒有讀取。觀察一段時(shí)間,看是否有變化。
Blk_wrtn
寫入該設(shè)備的塊數(shù)。
在一個(gè)擁有很多設(shè)備的系統(tǒng)中,輸出可能需要通過屏幕多次滾動(dòng) — 這使得某些內(nèi)容較難檢查,尤其當(dāng)您查找特定設(shè)備時(shí)更是如此。可以通過將該設(shè)備作為參數(shù)傳遞只獲得特定設(shè)備的指標(biāo)。
# iostat sdaj
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
avg-cpu: %user %nice %sys %iowait %idle
15.71 0.00 1.07 3.30 79.91
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sdaj 1.58 31.93 10.65 282355456 94172401
開始部分顯示的 CPU 指標(biāo)可能沒什么用處。要取消在輸出開始部分顯示的與 CPU 有關(guān)的統(tǒng)計(jì)信息,使用 -d 選項(xiàng)。
可以將可選參數(shù)放在結(jié)尾處,讓 iostat 以固定的時(shí)間間隔顯示設(shè)備統(tǒng)計(jì)信息。要每隔 5 秒獲取一次該設(shè)備的統(tǒng)計(jì)信息,共 10 次,執(zhí)行以下命令:
# iostat -d sdaj 5 10
You can display the stats in kilobytes instead of just bytes using the -k option:
# iostat -k -d sdaj
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdaj 1.58 15.96 5.32 141176880 47085232
盡管以上輸出可能非常有幫助,但很多信息并不容易顯示。例如,磁盤問題的一個(gè)主要原因是磁盤服務(wù)時(shí)間,即,磁盤將數(shù)據(jù)送達(dá)請(qǐng)求該數(shù)據(jù)的進(jìn)程的時(shí)間。要獲得該級(jí)別的指標(biāo),我們需要使用 -x 選項(xiàng)獲得磁盤的“擴(kuò)展”統(tǒng)計(jì)信息。
# iostat -x sdaj
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
avg-cpu: %user %nice %sys %iowait %idle
15.71 0.00 1.07 3.30 79.91
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sdaj 0.00 0.00 1.07 0.51 31.93 10.65 15.96 5.32 27.01 0.01 6.26 6.00 0.95
讓我們看一看這些列的含義:
Device
設(shè)備名稱
rrqm/s
每秒合并的讀請(qǐng)求數(shù)。磁盤請(qǐng)求排成隊(duì)列。只要可能,內(nèi)核就會(huì)嘗試將多個(gè)請(qǐng)求合并成一個(gè)請(qǐng)求。該指標(biāo)測(cè)量讀取傳輸?shù)暮喜⒄?qǐng)求數(shù)。
wrqm/s
與讀取類似,這是合并的寫請(qǐng)求數(shù)。
r/s
每秒向該設(shè)備發(fā)出的讀請(qǐng)求數(shù)
w/s
同樣,它是每秒向該設(shè)備發(fā)出的寫請(qǐng)求數(shù)
rsec/s
每秒從該設(shè)備讀取的扇區(qū)數(shù)
wsec/s
每秒寫入該設(shè)備的扇區(qū)數(shù)
rkB/s
每秒從該設(shè)備讀取的數(shù)據(jù),以 KB/秒為單位
wkB/s
寫入該設(shè)備的數(shù)據(jù),以 kb/s 為單位
avgrq-sz
讀請(qǐng)求的平均大。ㄉ葏^(qū)數(shù))
avgqu-sz
該設(shè)備的請(qǐng)求隊(duì)列的平均長(zhǎng)度
await
設(shè)備發(fā)出 I/O 請(qǐng)求經(jīng)過的平均時(shí)間,以毫秒為單位。這是服務(wù)時(shí)間與隊(duì)列中的等待時(shí)間的總和。
svctm
設(shè)備的平均服務(wù)時(shí)間,以毫秒為單位
%util
設(shè)備的帶寬利用率。如果該值接近于 100%,則表明該設(shè)備已飽和。
它包含大量信息,如何有效地使用這些信息是一個(gè)挑戰(zhàn)。下一部分介紹如何使用輸出。
用法
可以使用這些命令的組合從輸出中獲取一些有意義的信息。記住,在從進(jìn)程獲取請(qǐng)求時(shí)磁盤速度可能很慢。磁盤中的數(shù)據(jù)到達(dá)隊(duì)列所花費(fèi)的時(shí)間稱為服務(wù)時(shí)間。如果您想找出服務(wù)時(shí)間最長(zhǎng)的磁盤,執(zhí)行以下命令:
# iostat -x | sort -nrk13
sdat 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 18.80 0.00 64.06 64.05 0.00
sdv 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 17.16 0.00 18.03 17.64 0.00
sdak 0.00 0.00 0.00 0.14 0.00 1.11 0.00 0.55 8.02 0.00 17.00 17.00 0.24
sdm 0.00 0.00 0.00 0.19 0.01 1.52 0.01 0.76 8.06 0.00 16.78 16.78 0.32
... and so on ...
這表明磁盤 sdat 的服務(wù)時(shí)間最長(zhǎng)(64.05 毫秒)。為什么時(shí)間這么長(zhǎng)呢?可能性很多,但最可能的原因有三個(gè):
該磁盤獲取了大量請(qǐng)求,以至于平均服務(wù)時(shí)間長(zhǎng)。
該磁盤利用已移到可能的最大帶寬。
該磁盤原本速度就很慢。
查看輸出,我們看到讀取數(shù)/秒和寫入數(shù)/秒為 0.00(幾乎沒有發(fā)生任何事件),因此我們可以排除第一種可能性。利用率也為 0.00%(最后一列),因此我們可以排除第二種可能性。這就剩下了第三種可能性。但得出該磁盤原本速度慢的結(jié)論之前,我們需要更加仔細(xì)地觀察該磁盤。我們可以只檢查該磁盤,每隔 5 秒 檢查一次,共 10 次。
# iostat -x sdat 5 10
如果輸出顯示相同的平均服務(wù)時(shí)間、讀取速率和利用率,則可以斷定最有可能是第三種情況。如果這些數(shù)值發(fā)生了變化,我們可以獲取更詳細(xì)的線索來(lái)了解該設(shè)備服務(wù)時(shí)間較長(zhǎng)的原因。
同樣,可以對(duì)讀取速率列進(jìn)行排序,以顯示處于恒定讀取速率下的磁盤。
# iostat -x | sort -nrk6
sdj 0.00 0.00 1.86 0.61 56.78 12.80 28.39 6.40 28.22 0.03 10.69 9.99 2.46
sdah 0.00 0.00 1.66 0.52 50.54 10.94 25.27 5.47 28.17 0.02 10.69 10.00 2.18
sdd 0.00 0.00 1.26 0.48 38.18 11.49 19.09 5.75 28.48 0.01 3.57 3.52 0.61
... and so on ...
該信息可以幫助您查找“熱”磁盤,即進(jìn)行很多讀取或?qū)懭氲拇疟P。如果該磁盤的確“熱”,則應(yīng)確定“熱”的原因;可能是該磁盤上定義的某個(gè)文件系統(tǒng)正在進(jìn)行大量讀取操作。如果是這種情況,則應(yīng)考慮將該文件系統(tǒng)在多個(gè)磁盤之間進(jìn)行條帶化,以分發(fā)負(fù)載,從而最大程度地減小某個(gè)特定磁盤“熱”的可能性。
sar
通過前面的討論,我們發(fā)現(xiàn):獲取實(shí)時(shí)指標(biāo)并不是唯一重要的事情;歷史趨勢(shì)也同等重要。
此外,考慮這樣一種情況:有人多次報(bào)告某個(gè)性能問題,但當(dāng)您進(jìn)行調(diào)查時(shí)發(fā)現(xiàn)一切都回歸正常。如果沒有當(dāng)時(shí)的任何具體數(shù)據(jù),則很難診斷過去出現(xiàn)的性能問題。最后,您將希望檢查過去幾天的性能數(shù)據(jù),以決定某些設(shè)置或進(jìn)行調(diào)整。
sar 實(shí)用程序?qū)崿F(xiàn)了這個(gè)目標(biāo)。sar 代表 System Activity Recorder,它在一個(gè)特殊的位置(/var/log/sa 目錄)記錄 Linux 系統(tǒng)的主要組件(CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等)的指標(biāo)。每天的數(shù)據(jù)記錄在一個(gè)名為 sa 的文件中,其中 是每月中的第 nn 天(兩位數(shù)字)。例如,文件 sa27 包含該月第 27 日的數(shù)據(jù)?梢酝ㄟ^ sar 命令查詢?cè)摂?shù)據(jù)。
使用 sar 的最簡(jiǎn)單方法是不帶任何參數(shù)或選項(xiàng)。示例如下:
# sar
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
12:00:01 AM CPU %user %nice %system %iowait %idle
12:10:01 AM all 14.99 0.00 1.27 2.85 80.89
12:20:01 AM all 14.97 0.00 1.20 2.70 81.13
12:30:01 AM all 15.80 0.00 1.39 3.00 79.81
12:40:01 AM all 10.26 0.00 1.25 3.55 84.93
... and so on ...
輸出顯示在 10 分鐘的間隔內(nèi)收集的與 CPU 有關(guān)的指標(biāo)。這些列的含義如下:
CPU
CPU 標(biāo)識(shí)符;“all”表示所有 CPU
%user
用戶進(jìn)程使用的 CPU 百分比。Oracle 進(jìn)程屬于這一類。
%nice
在 nice 優(yōu)先級(jí)下執(zhí)行的 CPU 利用率百分比
%system
執(zhí)行系統(tǒng)進(jìn)程的 CPU 百分比
%iowait
等待進(jìn)行 I/O 操作的 CPU 百分比
%idle
等待工作的 CPU 空閑百分比
從以上輸出,您可能以為系統(tǒng)已經(jīng)得到了很好的平衡;但實(shí)際上是嚴(yán)重利用不足(從較高的空閑百分比可以看出)。進(jìn)一步查看輸出,我們看到以下內(nèi)容:
... continued from above ...
03:00:01 AM CPU %user %nice %system %iowait %idle
03:10:01 AM all 44.99 0.00 1.27 2.85 40.89
03:20:01 AM all 44.97 0.00 1.20 2.70 41.13
03:30:01 AM all 45.80 0.00 1.39 3.00 39.81
03:40:01 AM all 40.26 0.00 1.25 3.55 44.93
... and so on ...
這告訴我們另外一回事:在 3:00 和 3:40 之間某些用戶進(jìn)程加載了該系統(tǒng)?赡苁窃趫(zhí)行開銷比較大的查詢,也可能是正在運(yùn)行某個(gè) RMAN 作業(yè),從而消耗了這么多 CPU。這就是 sar 命令非常有用之處,該命令重放記錄的數(shù)據(jù),顯示從某個(gè)特定時(shí)間起而不是現(xiàn)在的數(shù)據(jù)。這樣您就完全實(shí)現(xiàn)了在該部分開頭所述的三個(gè)目標(biāo):獲取歷史數(shù)據(jù)、查找使用模式以及了解趨勢(shì)。
如果您想查看特定日期的 sar 數(shù)據(jù),只需使用下面所示的 -f 選項(xiàng)打開具有該文件名的 sar(打開第 26 日的數(shù)據(jù))
# sar -f /var/log/sa/sa26
與 vmstat 或 mpstat 一樣,該命令還可以顯示實(shí)時(shí)數(shù)據(jù)。要每隔 5 秒獲取一次數(shù)據(jù),共 10 次,請(qǐng)使用:
# sar 5 10
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
01:39:16 PM CPU %user %nice %system %iowait %idle
01:39:21 PM all 20.32 0.00 0.18 1.00 78.50
01:39:26 PM all 23.28 0.00 0.20 0.45 76.08
01:39:31 PM all 29.45 0.00 0.27 1.45 68.83
01:39:36 PM all 16.32 0.00 0.20 1.55 81.93
… and so on 10 times …
您注意到 CPU 下的“all”值了嗎?它意味著是所有 CPU 的總計(jì)統(tǒng)計(jì)信息。這比較適合單處理器系統(tǒng),但在多處理器系統(tǒng)中,您可能希望獲取各個(gè) CPU 的統(tǒng)計(jì)信息以及總計(jì)統(tǒng)計(jì)信息。-P ALL 選項(xiàng)可以實(shí)現(xiàn)該目標(biāo)。
#sar -P ALL 2 2
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
01:45:12 PM CPU %user %nice %system %iowait %idle
01:45:14 PM all 22.31 0.00 10.19 0.69 66.81
01:45:14 PM 0 8.00 0.00 24.00 0.00 68.00
01:45:14 PM 1 99.00 0.00 1.00 0.00 0.00
01:45:14 PM 2 6.03 0.00 18.59 0.50 74.87
01:45:14 PM 3 3.50 0.00 8.50 0.00 88.00
01:45:14 PM 4 4.50 0.00 14.00 0.00 81.50
01:45:14 PM 5 54.50 0.00 6.00 0.00 39.50
01:45:14 PM 6 2.96 0.00 7.39 2.96 86.70
01:45:14 PM 7 0.50 0.00 2.00 2.00 95.50
01:45:14 PM CPU %user %nice %system %iowait %idle
01:45:16 PM all 18.98 0.00 7.05 0.19 73.78
01:45:16 PM 0 1.00 0.00 31.00 0.00 68.00
01:45:16 PM 1 37.00 0.00 5.50 0.00 57.50
01:45:16 PM 2 13.50 0.00 19.00 0.00 67.50
01:45:16 PM 3 0.00 0.00 0.00 0.00 100.00
01:45:16 PM 4 0.00 0.00 0.50 0.00 99.50
01:45:16 PM 5 99.00 0.00 1.00 0.00 0.00
01:45:16 PM 6 0.50 0.00 0.00 0.00 99.50
01:45:16 PM 7 0.00 0.00 0.00 1.49 98.51
Average: CPU %user %nice %system %iowait %idle
Average: all 20.64 0.00 8.62 0.44 70.30
Average: 0 4.50 0.00 27.50 0.00 68.00
Average: 1 68.00 0.00 3.25 0.00 28.75
Average: 2 9.77 0.00 18.80 0.25 71.18
Average: 3 1.75 0.00 4.25 0.00 94.00
Average: 4 2.25 0.00 7.25 0.00 90.50
Average: 5 76.81 0.00 3.49 0.00 19.70
Average: 6 1.74 0.00 3.73 1.49 93.03
Average: 7 0.25 0.00 1.00 1.75 97.01
這表示 CPU 標(biāo)識(shí)符(以 0 開頭)以及每個(gè) CPU 的統(tǒng)計(jì)信息。在輸出的結(jié)尾處,您將看到每個(gè) CPU 的平均運(yùn)行情況。
命令 sar 不僅用于獲取與 CPU 有關(guān)的統(tǒng)計(jì)信息。對(duì)于獲取與內(nèi)存有關(guān)的統(tǒng)計(jì)信息也非常有用。-r 選項(xiàng)顯示大量利用內(nèi)存的情況。
# sar -r
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
12:10:01 AM 712264 32178920 97.83 2923884 25430452 16681300 95908 0.57 380
12:20:01 AM 659088 32232096 98.00 2923884 25430968 16681300 95908 0.57 380
12:30:01 AM 651416 32239768 98.02 2923920 25431448 16681300 95908 0.57 380
12:40:01 AM 651840 32239344 98.02 2923920 25430416 16681300 95908 0.57 380
12:50:01 AM 700696 32190488 97.87 2923920 25430416 16681300 95908 0.57 380
讓我們看一看每個(gè)列的含義:
kbmemfree
此時(shí)可用內(nèi)存的數(shù)量,以 KB 為單位
kbmemused
此時(shí)已使用的內(nèi)存數(shù)量,以 KB 為單位
%memused
已使用內(nèi)存的百分比
kbbuffers
用作緩沖區(qū)的內(nèi)存百分比
kbcached
用作緩存的內(nèi)存百分比
kbswpfree
此時(shí)可用交換區(qū)空間的大小,以 KB 為單位
kbswpused
此時(shí)已使用的交換空間大小,以 KB 為單位
%swpused
此時(shí)已使用交換區(qū)的百分比
kbswpcad
此時(shí)緩存的交換區(qū)大小,以 KB 為單位
在輸出的結(jié)尾處,您將看到該時(shí)間段內(nèi)的平均數(shù)字。
還可以獲取與特定內(nèi)存有關(guān)的統(tǒng)計(jì)信息。-B 選項(xiàng)顯示與分頁(yè)有關(guān)的活動(dòng)。
# sar -B
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
12:00:01 AM pgpgin/s pgpgout/s fault/s majflt/s
12:10:01 AM 134.43 256.63 8716.33 0.00
12:20:01 AM 122.05 181.48 8652.17 0.00
12:30:01 AM 129.05 253.53 8347.93 0.00
... and so on ...
該列顯示當(dāng)時(shí) 而不是現(xiàn)在的指標(biāo)。
pgpgin/s
每秒從磁盤分到內(nèi)存中的頁(yè)面數(shù)
pgpgout/s
每秒從內(nèi)存分到磁盤的頁(yè)面數(shù)
fault/s
每秒的頁(yè)面故障數(shù)
majflt/s
每秒的主要頁(yè)面故障數(shù)
要獲得與交換有關(guān)活動(dòng)的類似輸出,可以使用 -W 選項(xiàng)。
# sar -W
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
12:00:01 AM pswpin/s pswpout/s
12:10:01 AM 0.00 0.00
12:20:01 AM 0.00 0.00
12:30:01 AM 0.00 0.00
12:40:01 AM 0.00 0.00
... and so on ...
盡管這些列可能無(wú)需加以說明,下面還是提供了每列的說明:
pswpin/s
每秒從磁盤交換回內(nèi)存的內(nèi)存頁(yè)數(shù)
pswpout/s
每秒從內(nèi)存交換到磁盤的內(nèi)存頁(yè)數(shù)
如果您看到交換很多,則表示可能有內(nèi)存不足問題。這不是定論,而是出現(xiàn)問題的可能性比較大。
要獲得磁盤設(shè)備的統(tǒng)計(jì),請(qǐng)使用 -d 選項(xiàng):
# sar -d
Linux 2.6.9-55.0.9.ELlargesmp (prolin3) 12/27/2008
12:00:01 AM DEV tps rd_sec/s wr_sec/s
12:10:01 AM dev1-0 0.00 0.00 0.00
12:10:01 AM dev1-1 5.12 0.00 219.61
12:10:01 AM dev1-2 3.04 42.47 22.20
12:10:01 AM dev1-3 0.18 1.68 1.41
12:10:01 AM dev1-4 1.67 18.94 15.19
... and so on ...
Average: dev8-48 4.48 100.64 22.15
Average: dev8-64 0.00 0.00 0.00
Average: dev8-80 2.00 47.82 5.37
Average: dev8-96 0.00 0.00 0.00
Average: dev8-112 2.22 49.22 12.08
下面是對(duì)各列的說明。同樣,它們也表示當(dāng)時(shí)的指標(biāo)。
tps
每秒進(jìn)行的傳輸數(shù)。傳輸數(shù)就是 I/O 操作數(shù)。注:這只是操作數(shù)量,每個(gè)操作可能很大,也可能很小。因此,單獨(dú)這個(gè)并不能說明全部問題。
rd_sec/s
每秒從磁盤讀取的扇區(qū)數(shù)
wr_sec/s
每秒寫入磁盤的扇區(qū)數(shù)
要獲得歷史網(wǎng)絡(luò)統(tǒng)計(jì)信息,使用 -n 選項(xiàng):
# sar -n DEV | more
Linux 2.6.9-42.0.3.ELlargesmp (prolin3) 12/27/2008
12:00:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
12:10:01 AM lo 4.54 4.54 782.08 782.08 0.00 0.00 0.00
12:10:01 AM eth0 2.70 0.00 243.24 0.00 0.00 0.00 0.99
12:10:01 AM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM eth3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM eth4 143.79 141.14 73032.72 38273.59 0.00 0.00 0.99
12:10:01 AM eth5 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM eth6 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM eth7 0.00 0.00 0.00 0.00 0.00 0.00 0.00
12:10:01 AM bond0 146.49 141.14 73275.96 38273.59 0.00 0.00 1.98
… and so on …
Average: bond0 128.73 121.81 85529.98 27838.44 0.00 0.00 1.98
Average: eth8 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth9 3.52 6.74 251.63 10179.83 0.00 0.00 0.00
Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
總而言之,使用 sar 命令的這些選項(xiàng)可以獲得組件的指標(biāo):
使用該選項(xiàng) …
… 獲得有關(guān)以下組件的統(tǒng)計(jì)信息:
-P
特定 CPU
-d
磁盤
-r
內(nèi)存
-B
分頁(yè)
-W
交換
-n
網(wǎng)絡(luò)
是否希望在一個(gè)輸出中獲得所有可用的統(tǒng)計(jì)信息?不必使用所有這些選項(xiàng)調(diào)用 sar,您可以改用 -A 選項(xiàng),該選項(xiàng)顯示存儲(chǔ)在 sar 文件中的所有統(tǒng)計(jì)信息。
結(jié)論
總之,使用這些有限的命令集,可以處理與 Linux 環(huán)境中的資源管理有關(guān)的大多數(shù)任務(wù)。建議在您的環(huán)境中練習(xí)這些方法,以使您自己熟悉這些命令以及此處所述的選項(xiàng)。
在接下來(lái)的部分中,您將了解如何監(jiān)視和管理網(wǎng)絡(luò)。還將了解幫助您管理 Linux 環(huán)境的各種命令:發(fā)現(xiàn)誰(shuí)已經(jīng)登錄、設(shè)置 shell 配置文件、使用 cpio 和 tar 進(jìn)行備份等等。
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/26329/showart_1966291.html |
|