2015-12-01 4 views
1

Я работаю над встроенной системой с ограниченной памятью. Я хочу найти способ вычислить, сколько памяти будет использоваться, когда файл эльфа работает, анализируя его.Как вычислить vmrss из файла elf

Я надеюсь, что результат близок к vmrss, который я могу использовать для получения cat /proc/pid/status. Память меняется каждый момент при запуске. поэтому полезен также более близкий результат или нижняя граница.

Предполагая, что нет динамической памяти (например, через malloc) или отображаемой памяти (через mmap).

ответ

0

упрощающие предположения:

  1. не используют общие библиотеки
  2. не запускать несколько экземпляров вашего ELF бинарного
  3. не использовать своп
  4. бинарный файл обращается ко всем его кода и данных
  5. не имеет значения malloc или mmap

С приведенными выше предположениями вы можете посмотреть readelf -Wl a.out | grep LOAD и просто добавить вместе размеры сегмента PT_LOAD для верхней границы RSS.

Если вы используете общие библиотеки, вам также нужно добавить их сегменты PT_LOAD. Но если они используются более чем одним двоичным кодом, то общая потребляемая системная память будет меньше, чем общее количество RSS для каждого процесса. То же самое касается нарушения предположения 2.

Нарушение допущений 3 и 4 уменьшит наблюдаемый RSS, а нарушение 5 увеличит его.

+0

Я могу найти НАГРУЗКУ. и сумма далека от VmRss – fanux

+0

@fanux Если вы надеетесь получить помощь, вам придется предоставить более подробную информацию. Измените свой вопрос с дополнительной информацией: какие из допущений ошибочны, что вы находите в своих сегментах «LOAD», как они сравниваются с «VmRss» и т. Д. И т. Д. –

Смежные вопросы