我正在编写一个高性能的服务器应用程序(在Linux上),我正试图获得快速的关键路径。我担心内存分页并在操作期间将内存交换到磁盘(延迟时间为毫秒级)。
我的问题是,如果我在服务器上有大量内存(比如16GB),我的内存利用率保持在6-10GB左右,我知道同一个盒子上没有其他进程。我可以保证在应用程序启动和加热后没有页面错过吗?
答案 0 :(得分:1)
这不保证。 Linux的默认行为是有时使用RAM来缓存文件,这可以提高某些工作流的性能。这意味着即使没有全部使用内存,有时候内存页也会被换掉。
您可以使用mlock / mlockall将进程的页面锁定在内存中。有关详细信息,请参阅man 2 mlock
。