Получите максимальное использование памяти исполняемого файла Linux

apt-get source <whatever package SElinux is in>

Получит Вас текущий источник для версии SElinux, который Вы используете.

3
задан 9 September 2010 в 19:36
4 ответа

pmap шоу вся память, выделенная процессу, и даже, дают Вам общее количество. Обнаружение дочерних процессов более трудно, можно, возможно, объединить его с strace но я не могу думать простым способом сделать это.

1
ответ дан 3 December 2019 в 06:20

Я думаю time -f %M только работы в недавних ядрах Linux (экспериментально, это не поддерживается в 2.6.26/amd64, и это поддерживается в 2.6.32/i386).

Более ранний поток при Переполнении стека не поднялся очень.

Без поддержки ядра, контролируя использование памяти довольно твердо. Существует несколько способов сделать это:

  • LD_PRELOAD небольшая библиотека это перегружается mmap, sbrk и другие выделяющие память системные вызовы (принимающий Вас не выполняют статических двоичных файлов).
  • ptrace процессы действительно следят за выделением памяти и разветвлением.
  • Просмотреть /proc/ (работы для единственного процесса только, и Вы не знаете то, что происходит между мерами).

Этими путями все требуют некоторого программирования; я не знаю о существующем инструменте.

2
ответ дан 3 December 2019 в 06:20

Команда PS может использоваться для измерения объема памяти, который использует каждый процесс.

%MEM показывает процент физической памяти, что процесс использует. В то время как не всегда полное изображение это может определить процессы, которые ответственны за системную подкачку страниц и свопинг.

SZ показывает приблизительный виртуальный размер процесса.

RSS является размером Резидентного набора и является фактическим объемом памяти, который использовал процесс, когда PS был выполнен.

Проверьте свою страницу PS человека на опции для списка деревьев процесса.

0
ответ дан 3 December 2019 в 06:20

Я рекомендую использовать https://github.com/gsauthof/cgmemtime .

cgmemtime измеряет интенсивное использование памяти RSS + CACHE процессом и его дочерние процессы.

Для этого он помещает процесс в свою собственную cgroup.

Например, процесс A выделяет 10 MiB и разветвляет дочерний процесс B, который выделяет 20 МиБ и разветвляет дочерний элемент C, который выделяет 30 МиБ. Все три процесса разделяют временное окно, в котором их распределение приводит к соответствующее использование памяти RSS (размер резидентного набора).

Теперь вопрос: сколько памяти фактически используется в результате работает A?

Ответ: 60 МБ

cgmemtime - это инструмент для ответа на такие вопросы.

1
ответ дан 3 December 2019 в 06:20

Теги

Похожие вопросы