Dav*_*fer 5 linux performance cache
我有一个/dev/mydisk
基于一系列功能的设备:LUKS 加密的软件 RAID-1。
有时,我/dev/mydisk
会将内容备份到外部 USB 磁盘,该磁盘本身使用 LUKS 加密。需要传输几个 100 GiB。这个操作不是简单的dd
而是递归的cp
(我还是需要改用rsync
)
备份开始一段时间后,整个系统的交互性急剧下降。KDE 接口显然在等待获得批准的内存请求而窒息而死。提示的等待时间为 2 分钟并不罕见。等待网络 I/O 同样需要很大的耐心。这与baloo
启动并决定解压缩每个 zip 并为每个文件内容编制索引以用于未知目的时发生的行为类似:系统变成沼泽独木舟。
内核似乎将所有 RAM 提供给复制进程,并且不愿意将其交还给交互式进程一个机会。RAM 并不寒酸:23 GiB。还有 11 GiB 的交换空间,以防万一,但它随时都会被几个 MiB 占用。
是否可以确保交互式进程优先于复制进程获得它们的 RAM?如果是这样,如何?
版本信息:
感谢大家到目前为止的答案!
一旦知道要搜索什么,就会发现一些东西。
我拖进来的东西:
dd
,补救方法是使用标志oflag=direct
绕过页面缓存。为什么现在没有处理 I/O 调整的专家系统..?
我搜索了,虽然文档没有提到它,但nocache
应该可以正常工作 writes。虽然在复制小文件时它会运行得更慢,因为它需要 fdatasync()
对每个文件进行调用。
(使用 Linux 特定的功能可以减少 大量fdatasync()
/调用的影响。请参阅有关 IO 和缓存效果的相关答案中有关工作原理的注释“[1]”。但是,这需要更改为 defer ,并且这在某些情况下可能会产生不需要的副作用:-(.)fsync()
dpkg
nocache
close()
另一种想法是在 cgroup 中运行复制过程,可能使用systemd-run
,并设置内存消耗限制。cgroup 内存控制器控制缓存和进程内存。我找不到该systemd-run
命令的一个很好的示例(也许有人会提供一个:-)。
归档时间: |
|
查看次数: |
981 次 |
最近记录: |