Просмотр pagetable для процесса

Я хочу видеть, что pagetable управляет ядром для одного из моих процессов. В моем случае PID 4680 отображается на dhclient . Поэтому, чтобы просмотреть таблицу страниц, я попробовал следующее:

 sudo cat /proc/4680/pagemap 

Однако эта команда просто зависает на моем Ubuntu 14.04 без вывода. Я пробовал ждать 2 минуты, а затем должен его убить.

Есть ли лучший способ сделать это?

2 Solutions collect form web for “Просмотр pagetable для процесса”

Согласно документации , /proc/PID/pagemap содержит одно 64-битное значение для каждой виртуальной страницы.

С 4096-байтовыми страницами и 64-битным виртуальным адресным пространством имеется 2**52 страницы. Таким образом, полный файл pagemap будет 2**52 записи по 8 байт каждый. Это действительно большой файл. Котировка всего этого займет много времени. Не 2 минуты. Очень долго. Тест скорости на моем собственном компьютере предполагает около 21 года.

И это в основном будет заполнено нулями (для всех виртуальных адресов, которые не отображаются в процессе). Пучок вывода \0 на терминал не вызывает видимого эффекта. Он не висел, он делает то, что вы просили.

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

Правильный способ использования файла pagemap – узнать, какой виртуальный адрес вы ищете, искать его и читать 8 байтов. Или, если вам нужна информация для диапазона, прочитайте несколько кратных 8 байтам. Если вам нужны все ненулевые записи, сначала прочитайте /proc/PID/maps чтобы найти, какие диапазоны отображаются.

Я подозреваю, что вы ищете /proc/<pid>/maps . Вы можете увидеть карту программы и ее библиотеки. Если вы хотите получить доступ к содержимому каждой из этих областей, вы можете получить доступ к /proc/<pid>map_files , где каждое имя файла задается диапазоном памяти каждого блока.

Подробнее об этом в man proc , найдите /proc/[pid]/map_files/ и следующие параграфы.

Ниже приведен пример (часть) блоков использования памяти на основе X11:

введите описание изображения здесь

  • kernel: disabling / dev / kmem и / dev / mem
  • Содержание области стека процесса
  • Какая функция в ядре Linux отключает действие?
  • Нормально ли, что перезагрузка требуется для установки USB после обновления ядра?
  • Как найти, к чему относятся ссылки driver.mod.c?
  • Как модули ядра и ядра SCSI обрабатываются иначе, чем другие модули ядра?
  • ACPI (расширенная конфигурация и конфигурация питания) отсутствует в 2.6.38.8?
  • Загрузка драйвера WiFi приводит к неустойчивости всей системы. Как отлаживать?
  • Как установить / сделать разделы раздела ядра 9, которые документируют его функции и структуры данных?
  • strace работает для некоторых встроенных команд
  • Что означают опции ядра в фигурных скобках?
  • Interesting Posts

    Что происходит с аргументом в псевдониме после его использования один раз?

    proxychain не может решить ip-адрес

    zcat файл по строкам?

    Потерянный доступ к grub после установки мяты перечной 4

    как найти процент появления слова в файле

    Msgstr "недействительный идентификатор", когда я делаю "экспорт $ PATH"

    Как пропустить ошибки разрешенного отказа при запуске find в Linux?

    CentOS 6 связывает связь, круговое развертывание вместо активной резервной копии, дублирует кадры

    Разрешить хосту ssh в гостевой QEMU, но отключить все другие сети

    Как отключить ярлык «Изменение размера окна» (Alt-F8)?

    Существует ли стандартный способ для получения пути монтирования носителя (например, / media / user, / run / media / user …)?

    копировать файлы, измененные после определенной даты с помощью cp-переключателей

    найти груз?

    Переопределите заголовок окна для произвольного окна в KDE и установите заголовок пользовательского окна

    / etc / zprofile или / etc / zsh / zprofile

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