衡量内存负载的一个很重要的指标就是页面置换的频率。当linux系统频繁的对页进行换进换出
的时候,说明物理内存不过,不得不进行频繁的置换页面。
使用vmstat(virtual memory statistics)进行内存负载分析
[oracle@zeng ~]$ vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 758668  19688  64508   56    0     0   256  263  118  3 22 74  2  0
 0  0      0 758668  19688  64532    0    0     0     0   21   10  0  1 99  0  0
 0  0      0 758668  19688  64532    0    0     0     0   19    7  0  1 100  0  0
对于内存负载分析其中关键的字段是:
swpd:虚拟内存的使用总量。
si:每秒从虚拟内存读入内存的大小。
so:每秒从内存写入虚拟内存的大小。
如果这3个字段的值比较高说明出现了内存瓶颈。
也可以使用free 来标识内存的负载情况.
[oracle@zeng ~]$ free
             total       used       free     shared    buffers     cached
Mem:        911564     155492     756072          0      20564      65696
-/+ buffers/cache:      69232     842332
Swap:      3481592          0    3481592
如果发现linux 系统使用了其中大部分的物理内存。这是正常的linux使用这些物理内存来
提升系统的性能。其中要注意的是swap 那一行.
[oracle@zeng ~]$ free -s 3 
             total       used       free     shared    buffers     cached
Mem:        911564     155748     755816          0      20620      65732
-/+ buffers/cache:      69396     842168
Swap:      3481592          0    3481592
 
             total       used       free     shared    buffers     cached
Mem:        911564     155748     755816          0      20620      65732
-/+ buffers/cache:      69396     842168
Swap:      3481592          0    3481592
-s 选项表示间隔多少秒,报告一次内存负载情况。使用Ctrl+C退出。可以把上面
的输出重定向到文件。
也可以通过查看虚拟文件 /proc/meminfo 来查看内存的负载情况。
[oracle@zeng ~]$ cat /proc/meminfo  
MemTotal:         911564 kB
MemFree:          239024 kB
Buffers:           23304 kB
Cached:           513724 kB
SwapCached:            0 kB
Active:           216272 kB
Inactive:         387160 kB
如果你在输出中看到SwapFree 字段的值较低,说明你的系统内存负载很高,需要添加
额外的内存,或者监控系统进程对内存的使用情况,把一些不需要的进程结束掉。缓解
内存负载。vmstat,free,cat /proc/meminfo 都可以和watch 一起配合使用。
使用sar 进行实时,当天,当天前本月的其他天的内存负载情况分析。
使用sar 进行历史内存发展分析.
[oracle@zeng ~]$ sar -B -f /var/log/sa/sa08
Linux 2.6.32-71.el6.i686 (zeng)         03/08/2012      _i686_  (1 CPU)
 
09:50:01 AM       LINUX RESTART
 
10:00:02 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
10:10:01 AM      0.00     79.83      0.00    124.61      0.00      0.00      0.00      0.00      0.00
10:20:01 AM      0.00      1.42      0.00     51.98      0.00      0.00      0.00      0.00      0.00
10:30:01 AM      0.00    113.79      0.00    135.36      0.00      0.00      0.00      0.00      0.00
10:40:02 AM      0.00      0.02      0.00     32.64      0.00      0.00      0.00      0.00      0.00
10:50:01 AM      0.00      0.02      0.00     33.78      0.00      0.00      0.00      0.00  
-B 表示报告系统的分析统计情况。
pgpgin/s :每秒从磁盘中调入的大小,bytes。
pgpgout/s :每秒从内存中换出的大小,bytes。
-f 表示要从哪个历史日志文件中读取相应的报告数据。/var/log/sa/saNN NN表示本月的天数。
[oracle@zeng ~]$ sar -W -f /var/log/sa/sa13
Linux 2.6.32-71.el6.i686 (zeng)         03/13/2012      _i686_  (1 CPU)
 
12:57:10 PM       LINUX RESTART
 
01:00:02 PM  pswpin/s pswpout/s
01:10:02 PM     20.41      0.00
01:20:01 PM     58.31      0.00
01:30:02 PM     19.76      0.00
01:40:01 PM     20.00      0.00
01:50:01 PM     19.75      0.00
02:00:01 PM     19.98      0.00
02:10:01 PM     33.62      0.00
02:20:01 PM     20.94      0.00
02:30:01 PM     20.84      0.00
02:40:01 PM     20.40      0.00
-W 表示报告交换的统计情况。
pswpin/s:每秒置换进来的大小。
pswpout/s:每秒置换出的大小。
如果这两个值较高,说明内存负载大。
使用sar 进行实时内存负载分析.
[oracle@zeng ~]$ sar -W 3 5
Linux 2.6.32-71.el6.i686 (zeng)         03/14/2012      _i686_  (1 CPU)
 
10:54:01 AM  pswpin/s pswpout/s
10:54:04 AM     22.61      0.00
10:54:07 AM     17.02      0.00
10:54:10 AM     22.38      0.00
10:54:13 AM     16.84      0.00
10:54:16 AM     22.30      0.00
Average:        20.24      0.00
3 表示报告的时间间隔s。
5 表示报告的次数。
使用sar 进行当前内存负载分析。
[oracle@zeng ~]$ sar -W
Linux 2.6.32-71.el6.i686 (zeng)         03/14/2012      _i686_  (1 CPU)
 
09:48:13 AM       LINUX RESTART
09:50:02 AM  pswpin/s pswpout/s
10:00:01 AM      1.00      0.00
10:10:01 AM      0.61      0.00
10:20:01 AM     19.49      0.00
10:30:02 AM     29.70      0.00
10:40:01 AM     38.41      0.00
10:50:02 AM     20.49      0.00
Average:        18.07      0.00
[oracle@zeng ~]$ sar -r
Linux 2.6.32-71.el6.i686 (zeng)         03/14/2012      _i686_  (1 CPU)
 
09:48:13 AM       LINUX RESTART
 
09:50:02 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:00:01 AM    755660    155904     17.10     20240     65580    176952      4.03
10:10:01 AM    755684    155880     17.10     20628     65732    176056      4.01
10:20:01 AM    209720    701844     76.99     23648    537324    693520     15.79
10:30:02 AM    177240    734324     80.56     24452    568336    693476     15.79
10:40:01 AM     60144    851420     93.40     86464    576484    694376     15.81
10:50:02 AM     59284    852280     93.50     87264    576512    694376     15.81
Average:       336289    575275     63.11     43783    398328    521459     11.87
-r 表示报告内存使用率统计。
字段解释:
kbmemfree  空闲内存大小。
kbmemused  已被使用的内存大小。
%memused   被使用的内存占总内存的百分比。
kbbuffers  被用作buffer 的内存大小。
kbcached   被用作cache 的内存大小。
kbcommit   确保当前的工作负载,所需要的内存大小。以保证不需要使用到swap。
%commit    kbcommit 与 RAM+swap 的比值。

linux内存负载分析的更多相关文章

  1. Linux内存技术分析(下)

    Linux内存技术分析(下) 五.内存使用场景 out of memory 的时代过去了吗?no,内存再充足也不可任性使用. 1.内存的使用场景 page 管理 slab(kmalloc.内存池) 用 ...

  2. Linux内存技术分析(上)

    Linux内存技术分析(上) 一.Linux存储器 限于存储介质的存取速率和成本,现代计算机的存储结构呈现为金字塔型.越往塔顶,存取效率越高.但成本也越高,所以容量也就越小.得益于程序访问的局部性原理 ...

  3. 性能分析 | Linux 内存占用分析

    这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令:查看/proc/[pid]/下的文件.文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/ ...

  4. 利用Volatility对Linux内存取证分析-常用命令翻译

    命令翻译 linux_apihooks - 检查用户名apihooks linux_arp - 打印ARP表 linux_aslr_shift - 自动检测Linux aslr改变 linux_ban ...

  5. linux内存占用分析

    概述 想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存.这里我们可以 ...

  6. linux 内存使用分析

      查看当前内存使用情况,最常用的指令就是 [root@t ~]# free -m total used free shared buffers cached Mem: -/+ buffers/cac ...

  7. Linux 系统负载查询及分析说明

    Linux 系统出现死机或卡顿时,可以参阅如下步骤进行整体排查: 检查服务器进程与服务否占用了过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机. 检查 /var/spool/cron 等系统 ...

  8. 转: 关于Linux与JVM的内存关系分析

    转自: http://tech.meituan.com/linux-jvm-memory.html Linux与JVM的内存关系分析 葛吒2014-08-29 10:00 引言 在一些物理内存为8g的 ...

  9. Linux与JVM的内存关系分析

    引言 在一些物理内存为8g的server上,主要执行一个Java服务,系统内存分配例如以下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约600m,Linux自身使用大约800m. 从表面 ...

随机推荐

  1. IOS 录像软件

    http://iphone.91.com/tutorial/cjjc/140430/21683219.html

  2. TaskTracker获取并执行map或reduce任务的过程(一)

    我们知道TaskTracker在默认情况下,每个3秒就行JobTracker发送一个心跳包,也就是在这个心跳包中包含对任务的请求.JobTracker返回给TaskTracker的心跳包中包含有各种a ...

  3. VS2008调试技巧收集备用

    VS2005调试技巧集合 http://blog.csdn.net/rainylin/archive/2007/09/06/1775125.aspx 下面有从浅入深的6个问题,您可以尝试回答一下 一个 ...

  4. hdu 1851 A Simple Game 博弈论

    简单博弈问题(巴什博弈-Bash Game) 巴什博弈:只有一堆n个物品,两个人轮流从这对物品中取物,规定每次至少取一个,最多取m个,最后取光着得胜. 很容易想到当n%(m+1)!=0时,先取者必胜, ...

  5. SaaS系列介绍之七: SaaS模式分析(下)

    1 SaaS模式下的质量管理 质量管理是从事SaaS事业的企业管理的重要课题,质量管理的职能是质量方针.质量目标和质量指标的制定和贯彻实施,中心目标是促进产品质量.提高客户满意度. 软件质量要素包含以 ...

  6. SGU 168

    SGU 168,寻找矩阵中右上方,右方,下方最小的元素,采用动态规划解答. #include <iostream> #include <vector> #include < ...

  7. tortoisesvn › prefer local prefer repository

    tortoisesvn › prefer local prefer repository

  8. 【开源推荐】AllJoyn:打造全球物联网的通用开源框架

    摘要:随着智能设备的发展,物联网逐渐进入了人们的生活.据预测,未来几乎一切东西(超过500亿台设备)都可以互联.高通公司发布了开源项目AllJoyn,这是一个能够使连接设备间进行互操作的通用软件框架和 ...

  9. js设置datagriad的行移动

    //                    ,//                formatter: function(value,row,index){//                    ...

  10. hdu 4502 吉哥系列故事——临时工计划(dp)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4502 思路:一个简单的dp ,比赛时没做出来呢..... d[i]代表 到第i天时的最大值 #includ ...