我在此链接中阅读了以下段落: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持久时,它会将其内存中的所有数据集保存到磁盘。为什么在本文档中说,它只将页面表保存到磁盘。
答案 0 :(得分:0)
- 为什么在计算页面表的内存时我们将乘以8。
醇>
正如文档所述,页表至少包含一个指针。在Linux / AMD64系统上,指针占用8个字节。所以你需要8乘以8才能得到页表的大小。
- 据我所知,当Redis持久时,它会将其内存中的所有数据集保存到磁盘。为什么在本文档中说,它只是将页面表保存到磁盘。
醇>
该文件并未说它只保存页面表。相反,它告诉你,在进行后台保存时,Redis必须执行fork,fork操作必须复制页表。
Redis将所有数据保存到磁盘。它不会将页面表保存到磁盘。