A descrição 'real', 'usuário' e 'sys' do tempo (1) diferem quando não deveriam?

1

Eu leio esta importante pergunta nas descrições de 'real', 'user' e 'sys' e pensei em jogar um pouco. Alguém pode explicar por que

[root@lux ~]# time dd if=/dev/zero of=del.large bs=10K count=32768
32768+0 records in
32768+0 records out
335544320 bytes (336 MB) copied, 0.623293 seconds, 538 MB/s

real    0m0.717s
user    0m0.007s
sys     0m0.709s
[root@lux ~]# time dd if=/dev/zero of=del.large bs=100K count=32768
19838+0 records in
19838+0 records out
2031411200 bytes (2.0 GB) copied, 47.31 seconds, 42.9 MB/s


real    0m47.401s
user    0m0.009s
sys     0m3.395s

Claramente real = user + sys na primeira avaliação. Por que não é o mesmo no segundo teste?

    
por physicsmichael 11.08.2011 / 02:52

2 respostas

3

Devido à queda extrema na taxa de dados reportada (de 538 MB / s para 42,9 MB / s), eu suspeito que os 336M escritos em seu primeiro teste se encaixam inteiramente no cache de gravação do drive, então o processo acabou dados para a unidade, que armazenou em cache e relatou o sucesso imediatamente.

No segundo teste, por outro lado, o 2.0G de dados não se encaixava no cache, então o kernel tinha que enviar alguns dos dados, esperar que ele fosse gravado no disco (ocupando o tempo do relógio de parede). , mas sem tempo de CPU), envie mais dados, aguarde a gravação, etc., até que todos os dados tenham sido finalmente aceitos pela unidade. Os segundos "extras" no segundo teste são o tempo gasto para a conclusão das operações de E / S.

    
por 11.08.2011 / 12:00
0

tempo real não é necessariamente igual ao tempo do usuário + tempo sys em um sistema multiprocessador. User Time + Sys Time é o tempo gasto pela CPU, enquanto o tempo real é a quantidade real de tempo usada.

Editar: aparentemente foi perguntado antes: link

    
por 11.08.2011 / 03:04

Tags