查看内存使用情况常用命令
1:[guc@localhost ~]$free
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652 2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别:
这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
2: [guc@localhost ~]$cat /proc/meminfo
MemTotal: 3266180 kB ---------------------------------------------------------------- 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)
MemFree: 17456 kB ---------------------------------------------------------------- 系统留着未使用的内存(Buffers+HighFree)
Buffers: 111328 kB ---------------------------------------------------------------- 文件做缓冲大小
Cached: 2664024 kB ---------------------------------------------------------------- 被高速缓冲存储器(cache memory)用的内存的大小(diskcache-SwapCache )
SwapCached: 0 kB ---------------------------------------------------------------- 被高速缓冲存储器(cache memory)用的交换空间的大小
Active: 467236 kB ---------------------------------------------------------------- 活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作它用
Inactive: 2644928 kB ---------------------------------------------------------------- 不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可以被用于其它途径
HighTotal: 0 kB ---------------------------------------------------------------- 该区域不是直接映射到内核空间,内核必须使用不同的手法使用该段内存
HighFree: 0 kB ---------------------------------------------------------------- 该区域不是直接映射到内核空间,内核必须使用不同的手法使用该段内存
LowTotal: 3266180 kB ---------------------------------------------------------------- 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构
LowFree: 17456 kB ---------------------------------------------------------------- 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构
SwapTotal: 2048276 kB ---------------------------------------------------------------- 交换空间的总大小
SwapFree: 1968116 kB ---------------------------------------------------------------- 未被使用交换空间的大小
Dirty: 8 kB ---------------------------------------------------------------- 等待被写回到磁盘的内存大小
Writeback: 0 kB ---------------------------------------------------------------- 正在被写回到磁盘的内存大小
Mapped: 345360 kB ---------------------------------------------------------------- 设备或文件等映射的大小
Slab: 112344 kB ---------------------------------------------------------------- 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗
Committed_AS: 535292 kB ---------------------------------------------------------------- 程序申请的内存总和
PageTables: 2340 kB ---------------------------------------------------------------- 管理内存分页页面的索引表的大小
VmallocTotal: 536870911kB--------------------------------------------------------------- 可以vmalloc虚拟内存大小
VmallocUsed: 272696 kB ---------------------------------------------------------------- 已经被使用的虚拟内存大小
VmallocChunk: 536598175kB--------------------------------------------------------------- largest contigious block of vmalloc area which is free
HugePages_Total: 0 ---------------------------------------------------------------- 需配置CONFIG_HUGETLBFS选项时可用
HugePages_Free: 0 ---------------------------------------------------------------- 需配置CONFIG_HUGETLBFS选项时可用
Hugepagesize: 2048 kB ---------------------------------------------------------------- 需配置CONFIG_HUGETLBFS选项时可用
3:[guc@localhost ~]$ ll -h /proc/kcore
-r-------- 1 root root 897M 08-11 08:30 /proc/kcore
查看内存镜像文件大小
4:[guc@localhost ~]$cat /proc/self/status
Name(应用程序或命令的名字): cat
State(任务的状态,运行/睡眠/僵死/): R (running)
SleepAVG(任务的平均等待时间(以nanosecond为单位),值越大,相应的优先级越高): 58%
Tgid(线程组号): 18925
Pid: (任务ID): 18925
PPid (父进程ID): 17902
TracerPid(跟踪进程ID): 0
Uid(Uid euid suid fsuid): 523 523 523 523
Gid(Uid euid suid fsuid): 523 523 523 523
FDSize(文件描述符的最大个数): 256
Groups(位图): 523
VmPeak(峰值): 3920 kB
VmSize(任务虚拟地址空间的大小:等于total_vm-reserved_vm): 3920 kB 注:其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页
VmLck (任务已经锁住的物理内存的大小): 0 kB
VmHWM : 436 kB
VmRSS(应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值): 436 kB
VmData(程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据): 156 kB 注:等于total_vm-shared_vm-stack_vm
VmStk (任务在用户态的栈的大小 (stack_vm)): 84 kB
VmExe (程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code)): 20 kB
VmLib (被映像到任务的虚拟内存空间的库的大小 (exec_lib)): 1344 kB
VmPTE (该进程的所有页表的大小,单位:kb): 24 kB
StaBrk (brk结束地址): 0804e000 kB 匿名映射所投射区域
Brk (brk起始地址): 09302000 kB 匿名映射所投射区域
StaStk( 该任务在虚拟地址空间的栈的结束地址): bfb6fdf0 kB
ExecLim: 0804d000
Threads(共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。): 1
SigQ(待处理信号的个数): 0/30716
SigPnd(屏蔽位,存储了该线程的待处理信号): 0000000000000000
ShdPnd(屏蔽位,存储了该线程组的待处理信号): 0000000000000000
SigBlk(存放被阻塞的信号): 0000000000000000
SigIgn(存放被忽略的信号): 0000000000000000
SigCgt(存放被俘获到的信号): 0000000000000000
CapInh(能被当前进程执行的程序的继承的能力): 0000000000000000
CapPrm(进程能够使用的能力): 0000000000000000
CapEff(进程的有效能力): 0000000000000000
Cpus_allowed: ffffffff
Mems_allowed: 1