Я использую подсистему Windows для Linux (WSL), и у меня нет опыта работы с возможностями Linux. В последнее время я хотел получить лучшее представление об использовании ЦП процессами, но все больше запутался. Я нахожусь на компьютере с 2 ядрами и 4 логическими ядрами.
В примере использования ЦП, который я хочу обсудить, я запустил 2 независимых последовательных вычисления из кода DFT (физика) с 2 терминалов. В моей системе Windows открыты другие более мелкие процессы (вкладки в Интернете, Thunderbird ...).
Если я проверю использование ЦП из диспетчера задач Windows, он сообщает мне, что я использую ~ 70% ЦП, что, кажется, равномерно распределено по 4 логическим процессорам.
Когда я использую команду top
в Linux, она показывает мне два процесса «pw.x» (вычисления, о которых я говорил), каждый из которых использует ~ 100% ЦП (!). Я не понимаю, что означают эти "100%" значения; 100% чего? Я думал, что это среднее значение по всем отображаемым ядрам. Мой компьютер по-прежнему работает очень плавно, поэтому все блоки ЦП не могут быть использованы кодом DFT
. Если я посмотрю его с помощью mpstat -P ALL
, я получу еще один результат: он сообщает мне, что каждый из 4-х процессоров используется на ~ 20% -30% ...Как это согласуется с диагностикой Windows? Или с помощью команды top?
Cf Снимок экрана ниже для резюме (извините за французский язык в Windows):
В основном мои вопросы следующие:
Согласованы ли эти различные диагностические данные друг с другом?
может кто-нибудь указать мне на справочник для новичков, в котором четко объясняется использование этих команд мониторинга и к чему конкретно относятся сообщаемые количества?
Есть ли команда, которая позволила бы мне узнать, какое ядро что делает? Я выполняю последовательные вычисления (не распараллеленные), и, насколько я понимаю, вычисления обрабатываются на одном ядре каждое, но я могу ошибаться. Если это так, я хотел бы знать, к какому ядру относится каждое вычисление и сколько он использует
Заранее большое спасибо и извинения за вопросы новичков
Я полагаю, что в Top указан процент на поток (логическое ядро), поэтому на вашем компьютере может быть до 4 процессов, каждый из которых указан как 100% ЦП. Если вы не напишете программу, которая простаивает и ждет аппаратных прерываний, все, что вы запускаете, будет занимать 100% потока, в котором она работает, пока она работает. Запускаемые вами процессы будут выполняться только в одном потоке, если вы явно не запрограммируете их на многопоточность, хотя вы можете вызывать многопоточные функции, не зная об этом (некоторые алгоритмы БПФ являются многопоточными).
В верхней части WSL отображаются только процессы Linux, поэтому WSL использует 200 %/4 = 50 % вашего общего количества, но Windows показывает все вместе, поэтому занимает остальные 20 %, чтобы получить до 70 % всего ЦП. время. «mpstat -P all», кажется, улавливает процессы Windows (возможно, это аппаратный вызов более низкого уровня) и сообщает в виде процента от общего времени ЦП, поэтому максимальное значение будет 25% на поток, но в пределах пары процентов может быть настолько близко, насколько это действительно возможно. Единственное, в чем я не уверен, так это в том, почему Windows не показывает 2 потока, привязанных к 100%.