1

У меня очень простой вопрос: когда я использую Iperf3 с моим сервером и на клиенте, я добавляю параметр -V, что означает, что он будет отображать более подробную информацию, он отображает информацию об использовании процессора на сервере и клиенте. Пример отображаемой информации:

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

Я не знаю, что означают эти буквы 'u' и 's', так что это мой вопрос, я ищу твою помощь.

1 ответ1

1

Комментарий DavidPostill правильна: они стоят для и сер и ей ystem соответственно. Чтобы доказать это, давайте посмотрим на код.

Мы находим строку "Загрузка ЦП" в iperf_locale.c. Этот файл содержит все строки, зависящие от языка, а переменная для строки, которая сообщает об использовании процессора, называется report_cpu .

const char report_cpu[] =
"CPU Utilization: %s/%s %.1f%% (%.1f%%u/%.1f%%s), %s/%s %.1f%% (%.1f%%u/%.1f%%s)\n";

Мы находим эту переменную, используемую в iperf_api.c. Используемая там функция, похоже, более или менее похожа на printf , которая принимает строку формата (наш report_cpu) и заменяет все заполнители в ней читабельной версией данных переменных.

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]);

Четвертый и пятый заполнители, %.1f внутри скобок - это то, что мы исследуем. Похоже, что первые два параметра функции - это некоторый контекст и строка шаблона, соответственно, поэтому мы начнем считать с параметра report_local . Четвертый - test->cpu_util[1] . Некоторые раскопки показывают, что эти трехзначные массивы cpu_util генерируются в iperf_util.c . Интересная часть находится в самом конце функции cpu_util :

pcpu[0] = (((ctemp - clast) * 1000000.0 / CLOCKS_PER_SEC) / timediff) * 100;
pcpu[1] = (userdiff / timediff) * 100;
pcpu[2] = (systemdiff / timediff) * 100;

Слоты 1 и 2 действительно основаны на времени пользователя и системном времени, соответственно, а слот 0 - это общее использование.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .