Solaris記憶體監控(轉)

BSDLite發表於2007-08-17
Solaris記憶體監控(轉)[@more@]Solaris記憶體主要用在以下幾個方面:核心,程式,檔案系統快取。如下是監控記憶體使用的方法。

可用系統實體記憶體

分配給Solaris核心的記憶體數量

檔案系統快取使用的記憶體數量

程式使用的記憶體數量

系統剩餘的記憶體數量

Total Physical Memory

使用prtconf命令,察看系統實體記憶體數量。

prtconf | head -2

System Configuration: Sun Microsystems sun4u

Memory size: 49152 Megabytes

Kernel Memory

使用sar –k察看系統核心佔用的記憶體,如下3個記憶體池之和即是,單位byte

sar -k 1 1

SunOS lonespappb33 5.8 Generic_117350-13 sun4u 11/28/05

05:39:26 sml_mem alloc fail lg_mem alloc fail ovsz_alloc fail

05:39:28 483386752 202156800 0 4400701440 2886180864 0 656105472 0

File System Caching Memory

檔案系統快取使用系統可用的剩餘記憶體快取檔案。在Solaris上,可用的剩餘記憶體(free memory)大部分情況下總是接近0;Solaris8之前,vmstat 顯示的free列表示可用的剩餘記憶體,往往在系統啟動(booted)的時候很高,隨著系統執行慢慢降低為0,這是正常的,因為檔案系統快取的設計目的就是最大化利用系統可用記憶體來快取最經常訪問的檔案。

在Solaris8中,vmstat 顯示的free是系統可用的剩餘記憶體(free memory)和可pageable的檔案系統快取(file system cache memory),man的解釋:free size of the free list (Kbytes) 。檔案系統快取也掛在記憶體Free List上。

vmstat 1 5

procs memory page disk faults cpu

r b w swap free re mf pi po fr de sr s0 s1 s2 s3 in sy cs us sy id

0 1 0 62618064 33156520 5220 0 1144 0 0 0 0 0 1 0 0 8093 47291 1895 9 7 85

如上Solaris 8,vmstat 結果表示,檔案系統快取佔用了將近33156520k記憶體。

Free Memory

由於檔案系統快取總是儘量利用可用的剩餘記憶體快取檔案,因此大部分情況下Free memory總是接近0.

Memory Shortage Detection

系統執行時會不斷的page in page out;繁忙的paging操作,可導致Page Scaner執行頻繁,因此伴隨有較高的scan-rage(sr)和page-out(po);這可以作為系統繁忙paging 的表示。

如果有程式被swap(w>0),則通常表示記憶體短缺,這時候往往swap裝置的IO比較繁忙。

Swap Space

Solaris 交換空間(swap space)有2個重要的狀態:保留(swap reservation)和分配(physical swap allocation).

保留(swap reservation)是指Process建立segment的時候,系統分配給Process虛擬的記憶體地址空間(virtual memory address space),同時為了保證該segment以後可以被page out到swap,分配給Process與該segment同樣大小的虛擬交換空間(virtual swap space).

例如,process建立一個100M的segment,系統會分配給該process100M的virtual memory address space,但不會分配給process實體記憶體(physical memory);同時在Swap space中預先保留(reservation)100M虛擬交換空間(virtual swap space).

分配(physical swap allocation)是指segment driver給process segment分配實體記憶體時,預先為swap reservation區分配同樣大小的物理交換空間(physical swap space),用來page-out.

例如,process在已有100M的virtual memory address space基礎上,透過trap/page-fault/zero-fill-on-demand分配到10M的實體記憶體;同時會為預先保留(reservation)的100M虛擬交換空間(virtual swap space)分配10M物理swap space.

Virtual Swap Space

系統虛擬交換空間的數量為物理磁碟交換空間大小(disk swap space)+Solaris在記憶體中分配的交換空間大小(memory swap space).使用swap –s察看虛擬交換空間資訊。

$ swap -s

total: 929688k bytes allocated + 57408k reserved = 987096k used, 17715000k available

Physical Swap Space

系統物理交換空間的數量為/etc/vfstab中配置的磁碟交換空間大小。使用swap –l察看。

$ swap -l

swapfile dev swaplo blocks free

/dev/vx/dsk/swapvol 230,6 16 25165808 25165808

必須確保swap –s和swap –l 的available & free 非0,否則將無法分配虛擬交換記憶體或者物理交換記憶體;

此時,Oracle通常會遇見ORA-4030和ORA-12500錯誤。

可計算memory swap space: 987,096k+17,715,000k-25165808/2k=6,119,192k

Process Memory Usage , ps, and pmap

程式的記憶體也可分為2種,虛擬記憶體使用和實體記憶體使用。程式虛擬記憶體是指已經分配給程式的虛擬地址空間(virtual address space);實體記憶體是指分配給程式的真實的實體記憶體(real physical memory pages)數量。

Ps的vsz表示虛擬記憶體,rss表示實體記憶體

$ ps -opid,vsz,rss,args

PID VSZ RSS COMMAND

27495 1912 1016 –ksh

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-963011/,如需轉載,請註明出處,否則將追究法律責任。

相關文章