sar 手册页说:
pgpgin/s — 系统每秒从磁盘调入的总千字节数。
pgpgout/s — 系统每秒分页到磁盘的总千字节数。
故障/秒 - 系统每秒发生的页面错误(主要错误 + 次要错误)数。这不是产生 I/O 的页面错误数,因为有些页面错误无需 I/O 即可解决。
majflt/s - 系统每秒发生的重大故障数,这些故障需要从磁盘加载内存页面
这是否衡量了交换活动?它指的是什么分页?从磁盘获取数据被视为分页?
另外,我读到 majflt/s 的较大且恒定的值并不好。为什么?
例子 :
沙特阿美 12:00:08 AM pgpgin/s pgpgout/sault/s majflt/s 12:10:05 上午 207.55 2522.76 5109.80 0.01 12:20:07 上午 303.83 274.64 4446.52 0.00 12:30:05 上午 53.85 251.81 4183.98 0.00 12:40:05 上午 43.19 234.05 4181.53 0.00 12:50:06 上午 88.89 265.46 4311.81 0.00 01:00:09 上午 64.60 232.72 4239.05 0.00 01:10:07 上午 69.71 216.89 4523.03 0.00 01:20:06 上午 81.37 250.02 4359.93 0.00 01:30:06 上午 79.77 246.28 4291.49 0.00 01:40:02 上午 42.89 227.22 4319.88 0.02 01:50:06 上午 214.46 441.33 4760.78 0.00 [...]
答案1
分页与交换不同。在调用可执行文件从磁盘读取部分二进制代码或使用内存映射文件。这并不(一定)意味着使用了交换。pgpin/s 和 pgpout/s 值指的是这个过程。
每秒主要故障数衡量的是因内存请求而需要发生的磁盘读取活动,这些请求针对的是当前未加载到物理内存的虚拟地址空间部分。此指标不仅适用于换出页面,还适用于任何类型的页面(包括内存映射文件和磁盘上的可执行二进制文件)。
持续较高的主要故障数量意味着您的进程执行被中断过于频繁,以等待磁盘 I/O 完成读取页面(代码、内存映射文件数据或先前交换到磁盘的其他内存部分)。
考虑到这一点,这是一个很好的指标,表明您的系统是否可能缺少用于当前负载的内存 - 如果先前加载到内存中的页面由于内存不足而再次被抛出(或换出),然后由于当前进程正在积极处理而再次被请求,则将反复产生重大故障。