了解 rsync 使用的实际时间和 usr+sys 时间之间的巨大差异吗?

了解 rsync 使用的实际时间和 usr+sys 时间之间的巨大差异吗?

我开始rsync同时运行三个程序,以便在外部硬盘驱动器和内部硬盘驱动器之间传输数据。当他们完成后,我得到了他们的计时结果:

$ time rsync -a /media/t/1/  ./   
real    236m14.131s
user    22m57.025s
sys     12m35.219s

$ time rsync -a /media/t/2/  ./   
real    106m45.245s
user    3m6.938s
sys     1m25.902s


$ time rsync -a /media/t/3/  ./  
real    55m48.494s
user    2m6.053s
sys     0m52.557s

real 和 user+sys 之间的巨大差异主要是因为rsync我的外部和内部硬盘驱动器之间主要执行 IO 操作,并且 IO 操作不是在 cpu 中运行,而是在 DMA 或两个硬盘驱动器的控制器中运行,因此不计算在内进入用户或系统时间?

注意

  • 每个rsync进程可能都是多线程的,这会增加用户+系统时间。

  • 前半段时间,三个程序同时运行,互相竞争IO?那可能对实时性有很大贡献?

  • 第一个程序传输 108GB,第二个程序传输 17GB,第三个程序传输 12GB。

  • 我的操作系统是64位Ubuntu 14.04,我的电脑是Thinkpad T400。

答案1

当磁盘 I/O 发生时,CPU 可用于其他用途,因此它不计入进程的 CPU 时间(用户和系统数据)。这是因为,正如您所猜测的,该操作发生在磁盘中(可能在焊接到磁盘板上的越来越多的微控制器中)

相关内容