2010-12-01 21 views
9

Tengo un problema que me enloquece. Estoy corriendo arriba en modo batch con el siguiente comando,Uso de la CPU en el modo por lotes superior

top -b -n 1

El problema es que se puede ejecutar en modo batch superior a 100 veces, pero el uso de la CPU nunca cambia más allá del valor original. El uso de la memoria cambia según lo esperado pero la CPU permanece igual. Si simultáneamente ejecuto otra parte superior en una ventana diferente, el uso de la CPU está cambiando para esa parte superior, pero no para la parte superior en el modo por lotes.

Básicamente las estadísticas de la CPU no parecen cambiar en el modo por lotes y hacerlo en modo interactivo. ¿Alguien sabe por qué? Pruébelo usted mismo, ejecute el comando anterior varias veces y observe que el uso de la CPU permanece igual, luego ejecute la parte superior en modo interactivo y observe el cambio constante del uso de la CPU.

+0

Funciona bien aquí, de lo contrario, puede usar 'ps' o quizás' sar | tail -1' – Anders

+0

Veo el mismo comportamiento. El comando por lotes no debe ejecutarse el tiempo suficiente para obtener buenos acumuladores para el uso de la CPU, o algo así. – aschepler

+0

Aschepler, parece que es el caso, pero no he visto esto mencionado en ningún otro lado. Si configura las iteraciones en 2, funciona. El problema es que necesito que funcione para 1 iteración. – toc777

Respuesta

6

En la primera iteración, le muestra el uso promedio de la CPU desde el inicio del sistema.

(Tenga en cuenta que este ya no es el caso para las versiones más nuevas de top).

+0

Sí, este parece ser el caso. – toc777

+2

¿Cómo se puede saber esto? –

2

Aquí hay un trazador de líneas que muestra el uso acumulado de la CPU durante un período de tiempo más largo, 5 segundos en este caso. Puedes ajustarlo con -d flag.

top -b -d 5 -n 2 | awk '$1 == "PID" {block_num++; next} block_num == 2 {sum += $9;} END {print sum}' 
Cuestiones relacionadas