Я пользователь вычислительного кластера на базе Linux, в котором работает система очередей задач. PBSPro
. PBSPro
любит знать, сколько оперативной памяти должно быть доступно для задачи, чтобы убедиться, что она будет выполняться правильно; например по qsub -l select=1:mem=4GB someapp
Я заявляю, что хочу отправить someapp
для выполнения на узле, имеющем не менее 4 ГБ свободной памяти. Чем более жесткие границы я могу указать, тем быстрее будет запланировано выполнение моего приложения.
Как я могу оценить, сколько памяти будет someapp
необходимость?
Я могу сделать пробный запуск и посмотреть htop
, внимательно наблюдаю за RSS моего процесса, но есть ли какой-нибудь инструмент или метод, который сделал бы его более автоматическим? Скажем, вернуть максимальный объем памяти, выгруженной в процесс за все время его выполнения?
Я просто обычный пользователь кластера без root-доступа. Я запускаю только один процесс с потенциально несколькими потоками; даже если someapp
воля fork()
, Меня не волнует, считается ли память дочернего процесса или нет.
В GNU time есть опция -v, которая включает максимальный RSS. Не встроенная оболочка, поэтому /usr/bin/time -v
В действительности все гораздо сложнее. Однако вы, вероятно, не захотите возиться с детальным анализом карты а-ля pmap
и не нужны детали, обеспечиваемые профилированием, как с valgrind
.
Или вы знаете, что задача какого-то размера, например 4 ГБ, будет быстро запланирована и устранит сбой, если этого слишком мало.