这个问题涉及RHEL 5.3中/ proc / vmstat中logging的特定度量的定义。
我正在使用nmon来监视一个负载testing,其中包括模拟2500个用户在一个小时内执行一天的工作量。 最近,我看到了糟糕的performance,正在诊断和排除各种考虑。
我们在vmware ESX上运行红帽企业Linux服务器版本5.3(Tikanga)。 我专注于运行的物理服务器和Oracle应用服务器(包括Apache HTTP服务器和OC4J J2EE容器)。
我正在查看的nmon图表显示了对pswpin指标的一致分配。 总结为; 分钟= 4312; 最大= 245352; avmon = 86734.Nmon显示以“每秒千字节”
整个testing过程中以下指标为零;
鉴于我对分页和交换的理解,我很困惑这些度量的组合是什么意思。
我的问题:
目前我正试图排除虚拟内存问题,因为性能不佳。
编辑:我已经find了整个testing大量的fork()调用的证据。 我怀疑Apache守护进程。 但是,过程创造可能是这些指标的原因吗?
编辑:我已经添加了从nmon VM输出的典型示例。 道歉的格式不好。
预先感谢任何回应。
T0001 -1 22 -1 -1 -1 150 -1 -1 -1 5196046163 -1 0 30 100199751 3060 -1 0 -1 885 -1 -1 -1 46163 -1 -1 18 -1 828189171 -1 -1 3838 -1 -1 -1 -1 -1 165231 03:07:23 Paging and Virtual Memory nr_dirty nr_writeback nr_unstable nr_page_table_pages nr_mapped nr_slab pgpgin pgpgout pswpin pswpout pgfree pgactivate pgdeactivate pgfault pgmajfault pginodesteal slabs_scanned kswapd_steal kswapd_inodesteal pageoutrun allocstall pgrotated pgalloc_high pgalloc_normal pgalloc_dma pgrefill_high pgrefill_normal pgrefill_dma pgsteal_high pgsteal_normal pgsteal_dma pgscan_kswapd_high pgscan_kswapd_normal pgscan_kswapd_dma pgscan_direct_high pgscan_direct_normal pgscan_direct_dma 03:07:33 -1 99 -1 -1 -1 241 0 0 0 77526 0 0 0 824 0 0 0 0 0 0 0 0 77526 0 0 0 0 0 0 0 78216 0 0 0 0 0 0 03:07:43 -1 10 -1 -1 -1 262 0 0 0 21653 0 0 8 500 2 0 0 0 0 0 0 0 21653 0 0 0 0 0 0 0 17675 0 0 0 0 0 0 03:07:53 -1 69 -1 -1 -1 257 0 0 0 115744 0 0 0 724 0 0 0 0 0 0 0 0 115744 0 0 0 0 0 0 0 -79544 0 0 0 0 0 0 03:08:03 -1 69 -1 -1 -1 196 0 0 0 81202 0 0 0 628 0 0 0 0 0 0 0 0 81202 0 0 0 0 0 0 0 -18335 0 0 0 0 0 0 03:08:13 -1 81 -1 -1 -1 205 0 0 0 29051 0 0 0 352 0 0 0 0 0 0 0 0 29051 0 0 0 0 0 0 0 24449 0 0 0 0 0 0 03:08:24 -1 91 -1 -1 -1 131 0 0 0 122795 0 0 0 1172 0 0 0 0 0 0 0 0 122795 0 0 0 0 0 0 0 9640 0 0 0 0 0 0 03:08:34 -1 6 -1 -1 -1 182 0 0 0 74914 0 0 4 372 1 0 0 0 0 0 0 0 74914 0 0 0 0 0 0 0 -24477 0 0 0 0 0 0 03:08:44 -1 38 -1 -1 -1 200 0 0 0 42957 0 0 4 464 1 0 0 0 0 0 0 0 42957 0 0 0 0 0 0 0 42778 0 0 0 0 0 0 03:08:54 -1 6 -1 -1 -1 141 0 0 0 89751 0 0 36 1000 9 0 0 0 0 0 0 0 89751 0 0 0 0 0 0 0 -9665 0 0 0 0 0 0 03:09:04 -1 6 -1 -1 -1 171 0 0 0 74740 0 0 4 516 1 0 0 0 0 0 0 0 74740 0 0 0 0 0 0 0 -24583 0 0 0 0 0 0 03:09:14 -1 10 -1 -1 -1 179 0 0 0 56063 0 0 0 500 0 0 0 0 0 0 0 0 56063 0 0 0 0 0 0 0 56384 0 0 0 0 0 0 03:09:24 -1 6 -1 -1 -1 74 0 0 0 75623 0 0 0 696 0 0 0 0 0 0 0 0 75623 0 0 0 0 0 0 0 -23994 0 0 0 0 0 0 03:09:34 -1 6 -1 -1 -1 137 0 0 0 75466 0 0 8 972 2 0 0 0 0 0 0 0 75466 0 0 0 0 0 0 0 -23837 0 0 0 0 0 0 03:09:44 -1 3 -1 -1 -1 153 0 0 0 72535 0 0 4 460 1 0 0 0 0 0 0 0 -927465 0 0 0 0 0 0 0 -26880 0 0 0 0 0 0 03:09:54 -1 6 -1 -1 -1 170 0 0 0 56775 0 0 0 284 0 0 0 0 0 0 0 0 56775 0 0 0 0 0 0 0 56895 0 0 0 0 0 0 03:10:04 -1 6 -1 -1 -1 166 0 0 0 74756 0 0 0 1116 0 0 0 0 0 0 0 0 74756 0 0 0 0 0 0 0 -24568 0 0 0 0 0 0 03:10:14 -1 6 -1 -1 -1 148 0 0 0 78043 0 0 0 432 0 0 0 0 0 0 0 0 78043 0 0 0 0 0 0 0 -21241 0 0 0 0 0 0 03:10:24 -1 64 -1 -1 -1 189 0 0 0 64057 0 0 0 412 0 0 0 0 0 0 0 0 64057 0 0 0 0 0 0 0 60788 0 0 0 0 0 0
pgpgin - Number of kilobytes the system has paged in from disk per second. pgpgout - Number of kilobytes the system has paged out to disk per second. pswpin - Number of kilobytes the system has swapped in from disk per second. pswpout - Number of kilobytes the system has swapped out to disk per second.
我87%确定,每增加pswpin计数器的页面也应该增加pgpgin。 你说这不是。 嗯。
这可能是太简单的事情来检查(对不起!)但是…你200%确定,你观察的指标是pswpin,而不是pgpgin? 后来会转化为:进程正在读取一些文件。
其他的解释是,应用程序在testing之前已经大量换出,然后系统获得了大量的空闲内存。 在testing期间,您正在观察它是否正在“回归生活”(随着代码执行的不断进行),而无需读取/写入任何文件。 但是为什么在这样的情况下,psgpin的pgpgin不是我理解的。
也许你的图表被调整,所以pswpin从pgpgin减去? 需要指出的一点是,这两个指标通常都是以页面forms(在/ proc / vmstat中),并将它们转换为KB / s。
编辑:这可能是ESX相关的。 我疯狂的猜测,这是一个balooning或透明页面共享(TPS)的副作用。 你能通过ESX上的esxtop进行分析吗? 这是另一个esxtop指南 。
编辑:你的nmon统计看起来破了。 首先,列名比实际指标多(即没有最后一列pgscan_direct_dma数据)。 在繁忙的系统上,度量标准有很多-1或0的值,不仅缺lesspgpgin。 Pgsteal和pgrotated在那里,但有时是负面的,这是不可能的。
那么,看看/ proc / vmstat,那里发生了什么? 并使用其他工具来确认nmon统计。