我们有一个时间关键的过程(第三方代码),它有mlockall。我将此代码移植到没有硬盘的嵌入式系统中。 它是仅RAM系统,从SD卡启动,并在SD卡中存储。
mlockall在仅RAM系统中是否具有任何性能优势?
只是检查它是否尝试过任何交换分区: cat / proc / swaps 文件名类型大小使用优先级
在这种情况下,我可以删除mlockall,因为它不会在我们的系统中添加任何值。请帮助。
答案 0 :(得分:0)
在内存压力下,linux内核可能会决定从RAM中逐出页面。脏页(包含可写数据)只能换出。像过程的文本部分一样的干净页面(只读)可能只是被删除。这些页面会在需要时通过页面错误重新进入。
第一种情况不会发生在你身上,因为没有交换。第二种情况可能会发生,可以通过mlockall调用来阻止。
总的来说,讨论是理论上的,因为在内存压力下运行系统会引入许多非确定性行为,这对于实时系统是不利的。