我想问关于内存缓存的问题。
假设我们有带磁盘的Linux机器,以及一些将数据写入磁盘/var/data的应用程序
据我所知,当应用程序将数据写入磁盘时,这些数据也将保存在内存缓存中。
一段时间后,应用程序数据将从内存缓存中删除
是否可以强制将特定数据保存在内存缓存而不是磁盘上?
我提出这个问题的原因是因为我们需要快速读写,而且磁盘在这方面非常慢。
发布于 2020-03-12 09:25:22
保存在内存缓存中
根本就没有这样的东西。从这个buff/cache开始:
]# free -g
total used free shared buff/cache available
Mem: 7 0 3 0 3 6
Swap: 0 0 0这就提供了当前用作缓冲区或缓存的RAM的数量。内核之所以这样做,完全是因为磁盘速度慢,而且通常(如图所示)有足够的RAM。
如果您想为某些文件保留一部分内存,可以将它们放到RAM磁盘(mount -t tmpfs ...)上。但是你必须记住把它们复制回磁盘。
发布于 2020-03-12 09:04:26
我想你可能对记忆的传家宝有误解。从最接近CPU/最快到最慢的世袭:
CPU寄存器>缓存内存>RAM/主存>磁盘
高速缓存内存位于CPU和主内存之间,并且比主内存更快地访问。通常,当访问内存位置时,附近数据块(即地址范围块的副本)被复制到缓存中。然后,下一次访问内存位置时,首先检查缓存,以确定数据是否已经存在,并且不必访问主存就可以节省时间。
所以,我觉得你的问题不太合理。主内存和磁盘之间通常没有中间存储或缓存。目前正在使用的数据存储在RAM中,这是存储和访问数据的最有效方法。如果您想将它保存到以后,在机器关闭后,您可以将它复制到磁盘(因为这是您唯一的选择)。如果您想现在就快速访问数据,除非您必须这样做,否则您不想触摸磁盘。
我不知道有任何方法可以轻松地覆盖缓存内存管理并将某些东西存储到缓存中,但没有显式地将其存储到RAM中。通常,已经有非常好和有效的系统来管理内存缓存。
而且,我不相信数据会在X时间之后从缓存内存中被删除。通常,CPU想要访问的最新数据会将其推送出去。
https://unix.stackexchange.com/questions/572478
复制相似问题