歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> solaris的sar命令(三) 如何檢查頁出和內存 (sar -g)

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

日期:2017/3/3 15:21:37   编辑:Unix基礎知識

如何檢查頁出和內存 (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