Использование многоядерных процессоров

Я использую подсистему 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):

Screenshot of conflicting (?) CPU reports

В основном мои вопросы следующие:

  • Согласованы ли эти различные диагностические данные друг с другом?

  • может кто-нибудь указать мне на справочник для новичков, в котором четко объясняется использование этих команд мониторинга и к чему конкретно относятся сообщаемые количества?

  • Есть ли команда, которая позволила бы мне узнать, какое ядро ​​что делает? Я выполняю последовательные вычисления (не распараллеленные), и, насколько я понимаю, вычисления обрабатываются на одном ядре каждое, но я могу ошибаться. Если это так, я хотел бы знать, к какому ядру относится каждое вычисление и сколько он использует

Заранее большое спасибо и извинения за вопросы новичков

1
задан 21 February 2019 в 10:12

1 ответ

Я полагаю, что в Top указан процент на поток (логическое ядро), поэтому на вашем компьютере может быть до 4 процессов, каждый из которых указан как 100% ЦП. Если вы не напишете программу, которая простаивает и ждет аппаратных прерываний, все, что вы запускаете, будет занимать 100% потока, в котором она работает, пока она работает. Запускаемые вами процессы будут выполняться только в одном потоке, если вы явно не запрограммируете их на многопоточность, хотя вы можете вызывать многопоточные функции, не зная об этом (некоторые алгоритмы БПФ являются многопоточными).

В верхней части WSL отображаются только процессы Linux, поэтому WSL использует 200 %/4 = 50 % вашего общего количества, но Windows показывает все вместе, поэтому занимает остальные 20 %, чтобы получить до 70 % всего ЦП. время. «mpstat -P all», кажется, улавливает процессы Windows (возможно, это аппаратный вызов более низкого уровня) и сообщает в виде процента от общего времени ЦП, поэтому максимальное значение будет 25% на поток, но в пределах пары процентов может быть настолько близко, насколько это действительно возможно. Единственное, в чем я не уверен, так это в том, почему Windows не показывает 2 потока, привязанных к 100%.

0
ответ дан 20 February 2020 в 15:53

Другие вопросы по тегам:

Похожие вопросы: