Você pode tentar depurar o que está acontecendo usando top
ou htop
.
top
& htop
mostra a quantidade de recursos que um processo específico está consumindo. Eu executaria seu processo assim: /usr/bin/time myproc
para ver quanto tempo está realmente levando para começar. Este comando deve mostrar o mesmo tempo de usuário, mas diferentes tempos de passagem nas duas máquinas.
Uma vez estabelecido que o processo está tomando o mesmo tempo "efetivo" nos vários sistemas, você pode usar top
ou htop
para determinar quais "outros" processos estão atrasando o sistema que esse processo está demorando mais na machineA vs. machineB.
Exemplo
Digamos que eu tenha o script a seguir, doit.bash
.
#!/bin/bash
a=0
while [ 1 ]; do
let a=a+1
(( $a==100000 )) && exit
done
Eu então o executo no sistema descarregado:
$ /usr/bin/time ./doit.bash
1.25user 0.10system 0:01.38elapsed 98%CPU (0avgtext+0avgdata 1272maxresident)k
0inputs+0outputs (0major+366minor)pagefaults 0swaps
Eu então executo este comando para simular alguma carga na minha caixa:
$ dd if=/dev/zero of=/dev/null
Repetindo uma execução de doit.bash
:
$ /usr/bin/time ./doit.bash
2.32user 0.20system 0:02.98elapsed 84%CPU (0avgtext+0avgdata 1268maxresident)k
0inputs+0outputs (0major+365minor)pagefaults 0swaps
Você pode ver que doit.bash
demorou mais para ser executado nos dois termos do tempo total do usuário e do tempo decorrido.
- run1 - (usuário): 1,25 segundos - (decorrer): 1,38 segundos
- run2 - (usuário): 2,32 segundos - (decorrer): 2,98 segundos
NOTA: certifique-se de Ctrl + C executar o comando dd
quando estiver pronto.