Назад | Перейти на главную страницу

Оценка оперативной памяти, необходимой для процесса в Linux

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