首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止linux实时进程中的小页面错误

防止linux实时进程中的小页面错误
EN

Stack Overflow用户
提问于 2012-12-02 15:59:48
回答 2查看 3.8K关注 0票数 7

我需要使这个过程尽可能实时地运行。

所有的通信都是通过共享内存完成的--内存映射文件--根本没有系统调用--它使用繁忙的等待共享内存。

进程在实时优先级下运行,所有内存都被mlockall(MCL_CURRENT|MCL_FUTURE)锁定,mlockall(MCL_CURRENT|MCL_FUTURE)成功,进程有足够的ulimits来锁定所有内存。

当我在perf stat -p PID上运行它时,我仍然会得到一些小的页面错误。

我测试了这两个过程亲和力和没有。

问题:

是否有可能完全消除它们--甚至是微小的页面错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-03 15:21:02

我通过从内存映射文件切换到POSIX共享内存shm_open +内存锁定来解决这个问题。

票数 6
EN

Stack Overflow用户

发布于 2012-12-03 10:07:51

如果我理解这个问题是正确的,那么完全避免小的页面错误是不可能的。在大多数现代操作系统(包括Linux )中,当程序启动时,操作系统并不会将所有文本和数据段加载到内存中。它分配内部数据结构,当需要文本和数据时,页面本质上是错误的。这会导致页错误物理内存提供给进程,从而从备份存储交换页。因此,在不访问备份存储的情况下可以避免小的页面错误,这可能是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13670970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档