sar manpage说:
pgpgin / s – 系统每秒从磁盘分页的总千字节数.
pgpgout / s – 系统每秒分页到磁盘的总千字节数.
fault / s – 系统每秒发生的页面错误(主要次要)数.这不是生成I / O的页面错误计数,因为可以在没有I / O的情况下解决某些页面错误.
majflt / s – 系统每秒发生的主要故障数,即需要从磁盘加载内存页的故障数
这是否衡量交换活动?它指的是什么分页?从磁盘获取数据被视为分页?
另外,我已经读过majflt / s的大且常数值不好.为什么?
示例:
Sar -B 12:00:08 AM pgpgin/s pgpgout/s fault/s majflt/s 12:10:05 AM 207.55 2522.76 5109.80 0.01 12:20:07 AM 303.83 274.64 4446.52 0.00 12:30:05 AM 53.85 251.81 4183.98 0.00 12:40:05 AM 43.19 234.05 4181.53 0.00 12:50:06 AM 88.89 265.46 4311.81 0.00 01:00:09 AM 64.60 232.72 4239.05 0.00 01:10:07 AM 69.71 216.89 4523.03 0.00 01:20:06 AM 81.37 250.02 4359.93 0.00 01:30:06 AM 79.77 246.28 4291.49 0.00 01:40:02 AM 42.89 227.22 4319.88 0.02 01:50:06 AM 214.46 441.33 4760.78 0.00 [...]
解决方法
分页与交换不同.调用可执行文件以从磁盘读取部分二进制代码或使用
memory-mapped files时,可能会有分页活动.这不一定(必然)表示使用了交换. pgpin / s和pgpout / s值指的是这个过程.
主要故障/秒确实测量由于对当前未加载到物理存储器的虚拟地址空间部分的存储器请求而需要发生的磁盘读取活动.对于换出的页面,此指标也不是排他性的,而是针对任何类型的页面(包括磁盘上的内存映射文件和可执行二进制文件).
持续存在大量主要故障意味着您的进程执行过于频繁中断,无法等待磁盘I / O完成读取页面(代码,内存映射文件数据或之前交换到磁盘的其他内存部分).
考虑到这一点,如果您的系统可能缺少当前负载的内存,这是一个很好的指标 – 如果由于内存不足而导致先前加载到内存中的页面再次被抛出(或换出),将会重复产生重大故障.然后再次请求,因为他们正在积极地处理当前流程.