Resposta rápida: não, isso não é realmente possível.
O problema aqui é primeiro com o conceito de porcentagem de CPU. Estritamente falando, isso na verdade não significa nada. Uma CPU tem apenas dois estados: está trabalhando em algo (100%) ou está aguardando.
Portanto, quando uma porcentagem de uso da CPU de 50% é relatada para um processo, isso não significa que apenas 50% da CPU esteja sendo usada. Isso significa que, durante um período de tempo específico, a CPU gastou 50% de seu tempo trabalhando no processo. Por exemplo, se o intervalo de atualização estiver definido como 1 segundo e a CPU gastar meio segundo trabalhando no processo N, a porcentagem da CPU para o processo N será mostrada como 50%.
Com isso em mente, podemos dar uma olhada nas várias maneiras de verificar% da CPU. Para ps
, isso é medido como (de man ps
):
CPU usage is currently expressed as the percentage of time spent
running during the entire lifetime of a process. This is not ideal,
and it does not conform to the standards that ps otherwise conforms to.
CPU usage is unlikely to add up to exactly 100%.
Assim, a porcentagem conforme relatada por ps
é, na verdade, a média durante toda a vida útil do processo. Por contraste, top
relatórios:
The task's share of the elapsed CPU time since the last screen
update, expressed as a percentage of total CPU time.
Eu assumo que gnome-system-monitor
funciona de maneira semelhante e sua% de CPU é também a porcentagem de tempo que a CPU gastou em um determinado processo desde a última atualização. Meu conhecimento em C ++ é essencialmente inexistente, mas as seguintes linhas de proctable.cpp
(parte do código-fonte gnome-system-monitor
) sugere que, de fato, a média está sendo usada desde a última atualização:
/* FIXME: total cpu time elapsed should be calculated on an individual basis here
** should probably have a total_time_last gint in the ProcInfo structure */
glibtop_get_cpu (&cpu);
app->cpu_total_time = MAX(cpu.total - app->cpu_total_time_last, 1);
app->cpu_total_time_last = cpu.total;
Portanto, não é possível concordar com ps
e gnome-system-monitor
porque ps
mostra a porcentagem de tempo que a CPU gastou em um processo desde que o processo foi iniciado e gnome-system-monitor
mostra a porcentagem desde a última atualização .
Também não há razão para imaginar por que você precisaria concordar com esses dois valores. Acho que o que temos aqui é uma espécie de problema XY . Você pode querer fazer uma nova pergunta descrevendo qual é o seu objetivo final, qual problema você está tentando resolver fazendo os dois valores concordarem.