Нужно пояснить размер резидентного размера / виртуальный размер

Я обнаружил, что pidstat будет хорошим инструментом для мониторинга процессов. Я хочу рассчитать среднее использование памяти конкретного процесса. Вот пример вывода:

 02:34:36 PM PID minflt/s majflt/s VSZ RSS %MEM Command 02:34:37 PM 7276 2.00 0.00 349212 210176 7.14 scalpel 

(Это часть вывода pidstat -r -p 7276 )

Должен ли я использовать информацию размера резидентного размера (RSS) или виртуального размера (VSZ) для вычисления среднего потребления памяти? Я прочитал кое-что в Википедии и на форумах, но я не уверен, чтобы полностью понять различия. Кроме того, кажется, что никто из них не является надежным. Итак, как я могу контролировать процесс, чтобы использовать его память?

Любая помощь по этому вопросу была бы полезна.

One Solution collect form web for “Нужно пояснить размер резидентного размера / виртуальный размер”

RSS – сколько памяти этот процесс в настоящее время имеет в основной памяти (ОЗУ). VSZ – это объем виртуальной памяти, который имеет весь процесс. Это включает в себя все типы памяти, как в ОЗУ, так и поменять местами. Эти цифры могут искажаться, поскольку они также включают разделяемые библиотеки и другие типы памяти. Вы можете иметь пятьсот экземпляров запуска bash , а общий размер их объема памяти не будет суммой их значений RSS или VSZ.

Если вам нужно получить более подробное представление об объеме памяти в процессе, у вас есть несколько вариантов. Вы можете пройти через /proc/$PID/map и выбить ненужный материал. Если это общие библиотеки, расчет может быть сложным в зависимости от ваших потребностей (что, я думаю, я помню).

Если вы только заботитесь о размере кучи процесса, вы всегда можете просто проанализировать запись [heap] в файле map . Размер ядра, выделенного для кучи процесса, может или не может отражать точное количество байтов, которые запросил процесс. Есть мельчайшие детали, внутренности ядра и оптимизация, которые могут отбросить это. В идеальном мире это будет так же, как и ваш процесс, округленный до ближайшего кратного размера системной страницы ( getconf PAGESIZE расскажет вам, что это такое – на ПК, это, вероятно, 4096 байт).

Если вы хотите увидеть, сколько памяти выделил процесс, одним из лучших способов является отказ от метрик на стороне ядра. Вместо этого вы LD_PRELOAD функции распределения памяти кучи C (de) с помощью механизма LD_PRELOAD . Лично я слегка злоупотребляю valgrind чтобы получить информацию об этом. (Обратите внимание, что применение инструментария потребует перезапуска процесса.)

Обратите внимание, что, поскольку вы также можете проводить тесты производительности, то valgrind сделает ваши программы очень медленными (но, вероятно, в пределах ваших допусков).

  • Узнайте, какие возможности необходимы процессу
  • Посмотрите, сколько памяти было зарезервировано с помощью malloc () процессом в Linux
  • История процессов в системах Unix / Linux
  • Сделать топ-шоу только серверным процессом
  • PID в arch-chroot неверен
  • Соответствующий эквивалент монитора для Linux?
  • Какая потребность в struct thread_info для определения структуры task_struct?
  • Почему «Бесперебойный сон» не считается «ИДЕМ»?
  • Как сохранить процесс (стресс), пока я не проведу тестовую проверку
  • Что произойдет, если соединение dbus завершится неудачей?
  • Рекомендации по отслеживанию работы и процессов и многозадачности
  • Interesting Posts

    Vim: объединить регулярные выражения

    Место Grub – это было сделано в mbr или в другом месте?

    Как очистить цветной вывод stdout / stderr

    Что это за файл: .readahead в моем корневом каталоге?

    Могу ли я изменить список исключаемых файлов при запуске rsync в соответствии с заданием cron

    Скрипт для просмотра / mysqlshare присутствует во всех серверах списков, делая только первую итерацию

    Разделить файл на два

    «Этот драйвер устарел в пользу драйвера встроенного драйвера сервера». Это означает, что я могу удалить драйвер xorg-intel?

    Система Crontab или Root Crontab

    Как получить настоящее имя шрифта?

    Как определить статус моего сервера

    Прочитать отметку времени цифровой подписи файла Windows в Ubuntu

    Как я могу установить переменную среды постоянно через сценарий оболочки?

    Какая команда всегда генерирует один и тот же UUID через / proc / sys / kernel

    Выбор имени устройства под / dev из командной строки ядра

    Linux и Unix - лучшая ОС в мире.