2013-10-26 5 views
6

fand ich, dass physische Speicher in Reihen aufgeteilt wird wie folgt (Speicher-Interleaving):Wie wird zusammenhängender Speicher im Linux-Kernel verwendet?

rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ... 
    rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ... 
    rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-... 
    rank3: [1536KB-2048KB] [3584KB-4096KB] ... 

Linux-Kernel diese verschachtelten Speicher fast voll ist. Der vom Linux-Kernel gesehene physische Speicher ist also nicht zusammenhängend. Korrigiere mich, wenn ich falsch liege.

Ich habe Linux Quellcode für meine Kursarbeit untersucht.

Beim Erstellen von sysfs (/ sys/devices/system/memory) erstellt der Linux-Kernel die Abschnitte (memory0, memory1, ...) bestimmter Größe (128 MB auf meinem System) dieses verfügbaren physischen Speichers. Mithilfe von Statusdateien in diesen Verzeichnissen kann ich Abschnitte offline/Online erstellen. (Memory Hotplug)

So ist der physische Speicher, der durch diese Abschnitte dargestellt wird, verstreut. Also, wenn ich irgendeinen Bereich offline mache, der diesen verstreuten Speicher macht, zeigt er auf nicht verfügbar.

Ich möchte diese Abschnitte beziehen sich auf zusammenhängende Speicher. etwas wie das:

Also, wenn ich einen Abschnitt offline machen, dann zusammenhängende physischen Speicher im Zusammenhang mit diesem Abschnitt nicht verfügbar. Also, kann ich machen Linux Kernel physischen Speicher als zusammenhängende anstelle von Interleaved sehen?

Korrigieren Sie mich, wenn ich etwas falsch mache.

Vielen Dank.

+0

kann mir jemand dabei helfen ?? –

+0

Was ist Ihre Prozessorarchitektur? Du hast gesagt, die Erinnerung ist in Ränge aufgeteilt. In der Realität hängt dies stark davon ab, wie die Prozessor-Speichermanagement-Hardware arbeitet. – user2284570

+0

Sorry für die späte Antwort. Ich war mit mittleren Semester beschäftigt. Ich bezog mich auf eine allgemeine Architektur, die nicht spezifisch für meine Maschine ist. Entschuldigung für die Verwirrung. Aber für diese Diskussion nehme an, dass das System dieses Interleaving unterstützt, also gibt es eine Möglichkeit, es zu deaktivieren? –

Antwort

1

Ich denke, was Sie sehen, ist wegen Interleave-Option für die Speicherzuweisung unter NUMA. Es gibt eine sehr gute paper, die unter Linux über NUMA spricht.

Ohne die Details der Hardware, die Sie verwenden, ist es sehr schwierig zu erraten, wie die Speicherinterleaving-Option deaktiviert werden kann. Sie sollten auch das numactl-Dienstprogramm durchsuchen, um zu sehen, ob es einige Einstellungen gibt, die Sie auf einem laufenden System verwenden können. Es gibt auch einige Blog-Posts, in denen erwähnt wird, dass die BIOS-Einstellungen geändert werden müssen, um die Speicher-Interleaving-Option zu steuern, und dass Sie möglicherweise dasselbe tun müssen. (nicht berechtigt, jetzt 2 Links zu geben: \ aber eine einfache Google-Suche auf Deaktivieren von Memory Interleaving im BIOS sollte etwas nützlich für Sie auftauchen)

+0

Hallo. Danke für die Antwort. Bevor ich diese Frage gepostet habe, habe ich danach gesucht. Ich fand auch, dass es Optionen im BIOS gibt, um die Speicherverschachtelung zu ändern, aber ich konnte diese Informationen auf meinem System nicht finden. Bedeutet das, dass mein System Memory Interleaving nicht unterstützt? Ich dachte NUMA sei anders als Memory Interleaving. NUMA verteilt den Speicherblock auf mehrere Prozessoren. In meiner Frage geht es mir nicht um mehrere Prozessoren. Ich interessiere mich für Memory Interleaving, das über Ränge von DIMMs hinweg passiert. –

+0

Speicherverschachtelung über DIMMs hinweg muss vom Speichercontroller des Systems gesteuert werden. AFAIK die einzige Möglichkeit, es zu deaktivieren, wäre die Suche nach den Einstellungen im BIOS oder über die EFI-Shell auf modernen Systemen. Welches System benutzen Sie? – vPraetor

Verwandte Themen