watacii

导航

linux内存学习

1.vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0 750568 298464 232836 1440800    1    1     4     5    5   18  4  7 87  1

vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa
 3  0 748720 261968 1347780 1250832    1    1     4     5    6   19  4  7 87  1

procs:

r:The number of processes waiting for run time.

b:The number of processes in uninterruptible sleep.

Memory:

swpd:the amount of swapped memory used. =/proc/meminfo中的Swaptotal -Swapfree.

free:the amount of idle memory.=/proc/meminfo中的Memfree

buffer:the amount of memory used as buffers.

cache:the amount of memory used as cache.

inact:the amount of  inactive memory.

active:the amount of active memory.

swap:

si: Amount of memory swapped in from disk (/s).单位为KB

so:Amount of memory swapped to disk (/s).

IO:

bi:Blocks received from a block device (blocks/s).

bo:Blocks sent to a block device (blocks/s).

system:

in: The number of interrupts per second, including the clock.

cs: The number of context switches per second.

CPU:

us:Time spent running non-kernel code.(user time , including the clock)

sy:Time spent running kernel code.(system time)

id:Time spent idle.Prior to Linux 2.5.41, this includes IO-wait time.

wa:Time spent waiting for IO.Prior to Linux 2.5.41, included in idle.

st:Time stolen from a virtual machine.Prior to Linux 2.6.11, unkown.

2.free

 free
             total       used       free     shared    buffers     cached
Mem:       4081868    3833076     248792          0     200816    1575716
-/+ buffers/cache:    2056544    2025324
Swap:      4094972     740156    3354816

total:总计物理内存的大小

used:已使用多大.

free:可用有多少.

shared:多个进程共享内存总额.

Buffers/cached:磁盘缓存的大小.

这里着重讲一下mem的used/free与-/+ buffers/cache的used/free的区别.它们的区别主要是从观察的角度来看:

mem是从OS的角度,对于OS,buffers/cached都属于被使用,所以可用内存是248792KB,已用内存是3833076  KB,其中包括内核使用+Application(X,postgres,etc) 使用的+buffers+cached;

-/+ buffers/cache是从应用程序的角度:可用内存=系统free memory+buffers+cached.上例中free2025324=248792+200816+1575716

所以机器的物理内存free的值很小,这是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用.但实际这些内存也可以直接拿来使用的.

3./proc/下的东东

(1)/proc/meminfo

MemTotal:        4081868 kB ---total usable physical ram
MemFree:          191436 kB ---sum of LowFree and High Free of physical ram.
Buffers:          300408 kB---The amount of physical RAM used for file buffers
Cached:          1522444 kB---The amount of physical RAM used as cache memory
SwapCached:       170456 kB---The amount of swap used as cache memory.The swap cache is similar in concept to the page cache.
Active:          1317960 kB---total amount of buffer or page cache memory that is in active use.
Inactive:        1354336 kB---total amount of buffer or page cache memory that are free and available.
Active(anon):     409912 kB
Inactive(anon):   441508 kB
Active(file):     908048 kB
Inactive(file):   912828 kB
Unevictable:          16 kB
Mlocked:              16 kB
HighTotal:       3237336 kB---total and free amount of memory that is not directly mapped into kernel space
HighFree:          94236 kB
LowTotal:         844532 kB---total and free amount of memory that is directly mapped into kernel space
LowFree:           97200 kB
SwapTotal:       4094972 kB---total amount of swap available.
SwapFree:        3352716 kB---total amount of swap free.
Dirty:              3856 kB---total amount of memory, waiting to be written back to the disk.
Writeback:             0 kB---total amount of memory actively being written back to the disk.
AnonPages:        775216 kB
Mapped:          1128872 kB---The total amount of memory, which have been used to map devices, files, or libraries using the mmap command.All "Mapped:" memory is "Cached", but not all "Cached:" memory is "Mapped:". The first time the mmap area is acessed, the page will be brought in from the disk and mapped into memory.
Shmem:              1976 kB
Slab:             134180 kB---total amount of memory used by the kernel to cache data structures for its own use.
SReclaimable:     108112 kB---the recliamable memory of slab.
SUnreclaim:        26068 kB
KernelStack:        4552 kB
PageTables:        15876 kB---the total amount of memory dedicated to the lowest page table level.管理内存分页页面的索引表的大小.
NFS_Unstable:          0 kB---不稳定页表的大小.
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6135904 kB---based on the overcommit ratio('vm.overcommit_ratio'),this is the total amount of memory currently available to be allocated on the system.This limit is only adhered to if strict overcommit acounting is enabled(mode 2 in 'vm.overcommit_memory').The Commit limit is calculated with the following formula:CommitLimit=('vm.overcommit_ratio'*Physical RAM)+Swap.
Committed_AS:    5440204 kB---the total amount of memory estimated to complete the workload.This value represents the worst case scennario value, and also includes swap memory.
VmallocTotal:     122880 kB---the total amount of memory of total allocated virtual address space.
VmallocUsed:       86444 kB---the total amount of memory of used virtual address space.
VmallocChunk:      17432 kB---the largetst contiguous block of memory of avalible virtual address space.
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0---the total number of hugepages for the system.
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB---the size for each hugepages .4096KB on uniprocessor kernels for 32 bit architectures.For SMP, hugemem kenels, and AMD64, the default is 2048 KB.
DirectMap4k:      206840 kB
DirectMap2M:      706560 kB

(2)/proc/pid/maps 进程所占用的虚拟地址

cat  /proc/1164/maps
08048000-08375000 r-xp 00000000 fd:01 873683     /usr/local/pgsql/bin/postgres
08375000-0837e000 rw-p 0032c000 fd:01 873683     /usr/local/pgsql/bin/postgres
0837e000-083e7000 rw-p 0837e000 00:00 0          [heap]
5dd2a000-7769c000 rw-s 00000000 00:08 16089088   /SYSV0052e2c1 (deleted)
7769c000-776a4000 r-xp 00000000 fd:00 36924      /lib/libnss_files.so.2
776a4000-776a6000 rw-p 00007000 fd:00 36924      /lib/libnss_files.so.2
776a6000-776b7000 r-xp 00000000 fd:00 36916      /lib/libnsl.so.1
776b7000-776b9000 rw-p 00010000 fd:00 36916      /lib/libnsl.so.1
776b9000-776bb000 rw-p 776b9000 00:00 0
776bb000-776c1000 r-xp 00000000 fd:00 36888      /lib/libnss_compat.so.2
776c1000-776c3000 rw-p 00006000 fd:00 36888      /lib/libnss_compat.so.2
776c3000-776c4000 rw-p 776c3000 00:00 0
776c4000-777d2000 r-xp 00000000 fd:00 36920      /lib/libc.so.6
777d2000-777d3000 r--p 0010e000 fd:00 36920      /lib/libc.so.6
777d3000-777d6000 rw-p 0010f000 fd:00 36920      /lib/libc.so.6
777d6000-777d8000 rw-p 777d6000 00:00 0
777d8000-777f8000 r-xp 00000000 fd:00 36903      /lib/libm.so.6
777f8000-777fa000 rw-p 00020000 fd:00 36903      /lib/libm.so.6
777fa000-777fc000 r-xp 00000000 fd:00 36904      /lib/libdl.so.2
777fc000-777fe000 rw-p 00001000 fd:00 36904      /lib/libdl.so.2
777fe000-77802000 r-xp 00000000 fd:00 36885      /lib/libcrypt.so.1
77802000-77804000 rw-p 00004000 fd:00 36885      /lib/libcrypt.so.1
77804000-7782c000 rw-p 77804000 00:00 0
7782e000-77843000 r-xp 00000000 fd:00 36894      /lib/ld-linux.so.2
77843000-77844000 r--p 00014000 fd:00 36894      /lib/ld-linux.so.2
77844000-77845000 rw-p 00015000 fd:00 36894      /lib/ld-linux.so.2
7f896000-7f8ab000 rw-p 7ffeb000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]

(3)/proc/pid/statm 进程所占用的虚拟内存

cat  /proc/1164/statm
106189 3902 3824 813 0 171 0

man 5 proc,搜statm,provides infomation about memory usage, measured in pages.

size       total program size(same as VmSize in /proc/[pid]/status)

used     resident set size(same as VmRSS in /proc/[pid]/status)常驻内存空间页大小

shared   shared pages(from shared mappings)

text      text(code)    (same as exe in /proc/[pid]/status)

lib     library(unused in Linux 2.6q)(same as vmLib in /proc/[pid]/status)

data    data+stack(same as vmData+vmStack in /proc/[pid]/status)

dt     dirty pages(unused in Linux 2.6)

(4)/proc/pid/status

 cat /proc/1164/status
Name:    postgres
State:    S (sleeping)
Tgid:    1164
Pid:    1164
PPid:    1
TracerPid:    0
Uid:    70    70    70    70
Gid:    70    70    70    70
FDSize:    1024
Groups:    70
VmPeak:      424760 kB
VmSize:      424756 kB
VmLck:           0 kB
VmHWM:       17056 kB
VmRSS:       15608 kB
VmData:         600 kB
VmStk:          84 kB
VmExe:        3252 kB
VmLib:        1440 kB
VmPTE:          60 kB
Threads:    1
SigQ:    0/69632
SigPnd:    0000000000000000
ShdPnd:    0000000000000000
SigBlk:    0000000000000000
SigIgn:    0000000001303000
SigCgt:    0000000000014a07
CapInh:    00000000fffffeff
CapPrm:    0000000000000000
CapEff:    0000000000000000
CapBnd:    ffffffffffffffff
voluntary_ctxt_switches:    8726984
nonvoluntary_ctxt_switches:    1159326

posted on 2012-11-03 17:47  wataciii  阅读(530)  评论(0编辑  收藏  举报