Entenda a grande diferença entre o tempo real e usr + sys usado pelo rsync?

1

Comecei a executar rsync em três programas ao mesmo tempo para transferir dados entre meu disco rígido externo e meu interno. Quando eles terminaram, eu tenho seus resultados de tempo:

$ 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

É a grande diferença entre real e user + sys principalmente porque rsync executam principalmente operações IO entre meus discos rígidos externos e internos, e as operações de E / S não são executadas na cpu mas no DMA ou nos controladores dos dois discos rígidos e, portanto, não contam nem para o usuário nem para o sistema?

Note que

  • cada processo rsync é provavelmente multithreaded, o que aumenta o tempo do usuário + sys.

  • na primeira metade do tempo, os três programas são executados ao mesmo tempo, competindo entre si por IO? Isso pode contribuir muito para o tempo real?

  • O primeiro programa transferiu 108 GB, o segundo de 17 GB e o terceiro de 12 GB.

  • meu sistema operacional é o Ubuntu 14.04 de 64 bits e meu computador é o Thinkpad T400.

por Tim 09.03.2015 / 15:20

1 resposta

1

A CPU está disponível para outros usos enquanto a E / S do disco ocorre, portanto, não conta para o tempo de CPU de um processo (os números de usuário e de sistema). Isso porque, como você adivinhou, essa operação está acontecendo nos discos (provavelmente em mais ou mais microcontroladores soldados nas placas do disco)

    
por 09.03.2015 / 15:46

Tags