Максимальный процент процесса оперативной памяти должен использоваться - PullRequest
0 голосов
/ 26 августа 2018

В двух словах:

Я ученый в области вычислений, и у меня есть дорогостоящее (процессорное время) моделирование для запуска на компьютерном кластере.

Самая интенсивная загрузка процессора в моей программе - это двоичная древовидная структура, которая используется для ускорения моего кода.Дерево растет по мере продвижения симуляции, и чем оно больше, тем лучше прирост производительности.Я заранее знаю, насколько большим может быть мое двоичное дерево до того, как моя память заполнится.

Подробности:

Сервер использует в Red Hat 6.7.

Каждый узел содержит:

  1. 12 ЦП: ЦП Intel (R) Xeon (R) E5-2640 0 @ 2,50 ГГц
  2. 64 ГБ ОЗУ, 8 ГБПодкачка памяти

Моя основная часть кода написана на Fortran, а остальная часть написана на C / C ++ - некоторые из используемых библиотек не имеют интерфейса Fortran.Кодекс является решателем CFD для турбулентных реагирующих потоков.Я использую Cantera для термодинамических, транспортных и химических терминов, Boost library для жестких интеграторов и затем несколько Blas / Lapack для матричных операций.

Вопрос:

Должен ли я стремиться увеличить объем ОЗУ (скажем, 99% доступной памяти) или это повлияет на производительность процессора?Если да, каков оптимальный процент использования памяти?

1 Ответ

0 голосов
/ 26 августа 2018

Я полагаю, что ваш кластер работает под управлением Linux, поскольку большинство кластеров HPC работают.

Ваша программа (фактически процесс ) работает в своем виртуальном адресном пространстве , а не непосредственно в оперативной памяти.ОЗУ - это ресурс, управляемый ядром вашей ОС.Прочитайте Операционные системы: три простых части , чтобы понять больше.

Вам нужно избегать избиения .

Как правило(только), поэтому детали, безусловно, неверны:

Вам, вероятно, нужно спросить своего системного администратора (например, потому что это могут быть другие процессы, выполняющиеся на том же узле, или потому что он может выделить больше ресурсов для вас).

Если каждый вычислительный узел имеет некоторую «разумную» оперативную память (например, 128 Гбайт или менее в 2018 г.), вы предпочитаете не использовать все это, и вы, вероятно, захотите использовать менее 95% от этого, если вашПрограмма является единственной, работающей на этом узле.Возможно, несколько гигабайт ОЗУ следует оставить для других целей (и для системы).

Если у вас есть вычислительный узел с большим объемом ОЗУ (например, 1-терабайтный компьютер с ОЗУ), вы можете использовать почтивсего этого (например, 99%), так как оставления 10 Гбайт для «отдыха» может быть более чем достаточно.

Если вы кодируете на C или C ++, вас могут заинтересовать системные вызовы, такие как mmap (2) (который используется malloc или new), madvise (2) , posix_fadvise (2) .

В некоторых случаях (связанный с ссылкой на вашего процесса), у вас может быть виртуальное адресное пространство (используйте proc (5) и pmap (1) с ps (1) для запроса) немного выше (например, на 5% или на 10% больше) используемой оперативной памяти.Помните о RSS и о кеш страницы .См. Также LinuxAteMyRam .

Вам, безусловно, необходимо выполнить тестирование и профилирование.

С вашими дополнительными изменениями я бы предложил сравнить тестовый прогон 50 Гбайт и 60 Гбайт, и посмотреть, чтобыстрее.Если это 60 Гбайт, попробуйте 61, затем 62 Гбайт и, возможно, 63 Гбайт.

...