mgu*_*utt 3 linux performance filesystems memory hard-disk
Linux的磁盘缓存(页缓存)用于缓存文件数据并使用尽可能多的RAM。升级服务器的 RAM 后,我下载大文件的速度比磁盘允许的速度要快。但前提是该文件之前已下载过一次,这对我来说绝对是合乎逻辑的:
但这是否意味着,一个与我的缓冲区大小一样大或更大的文件,它将覆盖所有更频繁访问的缓存文件?或者是否有一种智能机制可以在不再访问大文件后“重新抓取”那些“热门”文件?
\n\n\n但这是否意味着,一个与我的缓冲区大小一样大或更大的文件,它将覆盖所有更频繁访问的缓存文件?
\n
不,缓存比这更聪明。页面高速缓存中的页面在两个列表中进行跟踪:非活动列表和活动列表。当一个页面出现故障时(即从磁盘读取数据),它最初被添加到非活动列表中;如果再次访问它\xe2\x80\x99,则将其提升到活动列表中。页面仅从非活动列表中逐出。
\n\n特别是,这意味着读取一次的大文件不会\xe2\x80\x99t 驱逐多次使用的较小文件。
\n\n这也解释了您所看到的行为。当您第一次下载大文件时,它会被读入缓存,但随着 Web 服务器处理该文件而逐渐被逐出。因此,您的第二次下载并未在缓存中启动\xe2\x80\x99;但它最终赶上了仍在缓存中的页面。第二次下载导致相应的页面变得更适合保留在缓存中,而您的第三次下载则在缓存中找到了所有内容。
\n\n您\xe2\x80\x99将在内核源代码中找到此方法的详细说明。
\n\n\n\n\n或者是否有一种智能机制可以在不再访问大文件后“重新抓取”那些“热门”文件?
\n
然而,这是内核不具有的智能机制(一个类似的例子是当系统安静时内核将未使用的页面移动到交换的持久想法;它不具有 xe2x80x99t) 。内核\xe2\x80\x99不会尝试太多地预测未来;\xe2\x80\x9crule\xe2\x80\x9d 的例外之一是它确实在块设备上执行预读,但 \xe2\x80\x99s 关于它。
\n| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |