首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冷缓存和温缓存概念是什么意思?

冷缓存和温缓存概念是什么意思?
EN

Stack Overflow用户
提问于 2014-03-31 07:45:45
回答 5查看 45.4K关注 0票数 72

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

这些术语意味着什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-03-31 08:34:37

TL;博士有一个类比,一个冷发动机和一个温暖的汽车引擎。冷缓存-没有任何值,也不能给你任何加速,因为,嗯,它是空的。温缓存有一些值,可以使您加快速度。

缓存是一种保存某些值(inode、内存页、磁盘块等)的结构。为了更快的查找。

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

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

比方说,您有一个带有某些文件系统的Linux系统。要访问文件系统中的文件,您需要知道文件从磁盘开始的位置。此信息存储在inode中。为了简单起见,我们说inode表存储在磁盘的某个地方(所谓的“超级块”部分)。

现在想象一下,您需要读取文件/etc/fstab。要做到这一点,您需要从磁盘(10 ms)读取inode表,然后解析它并获取文件的开始块,然后读取文件本身(10 Ms)。总~20

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

代码语言:javascript
复制
(inode number or filename) : (starting disk block)

但问题是,在开始时,缓存是空的-这样的缓存被称为冷缓存。要利用缓存的好处,您需要在缓存中填充一些值。这是怎么发生的?当您查找某个文件时,您会在inode缓存中查找。如果在缓存中找不到inode (缓存丢失),您就会说‘it’,并对inode表进行完整的读取、解析和读取文件本身。但是在解析部分之后,您将在缓存中保存inode编号并解析启动磁盘块。然后你试着读取另一个文件,在缓存中查找,得到缓存丢失(缓存是冷的),从磁盘读取,在缓存中添加一行。

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

过了一段时间,您将在缓存中得到一些值,并在某个时候尝试读取该文件,然后在缓存和BAM中查找!您已经找到了inode (缓存命中)!现在您已经启动了磁盘块,所以您跳过读取超级块并开始读取文件本身!你刚刚节省了10毫秒!

该缓存称为温缓存-缓存,它具有一些值,可以使缓存命中。

票数 121
EN

Stack Overflow用户

发布于 2014-04-01 00:58:43

背景:

Cache是一个越来越小、速度更快的memory,它有助于避免CPU访问main memory (更大更慢)以节省时间(cache读取比从main memory读取更快)。但是,只有当程序所需的数据是cached (从main memory读取到cache)并且是有效的数据时,这才有帮助。而且,随着时间的推移,cache会被数据填充。因此,cache可以是:

  1. 空的,或
  2. 可以包含无关的数据,或者
  3. 可以包含相关数据。

,现在回答您的问题:

冷缓存:当cache为空或有无关数据时,,因此CPU需要更慢地从main memory读取程序数据。

热缓存:cache包含相关数据时,程序的所有读取都满足于cache本身。

所以,热缓存是可取的,冷缓存不是。

票数 40
EN

Stack Overflow用户

发布于 2015-11-19 12:23:29

非常好的回答:avd。

Cache只是一个空白缓存或一个陈旧数据的缓存。

另一方面,热缓存维护系统所需的有用数据。它帮助您实现更快的处理;大多数情况下,它用于几乎实时的请求处理。有些系统/流程在开始满足用户请求之前就需要一些现成的信息;比如在处理用户请求之前需要市场数据/风险信息/安全信息等的交易平台。如果对于每个请求,流程必须查询DB/服务才能获得这一关键信息,这将是很费时的。因此,缓存它是个好主意;通过热缓存( Hot ),这是可行的。应该定期维护此缓存(更新/删除等);否则,随着时间的推移,您的缓存可能会随着不可缺少的数据而增大,您可能会注意到性能退化。

要创建Hot,有一种方法是延迟填充缓存,我的意思是,当您收到请求时,就会填充cahce;在这种情况下,最初的请求会很慢,但是后续的请求会更快。另一种方法是在进程启动时(或在用户请求开始之前)加载数据,并将缓存保持到进程存在为止。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22756092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档