O comentário de DavidPostill está correto: eles representam o sistema u ser e s , respectivamente. Para provar isso, vamos ver o código .
Encontramos a string "Utilização da CPU" em iperf_locale.c
. Esse arquivo parece ter todas as cadeias específicas do idioma, e a variável da linha que relata o uso da CPU é chamada report_cpu
.
const char report_cpu[] =
"CPU Utilization: %s/%s %.1f%% (%.1f%%u/%.1f%%s), %s/%s %.1f%% (%.1f%%u/%.1f%%s)\n";
Encontramos a variável usada em iperf_api.c
. A função usada parece ser mais ou menos semelhante a printf
, que pega uma string de formatação (nossa report_cpu
) e substitui todos os marcadores nela por uma versão legível por humanos das variáveis dadas.
iperf_printf(test, report_cpu, report_local, test->sender?report_sender:report_receiver, test->cpu_util[0], test->cpu_util[1], test->cpu_util[2], report_remote, test->sender?report_receiver:report_sender, test->remote_cpu_util[0], test->remote_cpu_util[1], test->remote_cpu_util[2]);
O quarto e o quinto espaço reservado, o %.1f
s dentro dos parênteses, são o que estamos investigando. Parece que os dois primeiros parâmetros para a função são algum tipo de contexto e a string de modelo, respectivamente, portanto, começaremos a contar no report_local
one. O quarto é test->cpu_util[1]
. Algumas escavações revelam que essas matrizes cpu_util
de três valores são geradas em iperf_util.c
. A parte interessante está no final da função cpu_util
:
pcpu[0] = (((ctemp - clast) * 1000000.0 / CLOCKS_PER_SEC) / timediff) * 100;
pcpu[1] = (userdiff / timediff) * 100;
pcpu[2] = (systemdiff / timediff) * 100;
Os slots 1 e 2 são de fato baseados no tempo do usuário e na hora do sistema, respectivamente, enquanto o slot 0 é o uso total.