目前,我正在将大型目录树从外部HDD复制到服务器的内部存储。拷贝操作的性能基本相当好,即35 of /S与外部硬盘通过USB2连接。
但是,我只获得了大约30,000的性能,然后复制过程没有任何CPU时间。这意味着rsync (也包括cp)不复制任何数据,不更新其标准输出,也不对SIG-项作出反应。大约1分钟后,它又被安排好了,再和35 so /S复制30次,然后什么也没做,等等。
有没有人知道这里会发生什么,或者说出什么工具,我如何才能调查发生的事情?我已经将rsync进程的好值增加到了19,但是这并没有改变任何事情。在rsync的空闲期间,整个系统处于空闲状态(没有其他IO,也没有使用CPU的其他进程。基本上,整个系统是闲置的)。在活动期间,rsync进程有三个线程,它们在“运行”、“不间断睡眠”和“可中断睡眠”之间切换。在非活动期间,所有线程要么处于“不中断睡眠”状态,要么处于“可中断睡眠”状态。因此,我认为rsync必须等待一些持久的IO操作。但我怎么能确定什么手术要花那么多时间?
该系统运行在5.4.341-PvE linux内核上,内部存储器是LVM上的LUKS加密ZFS文件系统。LVM位于mdadm RAID 5的顶部。我用来启动rsync的命令是: rsync -ah --不压缩--进程。
谢谢你的建议!
发布于 2020-07-27 15:40:06
我们发现问题是ZFS使用的缓存。问题是我们没有创建额外的读和写缓存。因此,ZFS使用的默认缓存放在包含数据的zpool中/旁边。因此,对于任何读取操作,从RAID中读取数据,写入缓存(也被写入RAID),然后提供给用户。类似于写作。由于RAID是加密的,每个读和写tiggers多个加密/解密和RAID同步,这导致性能下降后一段时间后,RAM缓冲区是满的。
我们通过为ZFS (ZFS中的L2ARC和ZIL )添加额外的读/写缓存来解决这个问题--在我们的示例中,增加了两个小型HDD。即使缓存放在HDD上,读和写速度也要高得多,性能也不会下降。
https://serverfault.com/questions/1021408
复制相似问题