Diferença entre os comandos 'sar' e 'iostat'

3

Com sar e iowait , podemos obter a utilização do tempo da CPU. Mas, quando executei os dois comandos, pude ver diferenças significativas em suas saídas.

 > iostat && sar 1 1
Linux 2.6.32-042stab090.4 (LinuxBox)     08/14/2014      _x86_64_        (16 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.46    0.00    0.52    0.07    0.00   98.95

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              10.53       760.66        44.67 3464410204  203460004
sdb               2.49       368.15       779.18 1676748162 3548769968
sdc               4.09       192.81        10.71  878170395   48792907

Linux 2.6.32-042stab090.4 (LinuxBox)     08/14/2014      _x86_64_        (16 CPU)

10:35:21 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:35:22 AM     all      0.00      0.00      0.06      0.00      0.00     99.94
Average:        all      0.00      0.00      0.06      0.00      0.00     99.94

É muito difícil para mim decidir qual saída é mais confiável. Qual comando deve ser considerado mais preciso?

    
por Mandar Shinde 14.08.2014 / 07:23

1 resposta

3

Você está executando o iostat sem fornecer nenhum intervalo. Então, ele reportará as estatísticas desde o tempo de inicialização.

Considerando que para o sar, você mencionou 1 intervalo. Isso significa que no relatório sar, o relatório é para o último 1 segundo.

Ambos usam /proc/ para obter esses relatórios, em que todos esses valores são armazenados como contadores (aumenta de vez em quando). Você pode ler muito sobre qual sistema de arquivos esses relatórios usam a partir das man pages (vá até o final da man page). Leia também sobre contadores, se você não entender o meu ponto.

E, em seguida, os relatórios são obtidos conhecendo os valores em dois pontos de tempo e calculando a diferença nos valores para esses dois pontos de tempo. Portanto, se o intervalo não for especificado, pois há apenas um ponto de tempo (ou seja, o tempo em que você executou o comando) e ele considera o tempo de inicialização como outro ponto no tempo. É por isso que você recebe a média desde o momento da inicialização.

    
por 27.10.2016 / 13:03