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