O que significa letras 's' e 'u' na utilização da CPU no comando iperf3 com -V?

1

Eu tenho uma pergunta muito simples: Quando estou usando o Iperf3 com meu servidor e no cliente, eu adiciono o parâmetro -V, o que significa que ele exibirá informações mais detalhadas. Ele exibe informações sobre a utilização da CPU no servidor e no cliente. Exemplo de informação exibida:

CPU Utilization: local/sender 0.2% (0.1%u/0.1%s), remote/receiver 11.5% (7.7%u/3.9%s)

Eu não sei o que significam essas letras 'u' e 's', então essa é a minha pergunta, procurando por sua ajuda.

    
por Jacob 04.12.2016 / 22:46

1 resposta

1

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.

    
por 05.12.2016 / 01:13