【问题标题】:Redis latency by fork分叉的 Redis 延迟
【发布时间】:2016-09-20 04:24:16
【问题描述】:

我从这个链接中阅读了以下段落:http://redis.io/topics/latency

例如在 Linux/AMD64 系统上,内存被划分为 4 kB 页。要将虚拟地址转换为物理地址,每个 进程存储一个页表(实际上表示为一棵树) 每页的地址空间至少包含一个指针 过程。所以一个大的 24 GB Redis 实例需要一个 24 的页表 GB / 4 kB * 8 = 48 MB。

当执行后台保存时,这个实例必须是 分叉,这将涉及分配和复制 48 MB 的内存。它 需要时间和 CPU,尤其是在分配的虚拟机上 并且大内存块的初始化可能会很昂贵。

请帮我解释一下: 1、为什么在计算页表内存时要乘以8。 2.据我所知,当Redis持久化时,它会将其内存中的所有数据集保存到磁盘。为什么在这个文档中说,它只是将页表保存到磁盘。

【问题讨论】:

    标签: redis latency


    【解决方案1】:
    1. 为什么我们在计算页表的内存时要乘以 8。

    正如文档所说,页表至少包含一个指针。在 Linux/AMD64 系统上,一个指针占用 8 个字节。所以你需要乘以 8 才能得到页表的大小。

    1. 据我所知,当 Redis 持久化时,它会将内存中的所有数据集保存到磁盘。为什么在这个文档中说,它只是将页表保存到磁盘。

    文档没有说它只保存页表。而是告诉你,做后台保存的时候,Redis必须做一个fork,fork操作要复制页表。

    Redis 确实将所有数据保存到磁盘。它不会将页表保存到磁盘。

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 2019-05-17
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2011-01-07
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多