我在一个iotop服务器上运行vmstat和CentOS。在某些负载下,iotop swapin列开始显示某些进程的5%至20%的值。但vmstat si场仍为零。我认为vmstat si和iotop swapin都会反映交换。当iostat显示显着的swapin时,si怎么可能是零?
vmstat si:从磁盘交换的内存量(/s)
发布于 2014-03-08 13:21:59
如果您看一看我在U&L问答&A上发布的题为:Linux内核与性能工具的关系图?的图表,它会显示Linux内核的哪个子系统,这些工具中的每一个都显示性能数据。
iotop的主要目的是从块设备接口的角度显示统计数据。例如,这就是你的硬盘。vmstat显示来自内核虚拟内存子系统的统计信息。
iotopS主页的这一段也解释了它要做的事情:
iotop显示每个进程/线程在采样期间读取和写入的I/O带宽列。它还显示线程/进程在交换和等待I/O时花费的时间百分比。对于每个进程,都会显示其I/O优先级(类/级别)。
Total DISK READ : 0.00 B/s | Total DISK WRITE : 36.93 K/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
303 be/3 root 0.00 B/s 29.54 K/s 0.00 % 4.42 % [jbd2/dm-1-8]
29559 be/4 saml 0.00 B/s 7.39 K/s 0.00 % 0.00 % google-chrome-stable [Chrome_HistoryT]因此,在上面的示例中,jdb2已经花费了4.42%的时间等待I/O资源。这是生命的结束,而不是在这个特定的时刻。
来自vmstat的输出显示了来自虚拟内存的正在进行的统计数据,表示任何页面都是脏的,或者需要从交换区中推送/拉出,所以您会看到这些页面在那里穿梭。您没有从vmstat获得这些页面属于什么过程的指示,只知道有页面被交换进来/输出。
$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 2990956 1429112 45664 712416 8 15 50 149 7 33 34 5 60 2
0 0 2990948 1385392 45696 725096 0 0 2009 36 833 1556 6 1 92 1
0 0 2990948 1380700 45704 726516 0 0 0 16 700 1423 3 1 95 1
2 0 2990944 1386960 45760 724400 3 0 3 264 1075 1837 5 1 91 3si & so列是与交换相关的状态。
所报告的si值实际上是一个变化率值(每秒移动的量)。请参阅这篇题为:使用vmstat监视系统性能:
交换部分报告内存发送到交换系统或从交换系统中检索的速率。通过将“交换”与总磁盘活动分开报告,vmstat允许您确定有多少磁盘活动与交换系统相关。si列报告每秒从交换区移动到“真实”内存的内存量。so列报告每秒从“真实”内存中移动到交换的内存量。
考虑到这一点,即使一个进程报告它正在通过iostat使用交换,但交换的使用可能不足以在vmstat's的"si“度量中出现的一秒内被发现。
https://unix.stackexchange.com/questions/118722
复制相似问题