天天看點

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 指令的輸出。

$ 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 選項的輸出。

字段名 說明
pgout/s 每秒的頁出請求數。
ppgout/s 每秒調出的頁的實際數量。單個頁出請求可能涉及多個頁的調出。
pgfree/s 每秒放置在可用清單中的頁數。
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 千位元組之間。
KMA 已從其大型記憶體請求池向大型記憶體請求配置設定的記憶體量,以位元組為機關。
請求大量記憶體并失敗的請求數。
ovsz_alloc 為大于 4 千位元組的超大型請求配置設定的記憶體量。這些請求可通過頁面配置設定器來滿足。是以,不存在池。