gpt4 book ai didi

caching - 冷缓存和热缓存概念是什么意思?

转载 作者:行者123 更新时间:2023-12-03 06:01:26 25 4
gpt4 key购买 nike

我读了一篇论文,它使用了术语冷缓存热缓存。我用谷歌搜索了这个术语,但没有找到有用的东西(只有一个线程 here )。

这些术语是什么意思?

最佳答案

TL;DR 有一个类比,即汽车的冷发动机和热发动机。冷缓存 - 没有任何值,不能给你任何加速,因为它是空的。热缓存有一些值(value),可以为您带来加速。

缓存是一种保存一些值( inode 、内存页、磁盘 block 等)以加快查找速度的结构。

缓存的工作原理是在快速搜索数据结构(哈希表、B+ 树)或更快的访问介质(RAM 内存与 HDD、SSD 与 HDD)中存储某种短引用。

为了能够进行快速搜索,您需要缓存来保存值。让我们看一个例子。

假设您有一个带有某些文件系统的 Linux 系统。要访问文件系统中的文件,您需要知道文件在磁盘上的起始位置。这些信息存储在 inode 中。为了简单起见,我们说 inode 表存储在磁盘上的某个位置(所谓的“ super block ”部分)。

现在想象一下,您需要读取文件/etc/fstab。为此,您需要从磁盘读取 inode 表(10 毫秒),然后解析它并获取文件的起始 block ,然后读取文件本身(10 毫秒)。总共~20ms

这样的操作太多了。因此,您要在 RAM 中以哈希表的形式添加缓存。 RAM 访问时间为 10 纳秒 - 快了 1000(!)倍。该哈希表中的每一行包含 2 个值。

(inode number or filename) : (starting disk block)

但问题是,一开始你的缓存是空的 - 这种缓存称为冷缓存。要利用缓存的优势,您需要用一些值填充它。这是怎么发生的?当您查找某个文件时,您会在 inode 缓存中查找。如果您在缓存中找不到 inode(缓存未命中),您会说“好的”,并通过 inode 表读取、解析它并读取文件本身来执行完整的读取周期。但是在解析部分之后,您将在缓存中保存 inode 号并解析起始磁盘 block 。这样的情况不断发生——您尝试读取另一个文件,查看缓存,出现缓存未命中(您的缓存已冷),您从磁盘读取,然后在缓存中添加一行。

所以冷缓存不会给你任何加速,因为你仍在从磁盘读取。在某些情况下,冷缓存会使您的系统变慢,因为您需要做额外的工作(在表中查找的额外步骤)来预热缓存。

过了一段时间,你的缓存中就会有一些值,当你尝试读取文件时,你会在缓存和 BAM 中查找!您已找到 inode (缓存命中)!现在您已经有了启动磁盘 block ,因此您可以跳过读取 super block 并开始读取文件本身!您刚刚节省了 10 毫秒!

该缓存称为热缓存 - 具有一些可为您提供缓存命中的值的缓存。

关于caching - 冷缓存和热缓存概念是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22756092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com