叉子

时间:2016-09-20 04:24:17

标签: redis latency

我在此链接中阅读了以下段落: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持久时,它会将其内存中的所有数据集保存到磁盘。为什么在本文档中说,它只将页面表保存到磁盘。

1 个答案:

答案 0 :(得分:0)

  
      
  1. 为什么在计算页面表的内存时我们将乘以8。
  2.   

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

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

该文件并未说它只保存页面表。相反,它告诉你,在进行后台保存时,Redis必须执行fork,fork操作必须复制页表。

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