узнать, какие страницы памяти принадлежат ядру

узнать, какие страницы памяти принадлежат ядру

Я могу получить прекрасную карту памяти всех процессов с помощью команды Linux

pmap $(ps -A | awk '{print $1}'|grep -v PID) | sort | grep \^0

Это выглядит как

...
00007fd6dbf45000      4K rw---  /lib/libnss_compat-2.11.1.so 
00007fd6dbf46000   1524K r-x--  /lib/libc-2.11.1.so
00007fd6dc0c3000   2044K -----  /lib/libc-2.11.1.so  
...

Все карты памяти процессов объединены здесь. Но мне не хватает информации о том, где ядро ​​имеет свои страницы памяти. Есть ли аналогичный инструмент для "полной карты памяти"?

решение1

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

С другой стороны, страницы, принадлежащие ядру, хранятся в физической памяти.

решение2

Лучшим подходом было бы использование sysrq.

Выполните следующую команду и проверьте файл /var/log/messages.

# echo m > /proc/sysrq-trigger

Это даст вам зонный дамп памяти. Проверьте следующий URL

https://www.kernel.org/doc/gorman/html/understand/understand005.html

Связанный контент