![为什么当 Transmission 完成下载时 CPU 使用率会突然飙升?](https://linux22.com/image/1043159/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%BD%93%20Transmission%20%E5%AE%8C%E6%88%90%E4%B8%8B%E8%BD%BD%E6%97%B6%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E4%BC%9A%E7%AA%81%E7%84%B6%E9%A3%99%E5%8D%87%EF%BC%9F.png)
我在观看视频时注意到了这一点,下载完成前不久开始延迟,直到下载完成后不久。第二次我使用监控它时top
,CPU 上升到 100% 以上。
我的处理器并不慢(Intel Core i7-3630QM 四核),Transmission 的“平均”CPU 使用率为 3% - 4%。
我想知道这种好奇心的原因是什么以及我能做些什么(除了使用另一个 bit-torrent 客户端)。
答案1
通常,当您尝试观看视频时,视频播放器将需要一些时间来加载播放视频所需的库,经过正确解码后,视频才能正常播放。因此,无论您因加载视频库和解码视频播放而感觉到的短暂滞后如何。
在执行任何数据操作时,CPU 都会消耗其最大可用内存。因此,每当您的 Transmission 完成下载时,它都需要在显示状态为“已完成”之前检查数据。
我认为对于这两种情况的解释可以帮助您理解这个问题,:)
答案2
我猜想 deluge(另一个 torrent 客户端)做同样事情的原因是一样的。当它完成下载时,它会使用哈希算法来检查文件的完整性,并确保下载的文件没有问题。换句话说,它会检查下载的文件是否与其他客户端中的文件 100% 相同。哈希是一个耗费 CPU 的过程,特别是当我们处理较大的文件时。就我而言,我有一台英特尔 i3(不是顶级的,但 CPU 相当不错),检查每 GB 大约需要 1 分钟。这也可能取决于文件的数量,因为哈希是按文件进行的(如果您有几 GB 的多个小档案,则需要更长时间)。我不会担心它,这是 bittorrent 协议的一个很好的功能,禁用它是不值得的(您最终可能会得到无法正常工作的 iso 和损坏的视频文件)。
希望能帮助到你。
答案3
如今,大多数计算机都使用 CPU 中断来控制磁盘控制器。当 Transmission 完成传输时,文件的所有未写入部分都会同时写入磁盘。这会占用更多 CPU,因为磁盘会非常忙于执行所有这些写入操作。