MSN: luxuabc@hotmail.com
Linux性能监控之Memory篇(2)
上一篇 /
下一篇 2007-11-18 20:32:42
/ 个人分类:性能测试技术
我们来看内存监控的一个例子,用vmstat命令的输出如下:
# vmstat 3
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy id wa
3 2 809192 261556 79760 886880 416 0 8244 751 426 863 17 3 6 75
0 3 809188 194916 79820 952900 307 0 21745 1005 1189 2590 34 6 12 48
0 3 809188 162212 79840 988920 95 0 12107 0 1801 2633 2 2 3 94
1 3 809268 88756 79924 1061424 260 28 18377 113 1142 1694 3 5 3 88
1 2 826284 17608 71240 1144180 100 6140 25839 16380 1528 1179 19 9 12 61
2 1 854780 17688 34140 1208980 1 9535 25557 30967 1764 2238 43 13 16 28
0 8 867528 17588 32332 1226392 31 4384 16524 27808 1490 1634 41 10 7 43
4 2 877372 17596 32372 1227532 213 3281 10912 3337 678 932 33 7 3 57
1 2 885980 17800 32408 1239160 204 2892 12347 12681 1033 982 40 12 2 46
5 2 900472 17980 32440 1253884 24 4851 17521 4856 934 1730 48 12 13 26
1 1 904404 17620 32492 1258928 15 1316 7647 15804 919 978 49 9 17 25
4 1 911192 17944 32540 1266724 37 2263 12907 3547 834 1421 47 14 20 20
1 1 919292 17876 31824 1275832 1 2745 16327 2747 617 1421 52 11 23 14
5 0 925216 17812 25008 1289320 12 1975 12760 3181 772 1254 50 10 21 19
0 5 932860 17736 21760 1300280 8 2556 15469 3873 825 1258 49 13 24 15
其中:swpd为虚拟内存的使用大小单位为KB.
Free为空闲的物理内存的大小(KB);
Buff为内存中缓存的大小,这些缓存是read()和write()函数使用的(KB);
Cache进程的地址空间在物理内存中的映射(KB);
So为从内存写入swap空间的数据大小(KB);
Si为从swap空间写入内存的数据大小(KB);
Bo为从内存写入硬盘或swap的页数量;
Bi为从硬盘或swap写入内存的页数量;
从上面的输出我们可以看到:
1. 大量的disk pages(bi)被写入内存,这点可以从cache的不断增长来证明;
2. 在这个过程中,物理内存始终保持在17MB虽然不断有数据从硬盘读入来消耗内存;
3. 为了保持可用物理内存,kswapd不断的从Buff中偷取内存,来加入空闲列表,buff不断减小;
4. 同时kswapd不断的将垃圾页写入swap空间,我们可以看到so和swpd不断增加.
现在我们可以得出结论,这是一个IO Bound的程序,并且造成了虚拟内存的大量使用,加大物理内存可以改善性能.
总结下来:
1. 当一个系统有越少的页错误(所需数据不在内存,需要从硬盘读入),就会有越好的响应时间.因为内存比硬盘快得多.
2. Free memory数量低是一个好的征兆,因为证明了cache在起作用,除非同时存在大量的bi和so.
3. 如果一个系统有持续的si和so,就说明系统的内存是一个瓶颈.
收藏
举报
TAG:
性能测试技术