Questions tagged «cache»

缓存是存储数据的组件,因此可以更快地处理对该数据的将来请求;存储在缓存中的数据可能是较早计算的结果,也可能是其他位置存储的数据的重复。

1
为什么不能自动回收平板对象
更新:我不再在4.9。*上出现此问题。*不确定何时修复。 每天,在进行完整的系统备份之后,各种程序都会因读取错误而失败,直到我运行echo 2 > /proc/sys/vm/drop_caches以释放可回收的平板对象。 例如,这sudo apt-get update是备份后的输出。 $ sudo apt-get update Hit http://ftp.ca.debian.org unstable InRelease Hit http://ftp.ca.debian.org experimental InRelease Ign http://dl.google.com stable InRelease Get:1 http://ftp.ca.debian.org unstable/contrib amd64 Packages/DiffIndex [7,819 B] Hit http://dl.google.com stable Release.gpg Hit http://ppa.launchpad.net wily InRelease Get:2 http://ftp.ca.debian.org unstable/non-free amd64 Packages/DiffIndex [6,577 B] Hit http://dl.google.com stable Release …


3
100%分页到页面缓存中的文件被另一个进程修改后会发生什么
我知道修改页面缓存页面后,它会被标记为脏页面并需要回写,但是在以下情况下会发生什么: 方案: 文件/ apps / EXE是可执行文件,已完全分页到页面缓存中(所有页面都在缓存/内存中),并由进程P执行 然后,连续发行版将/ apps / EXE替换为全新的可执行文件。 假设1: 我假设进程P(以及其他任何具有引用旧可执行文件的文件描述符的人)将继续使用旧的/ apps / EXE内存,并且尝试执行该路径的任何新进程都将获得新的可执行文件。 假设2: 我假设,如果不是文件的所有页面都映射到内存中,那么在出现页面错误要求文件中的页面已被替换之前,一切都会好起来的,并且可能会发生段错误? 问题1: 如果用vmtouch等文件锁定文件的所有页面,这是否会完全改变方案? 问题2: 如果/ apps / EXE位于远程NFS上,那会有什么不同吗?(我认为不是) 请更正或验证我的2个假设,并回答我的2个问题。 我们假设这是一个带有某种3.10.0-957.el7内核的CentOS 7.6盒子 更新:进一步考虑,我想知道这种情况是否与其他脏页情况没有区别。 我猜写新二进制文件的过程将进行读取并获取所有缓存页面,因为它们都已被分页,然后所有这些页面都将被标记为脏。如果它们被锁住了,则在ref计数变为零后,它们将只是无用的页面而占用核心内存。 我怀疑当前执行的程序结束时,其他任何东西都将使用新的二进制文件。假设一切正确,我猜只有在仅部分文件进入页面时才有意思。

1
如何配置Linux优先于内容缓存文件元数据?
我想将系统设置为使用大多数RAM进行文件系统元数据缓存,但仅使用相当少量的空间进行读/写缓存和预取文件。理想情况下,我希望能够浏览文件系统(尽可能多地容纳在RAM中),而无需旋转磁盘,直到我真正打开文件为止。 详细信息如下: 我有一个自制的文件服务器。LVM卷中约有9TB的空间有五个磁盘,但只有4GB的RAM。由于服务器除了处理文件外没有做其他事情,因此大多数RAM用于缓存。(“免费”报告用于缓​​存的3.9G中有3.4G。) 该服务器位于我的卧室里,如果所有磁盘都在旋转,它发出的噪音足以使它安静时变得烦人。(我并不是说寻求噪声,只是旋转噪声。磁盘的制造商和型号各不相同,我认为转速的微小差异会产生干扰。磁盘本身并不嘈杂,但是如果其中一些磁盘一起旋转,则有因此,我将服务器配置为在大多数情况下将磁盘降速旋转。 当然,如果当我在文件管理器中打开文件夹时磁盘旋转下来,则延迟会延迟哪个磁盘旋转该文件夹。只是那没什么大不了的。但是根据我的位置,如果LVM恰好在不同的磁盘上散布每个子文件夹的元数据,它可能会连续发生几次。 我怀疑Linux主要将文件内容以及可能的预取数据填充到其缓存中。缓存不足以确保顺利播放,只有几个MB。如果我刚看过电影,可能很快就不会再看了。如果发生预取,则在超过几MB后,对我而言也是完全没有用的。 但是人们会认为4GB应该足以缓存大多数文件系统元数据,至少是那些已经被访问过的部分,这样我就可以浏览文件而无需旋转磁盘,如果事实证明它们是睡眠。 打开文件时仍然会有延迟,但是没关系。比较“点击;等待 ; 点击 等待 ; 点击 等待 ; 玩; 观看”和“点击”;点击 点击 玩; 等待 ; 看”。前者令人沮丧。后者几乎是可以预期的。 笔记: 重要的是,内核是3.2,操作系统是Debian,卷是lvm2,而FS是ext4。 旋转的唯一原因是晚上的噪音。否则服务器将连续运行。(我尽可能将其设置为低功耗。)降速延迟根据一天中的时间而有所不同。 硬盘仅用于介质。操作系统位于单独的(小型)闪存驱动器上。(这意味着任何加速延迟都来自数据,而不仅仅是因为它需要一些/usr东西。如果可以以某种方式帮助解决我的问题,我可以在其中节省一些GB。 对性能的合理影响并不大。无论如何,这些磁盘都比我的网络快。

2
为什么Linux在快要快用完时清除内存缓存?
这是运行CentOS的VPS上具有512MB RAM和nginx / php-fpm / mysqld为每天成千上万的访客提供内容(主要是静态的)的VPS的内存图。 (x轴上的天数) 如您所见,它在缓存和缓冲区区域中非常跳跃。内存缓存将以不规则的时间间隔清除(排除负责的cron作业)。通常但不总是将其清除到不再增长的程度。有时它几乎全部清除,而其他时候只有一半清除。 我试图了解这些清除背后的逻辑。我希望文件数据被缓存的时间更长,并且清除内存缓存后不会看到任何其他程序使用比通常更多的内存。 这是正常的行为,还是我缺少了什么? 更新:内存升级似乎已经稳定了图表。仍然有少量下降,但没有比升级之前重要的地方。
14 linux  memory  cache 

1
lshw和lscpu在缓存上存在分歧-正确吗?
我试图找出有关缓存的详细信息(特别是哪些缓存在内核之间共享,哪些不在内核之间),并且陷入了不一致的境地。 sudo lshw 说 *-cache:0 description: L1 cache physical id: a slot: Internal Cache size: 64KiB capacity: 64KiB capabilities: synchronous internal write-back *-cache:1 description: L2 cache physical id: b slot: External Cache size: 8MiB capabilities: synchronous internal write-back 但lscpu声称 L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: …

3
是否有一条命令将强制Linux刷新NFS共享上一个文件的缓存?
与StackOverflow上的这个问题有关,我想知道是否有一种方法可以刷新NFS缓存/强制Linux查看NFS共享上文件的最新副本。 我遇到一种情况,其中四台Apache服务器通过NFS挂载相同的目录,当一台服务器对文件进行更改时,其他服务器需要大约5到10秒才能看到该更改。如果在此窗口中对该文件进行了第二次更改,则它可能会覆盖第一个更改。 fstab文件系统的条目是: 172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0 是否有一条命令将强制Linux刷新NFS共享上一个文件的缓存?
14 nfs  cache 

1
在带电池的笔记本电脑上禁用ext4的安全栅栏是否安全?
手册页说明barrier了ext4 的选项: 写屏障会强制对日志提交执行正确的磁盘排序,从而使易失性磁盘写缓存可以安全使用,但会降低性能。如果您的磁盘以某种方式由电池供电,则禁用障碍可以安全地提高性能。 带电池(和SSD)的笔记本电脑是否算作具有电池支持的磁盘?那么,barrier=0在笔记本电脑上使用ext4安全吗?

2
30%的RAM是“缓冲区”。它是什么?
$ free -h total used free shared buff/cache available Mem: 501M 146M 19M 9.7M 335M 331M Swap: 1.0G 85M 938M $ free -w -h total used free shared buffers cache available Mem: 501M 146M 19M 9.7M 155M 180M 331M Swap: 1.0G 85M 938M 如何在输出中描述或解释“缓冲区” free? 我对该系统没有任何(已知)问题。我只是感到惊讶和奇怪,看到“缓冲区”几乎与“缓存”一样高(155M与180M)。我认为“缓存”代表文件内容的页面缓存,并且往往是“缓存/缓冲区”的最重要部分。我不太清楚什么是“缓冲区”。 例如,我将其与具有更多RAM的笔记本电脑进行了比较。在我的笔记本电脑上,“缓冲区”数字比“缓存”(200M与4G)小一个数量级。如果我对什么是“缓冲区”有一个正确的了解,那么我可以开始问为什么在较小的系统上缓冲区可能会增长到如此大的比例。 man proc (我忽略了“大”的荒谬定义): …
13 linux  memory  cache 

3
清理临时文件〜/ .cache / duplicity / temp失败
通常,当我运行Duplicity时,会在运行结束时看到如下错误消息: Cleanup of temporary file /home/user/.cache/duplicity/9a169830d41477b2dbc3c5b32edd4e8a/duplicity-MEXhMY-tempdir/mktemp-StAkzj-1 failed 提到的目录将包含大约十个文件,这些文件将在下次运行Duplicity时删除。 知道为什么在运行增量备份时有时会失败吗?我本人没有看到任何模式,也没有运气找到其他人提到同一问题。某个电子邮件列表中的某个人曾经提到他的语言环境导致Duplicity出现问题。我曾尝试从正常的挪威bokmål语言环境更改为en-US,但仍然看到了问题。 这是Duplicity的正常操作吗? 在三个不同的系统上可以看到它:两个Ubuntu 13.04 64位桌面和一个Ubuntu Server 13.04 64位。

1
“高速缓存”存储器实际上是免费的吗?
运行时cat /proc/meminfo,您将在顶部获得以下三个值: MemTotal: 6291456 kB MemFree: 4038976 kB Cached: 1477948 kB 据我所知,“已缓存”值是Linux系统创建的磁盘缓存,如果任何应用程序需要更多RAM,它将立即释放,因此Linux永远不会用完内存,直到MemFree和“已缓存”都为零。 不幸的是,/ proc / meminfo没有报告“ MemAvailable”,可能是因为它在虚拟服务器中运行。(内核版本为4.4) 因此,出于所有实际目的,可用于应用程序的RAM是MemFree + Cached。 这种观点正确吗?
11 linux  memory  cache  meminfo 

3
加快复制1000000个小文件的速度
我的目录中有1000000个4-20 KB文件。我需要复制该目录。但是似乎我必须对每个文件进行搜索,因此这需要花费相当长的时间。 有什么方法可以加快速度吗? 我目前在想,如果我可以获取这些文件所占用的磁盘块,则可以对它们进行排序,合并关闭的块(假设顺序读取通常比查找要快)并读取这些块,以便它们位于RAM中缓存(我有32 GB RAM),然后再进行复制。 但是,要使其正常工作,我需要一种方法来确定文件位于哪些块上。 我在磁性设备(即非SSD)上使用EXT4。 编辑: 这应该可行,但不能: ls | parallel -IOO --pipe "sudo parallel -j100 hdparm --fibmap {}'|tail -n +5'" | sort -nk 2 | perl -ane 'if($u+10000 < $F[1]) { print "$l ",($u-$l),"\n"; $l=$F[1] } $u=$F[2]' | sudo parallel --colsep ' ' dd if=/dev/sda1 skip={1} bs=512 …

2
如何禁用处理器的L1和L2缓存?
是否可以在Ubuntu 14.04上禁用L1和/或L2缓存(最好使用Python之类的高级语言)?如果是这样,怎么办? 另外,禁用缓存是否会在不同体系结构之间显着不同?如果是这样,我对ARM Cortex-A15更感兴趣。 编辑 在研究如何禁用缓存时,我确实从kernel.org文档中找到了/ proc / sys / vm /中的“ drop_caches”文件。 “这样做会导致内核丢弃干净的缓存,以及可回收的平板对象(如dentries和inode)。一旦删除,它们的内存就会释放。” ... “此文件不是控制各种内核高速缓存(inodes,dentries,页面高速缓存等)增长的方式。当系统上其他地方需要内存时,内核会自动回收这些对象。” 这似乎不像我正在寻找的那样,因为这不仅不似乎会禁用缓存,而且我认为虚拟内存位于操作系统内,而不位于硬件上。我的目标是禁用缓存,因此必须在其他地方(例如RAM内)寻找所需的内存。 编辑 澄清一下,我了解禁用缓存会对系统造成什么影响。但是,这是在太空应用中提高安全性关键应用可靠性的一种常用技术。以下是一些记录此现象的资源: 通过高速缓存减少嵌入式软件辐射引起的故障 在空间辐射环境中对微处理器进行地面辐射测试的指南 甚至有关于该主题的书籍: 电子中的电离辐射效应:从记忆到成像仪
10 linux  ubuntu  python  arm  cache 

1
如何知道dm-cache缓存了什么?
我已经成功使用dm-cache一段时间了。现在,我想知道当前在缓存中的文件。我知道dm-cache适用于块,而不适用于文件,但是由于上面有一个文件系统,从理论上讲应该可以将其转换为要缓存的文件(的一部分)。 当然,我关心一个实际的解决方案:如何列出dm-cache中当前的内容?
10 linux  cache  ssd 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.