gpt4 book ai didi

linux - 如何限制复制使用的缓存,以便仍有内存可用于其他缓存?

转载 作者:IT王子 更新时间:2023-10-29 00:18:21 27 4
gpt4 key购买 nike

基本情况:

我正在 openSUSE 中复制一些 NTFS 磁盘.每个都是 2 TB。当我这样做时,系统运行缓慢。

我的猜测:

我相信这可能是由于缓存。 Linux 决定放弃有用的缓存(例如,KDE 4 膨胀、虚拟机磁盘、LibreOffice 二进制文件、Thunderbird 二进制文件等),而是用复制磁盘中的内容填充所有可用内存(总共 24 GB),这将只读一次,然后写入,不再使用。因此,每当我使用这些应用程序(或 KDE 4)时,都需要再次读取磁盘,再次读取磁盘上的膨胀数据会使事情卡住/打嗝。

由于缓存消失以及这些臃肿的应用程序需要大量缓存这一事实,这使得系统非常慢。

因为是USB,磁盘和磁盘 Controller 不是瓶颈,所以用ionice不会让它更快。

我相信这是缓存,而不仅仅是主板太慢了,因为如果我停止复制所有内容,它仍然会不稳定地运行一段时间,直到它重新缓存所有内容。

如果我重新开始复制​​,它会在一分钟后再次出现断断续续的情况。而且,我可以将它限制在 40 MB/s 左右,它再次运行得更快(不是因为它缓存了正确的东西,而是因为主板总线为系统磁盘提供了大量额外带宽)。我完全可以接受我的主板的 I/O 能力被完全消耗(100% 使用,意味着 0% 浪费的功率,这让我很高兴)造成的性能损失,但我不能接受这种缓存机制在这方面表现如此糟糕具体用例。

# free
total used free shared buffers cached
Mem: 24731556 24531876 199680 0 8834056 12998916
-/+ buffers/cache: 2698904 22032652
Swap: 4194300 24764 4169536

我也在 Ubuntu 上尝试了同样的事情,这导致整个系统挂起。 ;)

澄清一下,我不是在问如何为“系统”而是“缓存”留出空闲内存。我知道缓存内存会在需要时自动返回给系统,但我的问题是它没有保留用于缓存特定内容。

有没有什么方法可以告诉这些复制操作限制内存使用,以便一些重要的东西保持缓存,因此任何减速都是正常磁盘使用的结果,而不是重新读取相同的常用文件?例如,是否存在允许用作缓存/缓冲区的每个进程/用户/文件系统的最大内存设置?

最佳答案

nocache命令是这个问题的一般答案!它也在 Debian 和 Ubuntu 13.10 中(辣味蝾螈)。

感谢 Peter,提醒我们注意 rsync 中的 --drop-cache"选项。但这被上游拒绝(Bug 9560 – drop-cache option),支持更通用的解决方案:基于新的"nocache"命令在 rsync 上与 fadvise 一起工作。

您只需在您想要的任何命令前加上“nocache”。它还具有用于描述和修改文件缓存状态的不错的实用程序。例如,这里是使用和不使用 nocache 的效果:

$ ./cachestats ~/file.mp3
pages in cache: 154/1945 (7.9%) [filesize=7776.2K, pagesize=4K]
$ ./nocache cp ~/file.mp3 /tmp
$ ./cachestats ~/file.mp3
pages in cache: 154/1945 (7.9%) [filesize=7776.2K, pagesize=4K]\
$ cp ~/file.mp3 /tmp
$ ./cachestats ~/file.mp3
pages in cache: 1945/1945 (100.0%) [filesize=7776.2K, pagesize=4K]

因此希望这对其他备份程序(rsnapshot、duplicity、rdiff-backup、amanda、s3sync、s3ql、tar 等)和其他您不希望破坏缓存的命令有用。

关于linux - 如何限制复制使用的缓存,以便仍有内存可用于其他缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105203/

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