歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix基礎知識

solaris的sar命令(三) 如何檢查頁出和內存 (sar -g)

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

   使用 sar -g 命令可顯示平均頁出和內存釋放活動。

   $ sar -g
   00:00:00  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
   01:00:00     0.00     0.00     0.00     0.00     0.00

   sar -g 命令的輸出可以明確指示是否需要更多內存。使用 ps -elf 命令顯示 page 守護程序使用的周期數。如果周期數很大,並且 pgfree/s 和 pgscan/s 字段的值也很大,則表明內存不足。
   sar -g 命令還可表明是否回收 inode 的速率過快而引起可重用頁丟失。

示例 13–8 檢查頁出和內存 (sar -g)

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

$ sar -g
SunOS balmyday 5.10 s10_51 sun4u    03/18/2004
00:00:00  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
01:00:00     0.00     0.00     0.00     0.00     0.00
02:00:00     0.01     0.01     0.01     0.00     0.00
03:00:00     0.00     0.00     0.00     0.00     0.00
04:00:00     0.00     0.00     0.00     0.00     0.00
05:00:00     0.00     0.00     0.00     0.00     0.00
06:00:00     0.00     0.00     0.00     0.00     0.00
07:00:00     0.00     0.00     0.00     0.00     0.00
08:00:00     0.00     0.00     0.00     0.00     0.00
08:20:01     0.00     0.00     0.00     0.00     0.00
08:40:00     0.00     0.00     0.00     0.00     0.00
09:00:00     0.00     0.00     0.00     0.00     0.00
09:20:01     0.05     0.52     1.62    10.16     0.00
09:40:01     0.03     0.44     1.47     4.77     0.00
10:00:02     0.13     2.00     4.38    12.28     0.00
10:20:03     0.37     4.68    12.26    33.80     0.00
Average      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 的數量。

查看本欄目更多精彩內容:http://www.bianceng.cn/OS/unix/

檢查內核內存分配
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 -k
   00:00:00 sml_mem   alloc  fail  lg_mem   alloc   fail  ovsz_alloc  fail
   01:00:00 2523136 1866512     0 18939904 14762364    0      360448     0
   02:00:02 2523136 1861724     0 18939904 14778748    0      360448     0

示例 13–9 檢查內核內存分配 (sar -k)

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

$ sar -k
SunOS balmyday 5.10 s10_51 sun4u    03/18/2004
00:00:04 sml_mem   alloc  fail  lg_mem   alloc  fail  ovsz_alloc  fail
01:00:00 6119744 4852865     0 60243968 54334808   156     9666560     0
02:00:01 6119744 4853057     0 60243968 54336088   156     9666560     0
03:00:00 6119744 4853297     0 60243968 54335760   156     9666560     0
04:00:00 6119744 4857673     0 60252160 54375280   156     9666560     0
05:00:00 6119744 4858097     0 60252160 54376240   156     9666560     0
06:00:00 6119744 4858289     0 60252160 54375608   156     9666560     0
07:00:00 6119744 4858793     0 60252160 54442424   156     9666560     0
08:00:00 6119744 4858985     0 60252160 54474552   156     9666560     0
08:20:00 6119744 4858169     0 60252160 54377400   156     9666560     0
08:40:01 6119744 4857345     0 60252160 54376880   156     9666560     0
09:00:00 6119744 4859433     0 60252160 54539752   156     9666560     0
09:20:00 6119744 4858633     0 60252160 54410920   156     9666560     0
09:40:00 6127936 5262064     0 60530688 55619816   156     9666560     0
10:00:00 6545728 5823137     0 62996480 58391136   156     9666560     0
10:20:00 6545728 5758997     0 62996480 57907400   156     9666560     0
10:40:00 6734144 6035759     0 64389120 59743064   156    10493952     0
11:00:00 6996288 6394872     0 65437696 60935936   156    10493952     0
Average  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 因請求超大量內存而失敗的請求數。
Copyright © Linux教程網 All Rights Reserved