Назад | Перейти на главную страницу

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

Я могу получить замечательную карту памяти всех процессов с помощью команды 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  
...

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

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

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

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

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

# эхо м> / proc / sysrq-trigger

Это даст вам дамп памяти по зонам. Оформить заказ по следующему URL

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