欢迎来到天天文库
浏览记录
ID:39465471
大小:66.00 KB
页数:9页
时间:2019-07-04
《Linux内存监控工具》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux内存监控工具一、free 该工具主要是显示系统里可用和已用的内存Linux通常按一定的算法把常用的数据加载到系统的虚拟内存buffers和cached中,以便于用户程序在访问系统资源更快。而由free查看到的buffers是用于存放元数据,而cached是用于存放真实的文件内容。 由上图free-k的输出结果中可知:系统总物理内存(total)是4144656K(约4G);已用(Mem行对应的used)的物理内存是3871932K(约3.8G,注:这里包含了buffers的152460K(约152M)和cached的225
2、3060K(2.2G).),他包含系统的buffers和cached的。-/+buffers/cache对应的used是1466412K(约1.4G),也就是Mem行used(3871932K)-Mem行buffers(152460K)-Mem行cached(2253060K)=1466412K(约1.4G).所以实际上可用于分配的物理内存(-/+buffers/cache行对应的free)是2678244K(约2.6G).Shared在man手册里提示应该忽略(manfree:Thesharedmemorycolumnshould
3、beignored;itisobsolete.)。Mem行对应的free对应的274220K(约274M).其实这个free是有一定限制的:不能低于min_free_kbytes。min_free_kbytes用于计算系统里lowmemzone(物理内存0-896MB之间的zone)的值(ThisisusedtoforcetheLinuxVMtokeepaminimumnumberofkilobytesfree. TheVMusesthisnumbertocomputeapages_minvalueforeachlowmemzone
4、inthesystem. Eachlowmemzonegetsanumberofreservedfreepagesbasedproportionallyonitssize.).计算方式参见mm/page_alloc.c的min_free_kbytes=sqrt(lowmem_kbytes*16) 上述值是一定的公式计算系统的lowmem是872656KB[root@crm_10/root]grepLowTotal/proc/meminfoLowTotal: 872656min_free_kbytes=sqrt(872656*16)约
5、等于3797二、ps,top 这两个工具在内存监视方面有很大的相似性,所以一并说一下:下面top里的VIRT相当于ps里的VSZ:指用于这个任务的总虚拟内存(虚拟内存包括物理内存和swap交换分区),包括所有的代码、数据、共享库以及已经被out到swap分区的数据。/*Thetotalamountofvirtualmemoryusedbythetask. Itincludesallcode,dataandsharedlibrariespluspagesthathavebeenswappedout.*/ 而top里的RES相当于ps里
6、的RSS:指用于这个任务的没被out到swap分区的总物理内存/*residentsetsize,thenon-swappedphysicalmemorythatataskhasused*/top里的%MEM:指这个任务的RES占总物理内存的比率/*Memoryusage(RES)Atask'scurrentlyusedshareofavailablephysicalmemory.*/三、vmstat显示的值跟用free工具查看到的值相似。一般情况下:只要swap一列的si/so数值不超过1024即可。Swap si:Am
7、ountofmemoryswappedinfromdisk(/s). so:Amountofmemoryswappedtodisk(/s).四:VFS里的meminfo信息:Dirty:是指数据已写入内存,但还没同步到外存(磁盘)的数据量.Slab:为了提供内核空间以页分配对有些调用(只需小内存)不合适的一种内存分配方式,提出Pool的概念。Vmalloc:为了解决非连续性内存的使用,提供的一种内存分配方式(采用链表)。CommitLimit:指当前可以分配给程序使用的虚拟内存(只有当vm.overcommit_memor
8、y的值设置为2时,CommitLimit才有意义) CommitLimit:Basedontheovercommitratio('vm.overcommit_ratio'), thisisthetotalamo
此文档下载收益归作者所有