我正在运行 rsync 进程以将我的文件同步到远程位置。I/O 负载相当高,主要是在访问远程位置时。本地位置是机器磁盘。
我多次终止了 rsync 进程(使用 Ctrl-C)以适应其他任务。
不久前,我简单地检查了一下,发现全部机器重启后启动的 rsync 进程处于 D 状态运行。
就像这里,
处于 D 状态的进程不会立即处理信号,因为它目前正处于等待磁盘的状态(通常如此,代码中的字母 D 就是由此而来的)。如果进程卡住的时间较长,或者多个进程处于相同状态,则表示存在问题。那么问题可能与高 I/O 负载有关(例如,太多进程想要从速度太慢的磁盘读取数据)。
再进行一些探索就会发现。
以上内容表明流仍然畅通。
正如我已经指出的那样,此 rsync 任务涉及相当高的 I/O 负载(大量写入 Google Drive)。但这是否意味着几个小时后无法关闭流?
当发出 kill 命令 ( killall -KILL rsync
) 时,这些进程就消失了,没有任何抱怨的迹象。
我使用 Ctrl-C 终止是否犯了错误?
处理偶尔终止 rsync 进程的需求的最佳方法是什么?
还有哪些措施可以改善整体情况?