Я полагаю, что ваш кластер работает под управлением 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 Гбайт.