У меня проблема с замедлением работы сервера в очень специфическом сценарии. Факты таковы:
В сценариях 5a или 5b мой WRF начинает внезапно замедляться, а иногда даже в ~ 5 раз медленнее, чем обычно.
Дайте мне знать, если у вас есть идея попытаться избежать этих замедлений.
Одна идея пришла мне в голову после того, как я перешел по некоторым «связанным» ссылкам по этому вопросу. Могут ли прозрачные огромные страницы быть источником этой проблемы? Некоторые статьи настоятельно предполагают, что THP плохо работает в системах NUMA.
Я предлагаю включить службу numad:
yum install numad
systemctl enable numad
systemctl start numad
Numad должен иметь возможность автоматически заботиться о локализации памяти. Ситуация, когда процесс выполняется на ЦП первого узла NUMA, однако его данные находятся в ОЗУ, локальном для второго узла NUMA, больше не должно происходить (если только объем необходимой памяти не превышает емкость ОЗУ, локального для одного узла NUMA).
Я также предлагаю настроить настроенную службу с профилем, который лучше всего соответствует вашему сценарию использования. Вам нужно будет измерить различия и выбрать лучшее (или вы можете создать несколько вариантов).
Возможно, я нашел причину странного поведения на вашем узле. Я искал mpirun и нашел страницу руководства:
https://www.open-mpi.org/doc/current/man1/mpirun.1.php
Там написано:
Краткое резюме
Если вы просто ищете, как запустить приложение MPI, вы, вероятно, захотите использовать командную строку следующей формы:% mpirun [-np X] [--hostfile] Это запустит X копий в вашей текущей среде выполнения окружение (если он работает под поддерживаемым менеджером ресурсов, mpirun Open MPI обычно автоматически использует соответствующий стартер процесса менеджера ресурсов, в отличие, например, от rsh или ssh, которые требуют использования файла хоста, или по умолчанию будет запускать все X копий на локальном хосте), планирование (по умолчанию) циклически по слотам ЦП. См. Остальную часть этой страницы для получения более подробной информации.
Обратите внимание, что mpirun автоматически связывает процессы с начала серии v1.8. При отсутствии дополнительных директив используются три шаблона привязки:
Привязка к ядру: когда количество процессов <= 2
Привязать к сокету: когда количество процессов> 2
Нет привязки: при превышении лимита подписки
Если ваше приложение использует потоки, вы, вероятно, захотите убедиться, что вы либо вообще не привязаны (указав --bind-to none), либо привязаны к нескольким ядрам, используя соответствующий уровень привязки или определенное количество обрабатывающих элементов для каждого процесса приложения. .
В вашем случае с n = 22 привязка не применяется, и потоки могут быть перемещены. Вы можете попробовать привязку к внешнему процессору (например, с набором задач). Придется поэкспериментировать.