solaris的sar命令(三)

如何檢查頁出和內存 (sar -g)

使用 sar -g 命令可顯示平均頁出和內存釋放活動。$ sar -g00:00:00  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf01:00:00     0.00     0.00     0.00     0.00     0.00sar -g 命令的輸出能夠明確指示是否須要更多內存。使用 ps -elf 命令顯示 page 守護程序使用的週期數。若是週期數很大,而且 pgfree/s 和 pgscan/s 字段的值也很大,則代表內存不足。sar -g 命令還可代表是否回收 inode 的速率過快而引發可重用頁丟失。
示例 13–8 檢查頁出和內存 (sar -g)

如下示例顯示 sar -g 命令的輸出。node


$ sar -gSunOS balmyday 5.10 s10_51 sun4u    03/18/200400:00:00  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf01:00:00     0.00     0.00     0.00     0.00     0.0002:00:00     0.01     0.01     0.01     0.00     0.0003:00:00     0.00     0.00     0.00     0.00     0.0004:00:00     0.00     0.00     0.00     0.00     0.0005:00:00     0.00     0.00     0.00     0.00     0.0006:00:00     0.00     0.00     0.00     0.00     0.0007:00:00     0.00     0.00     0.00     0.00     0.0008:00:00     0.00     0.00     0.00     0.00     0.0008:20:01     0.00     0.00     0.00     0.00     0.0008:40:00     0.00     0.00     0.00     0.00     0.0009:00:00     0.00     0.00     0.00     0.00     0.0009:20:01     0.05     0.52     1.62    10.16     0.0009:40:01     0.03     0.44     1.47     4.77     0.0010:00:02     0.13     2.00     4.38    12.28     0.0010:20:03     0.37     4.68    12.26    33.80     0.00Average      0.02     0.25     0.64     1.97     0.00

下表介紹了 -g 選項的輸出。oracle

字段名 ide

說明 spa

pgout/s視頻

每秒的頁出請求數。 教程

ppgout/s進程

每秒調出的頁的實際數量。單個頁出請求可能涉及多個頁的調出。 事件

pgfree/sip

每秒放置在可用列表中的頁數。 內存

pgscan/s

page 守護程序每秒掃描的頁數。若是此值很大,則代表 page 守護程序花費大量時間來檢查可用內存。此狀況暗示,可能須要更多內存。

%ufs_ipf

具備關聯的可重用頁的 iget 從可用列表中取消的 ufs inode 的百分比。這些頁面被刷新,而且不能由進程回收。所以,此字段表示具備頁面刷新的 igets 的百分比。若是該值很大,則代表 inode 的可用列表頁面密集,而且可能須要增長 ufs inode 的數量。

檢查內核內存分配

KMA 容許內核子系統根據須要分配和釋放內存。

KMA 並非靜態分配在峯值載荷下預計所需的最大內存量,而是將內存請求劃分爲三個類別:

  • 小型(少於 256 字節)

  • 大型(512 字節至 4 千字節)

  • 超大型(大於 4 千字節)

KMA 保留兩個內存池,以知足小型和大型請求。超大型請求則經過從系統頁面分配器中分配內存來知足。

若是您所檢查的系統用來編寫使用 KMA 資源的驅動程序或 STREAMS,則 sar -k 命令可能頗有用。不然,您可能不須要它所提供的信息。使用 KMA 資源但不必定在退出前返回資源的全部驅動程序或模塊均可能產生內存泄漏。內存泄漏會致使 KMA 分配的內存量隨事件而增長。所以,若是 sar -k 命令的 alloc 字段隨時間穩定增長,則可能存在內存泄漏。代表存在內存泄漏的另外一種狀況是請求失敗。若是出現此問題,內存泄漏極可能致使 KMA 沒法保留和分配內存。

若是彷佛存在內存泄漏,則應檢查可能從 KMA 請求內存但未返回內存的全部驅動程序或 STREAMS。

如何檢查內核內存分配 (sar -k)

使用 sar -k 命令可報告內核內存分配器 (Kernel Memory Allocator, KMA) 的如下活動。$ sar -k00:00:00 sml_mem   alloc  fail  lg_mem   alloc   fail  ovsz_alloc  fail01:00:00 2523136 1866512     0 18939904 14762364    0      360448     002:00:02 2523136 1861724     0 18939904 14778748    0      360448     0
示例 13–9 檢查內核內存分配 (sar -k)

下面是 sar -k 輸出的縮寫示例。


$ sar -kSunOS balmyday 5.10 s10_51 sun4u    03/18/200400:00:04 sml_mem   alloc  fail  lg_mem   alloc  fail  ovsz_alloc  fail01:00:00 6119744 4852865     0 60243968 54334808   156     9666560     002:00:01 6119744 4853057     0 60243968 54336088   156     9666560     003:00:00 6119744 4853297     0 60243968 54335760   156     9666560     004:00:00 6119744 4857673     0 60252160 54375280   156     9666560     005:00:00 6119744 4858097     0 60252160 54376240   156     9666560     006:00:00 6119744 4858289     0 60252160 54375608   156     9666560     007:00:00 6119744 4858793     0 60252160 54442424   156     9666560     008:00:00 6119744 4858985     0 60252160 54474552   156     9666560     008:20:00 6119744 4858169     0 60252160 54377400   156     9666560     008:40:01 6119744 4857345     0 60252160 54376880   156     9666560     009:00:00 6119744 4859433     0 60252160 54539752   156     9666560     009:20:00 6119744 4858633     0 60252160 54410920   156     9666560     009:40:00 6127936 5262064     0 60530688 55619816   156     9666560     010:00:00 6545728 5823137     0 62996480 58391136   156     9666560     010:20:00 6545728 5758997     0 62996480 57907400   156     9666560     010:40:00 6734144 6035759     0 64389120 59743064   156    10493952     011:00:00 6996288 6394872     0 65437696 60935936   156    10493952     0Average  6258044 5150556     0 61138340 55609004   156     9763900     0

下表介紹了 -k 選項的輸出。

字段名

說明

sml_mem

KMA 在小型內存請求池中可用的內存量,以字節爲單位。在此池中,小型請求小於 256 字節。

alloc

KMA 已從其小型內存請求池向小型內存請求分配的內存量,以字節爲單位。

fail

請求少許內存並失敗的請求數。

lg_mem

KMA 在大型內存請求池中可用的內存量,以字節爲單位。在此池中,大型請求介於 512 字節到 4 千字節之間。

alloc

KMA 已從其大型內存請求池向大型內存請求分配的內存量,以字節爲單位。

fail

請求大量內存並失敗的請求數。

ovsz_alloc

爲大於 4 千字節的超大型請求分配的內存量。這些請求可經過頁面分配器來知足。所以,不存在池。

fail

因請求超大量內存而失敗的請求數。


oracle視頻教程請關注:http://down.51cto.com/4202939/up

相關文章
相關標籤/搜索