C++ Memcached如何确保其内存中的页面不会被其他页面替换掉?

C++ Memcached如何确保其内存中的页面不会被其他页面替换掉?,c++,caching,web-applications,memcached,scalability,C++,Caching,Web Applications,Memcached,Scalability,因此,我试图加快我的数据库驱动网站的速度,我遇到了memcached,我显然可以使用它将数据库中的频繁键/值“缓存”到内存中。我的问题是,如何强制数据保留在内存中,因为通常情况下,如果服务器正在运行其他应用程序,那么如果来自另一个应用程序的页面替换来自memcached的页面,memcached哈希表(或其一部分)有可能被写回硬盘。那么在工业上,他们是否有单独的机器只运行memcached?或者他们会调整操作系统的内部结构,使memcached中的页面不会被交换掉 这个问题可以推广到任何其他应用

因此,我试图加快我的数据库驱动网站的速度,我遇到了memcached,我显然可以使用它将数据库中的频繁键/值“缓存”到内存中。我的问题是,如何强制数据保留在内存中,因为通常情况下,如果服务器正在运行其他应用程序,那么如果来自另一个应用程序的页面替换来自memcached的页面,memcached哈希表(或其一部分)有可能被写回硬盘。那么在工业上,他们是否有单独的机器只运行memcached?或者他们会调整操作系统的内部结构,使memcached中的页面不会被交换掉


这个问题可以推广到任何其他应用程序,知道如何强制数据保留在内存中是非常有益的。

默认情况下,如果您的机器使用的物理内存超过可用内存,memcached页面将被交换到硬盘上。但是,您可以指定-k参数来指定memcached正在使用的页面将通过mlockall()锁定到物理内存中。有关如何实现这一点的更多信息,请参阅本文


多年来,操作系统的编写者们编写了很好的分页算法;经得起时间考验的算法。分页算法试图优化它交换出来的页面

“强制数据保留在内存中是非常有益的”——确定吗?您是否希望将Apache代码交换出去,而不是一个小时未使用的数据页?如果Apache转出,谁会使用这些数据

很难设计出比本机OS分页算法更好的东西。可以这样做,但通常需要的不仅仅是为一个程序锁定内存

我建议适当设置memcache大小,这样机器就不会使用分页

如果您只在系统上运行memcache(许多人都这么做),那么就不需要太多地修改-k开关。或者可以将该机器设置为swap=0