Finden Sie heraus, welche Speicherseiten dem Kernel gehören.

Finden Sie heraus, welche Speicherseiten dem Kernel gehören.

Ich kann eine wunderbare Speicherzuordnung aller Prozesse mit dem Linux-Befehl erhalten

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

Es sieht aus wie

...
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  
...

Hier werden die Speicherzuordnungen aller Prozesse zusammengeführt. Mir fehlt allerdings die Information, wo der Kernel seine Speicherseiten hat. Gibt es ein ähnliches Tool für die „komplette Speicherzuordnung“?

Antwort1

Ihr Befehl ergibt nicht viel Sinn. Die von pmapjedem Prozess gemeldeten Adressen sind nur im eigenen Adressraum dieser Prozesse gültig, also in ihrem virtuellen Speicher. Sie werden sich gewissermaßen „überlappen“, obwohl sie technisch gesehen unterschiedlichen Seiten entsprechen. Einige von ihnen befinden sich nicht im RAM, sondern auf der Festplatte.

Die vom Kernel verwendeten Seiten werden dagegen im physischen Speicher gespeichert.

Antwort2

Ein besserer Ansatz wäre, sysrq zu verwenden.

Führen Sie Folgendes aus und überprüfen Sie Ihre /var/log/messages.

# echo m > /proc/sysrq-trigger

Dies würde Ihnen einen zonenweisen Speicherauszug geben. Überprüfen Sie die folgende URL

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

verwandte Informationen