2.2. 主要和次要页面错误
RHEL for Real Time 通过将物理内存分成多个块,然后将内存映射到虚拟内存。当进程需要未映射或在内存中不再可用的特定页面时,会实时发生故障。因此,当 CPU 需要时,故障这意味着页面不可用。当进程遇到页面错误时,所有线程都会冻结,直到内核处理这个错误。解决此问题的方法有多种,但最好的解决方案可能是调整源代码以避免页面错误。
次要页面错误
当进程在初始化部分内存前试图访问一部分内存时,会实时进行次要页面错误。在这种情况下,系统会执行操作来填充内存映射或其他管理结构。次要页面错误的严重性取决于系统负载和其他因素,但它们通常短,并有微不足的影响。
主页面错误
当系统必须将内存缓冲区与属于其他进程的磁盘、内存不足页面或者将任何其他输入输出(I/O)活动设置为可用内存时,会发生实时主要故障。当处理器引用没有为其分配物理页面的虚拟内存地址时,会出现这种情况。对空页面的引用会导致处理器执行错误,并指示内核代码分配可显著增加延迟的页面。
实时,当应用程序显示性能时,检查 /proc/
目录中与页面错误相关的进程信息是很有帮助的。对于特定的进程标识符(PID),您可以使用 cat
命令查看 /proc/PID/stat
文件以了解以下相关条目:
- 字段 2:可执行的文件名。
- 字段 10:次要页面错误的数量。
- 字段 12:主页面错误的数量。
以下示例演示了使用 cat
命令和 管道
功能查看页面错误,以只返回 /proc/PID/stat
文件的第二个、10 和 twelfth 行:
# cat /proc/3366/stat | cut -d\ -f2,10,12 (bash) 5389 0
在示例输出中,PID 3366 的进程是 bash,它有 5389 次要页面错误,也没有主要页面错误。
其他资源
- 由 Robert Love 的 Linux 系统编程