Memcached与虚拟内存

Memcached与虚拟内存,memcached,virtual-memory,Memcached,Virtual Memory,根据(不太可靠,我知道)memcached不使用磁盘,甚至不使用虚拟内存 我的问题是: 这是真的吗 如果是这样,memcached如何确保分配给他的内存不会溢出到磁盘 memcached避免通过两种机制进行交换: 通知系统管理员机器永远不应进行交换。这允许管理员可能不为机器配置交换空间(对我来说似乎是个坏主意),或者配置正在运行的应用程序的内存限制,以确保没有任何东西进入交换。(不仅仅是memcached,还包括所有应用程序。) 可以使用mlockall(2)系统调用(-k)确保所有进程的内存始

根据(不太可靠,我知道)memcached不使用磁盘,甚至不使用虚拟内存

我的问题是:

  • 这是真的吗

  • 如果是这样,memcached如何确保分配给他的内存不会溢出到磁盘


  • memcached
    避免通过两种机制进行交换:

  • 通知系统管理员机器永远不应进行交换。这允许管理员可能不为机器配置交换空间(对我来说似乎是个坏主意),或者配置正在运行的应用程序的内存限制,以确保没有任何东西进入交换。(不仅仅是
    memcached
    ,还包括所有应用程序。)

  • 可以使用
    mlockall(2)
    系统调用(
    -k
    )确保所有进程的内存始终锁定在内存中。这是通过
    setrlimit(2)
    RLIMIT\u MEMLOCK
    控件进行调节的,因此管理员需要修改例如
    /etc/security/limits.conf
    以允许
    memcached
    用户帐户锁定比正常情况多得多的内存。(锁定的内存被中介,以防止不受信任的用户帐户耗尽系统其余部分的可用内存。)


  • 假设机器的目的是运行
    memcached
    ,并且可能很少运行其他操作,那么这两个步骤都是合理的。这通常是一个合理的假设,因为较大的部署会将多台(或多台)计算机专用于
    memcached

    ,您可以将memcached配置为使用固定数量的内存。当内存已满时,memcached只会删除旧数据以保持在限制之下。就这么简单。

    memcached确实使用虚拟内存,但它(故意)不使用页到磁盘。但是,这不是memcached的选择。操作系统决定何时以及页面内容。幸运的是,如果内存限制设置得不太高,系统上就不会有内存压力,因此操作系统不需要分页数据。而且因为memcached是缓存,而不是数据库,它可以在它认为需要的时候删除你的数据。你的回答并不能解释如果内存压力过大会发生什么high@checat我想我是这么说的。它删除数据。正如链接的线程所表明的,这个问题是基于一个误解。虚拟内存与分页或交换不同。请注意,它说:“我假设您的意思是‘memcached不将数据分页到磁盘吗’”