搜索

2.2. 主要和次要页面错误

download PDF

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 系统编程
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.