2016-04-12 10 views
2

Ich erkunde die Möglichkeit, das Text- und Datensegment mit riesigen Seiten zu unterstützen, die dem Handbuch in https://github.com/libhugetlbfs/libhugetlbfs/blob/master/HOWTO folgen.Verwendung von rigidpages für Text- und Datensegmente

Ich habe die Anwendung wie vorgeschlagen neu verknüpft, indem ich "-B/usr/share/libhugetlbfs -Wl, - hugetlbfs-align" hinzugefügt und die Anwendung mit "hugectl --text --data --heap --bss" gestartet habe/Pfad/zu/meiner/Anwendung ".

Aber ich bin nicht sehr sicher, wie zu überprüfen, ob die Daten und Textsegmente tatsächlich in die Dateien auf dem hugetlbfs-Dateisystem kopiert werden. Wenn man die/proc/{pid}/maps überprüft, kann man sehen, dass die rigidageseiten für Heap, aber nicht für Text- und Datensegmente verwendet werden, da die ersten beiden Adressbereiche der Anwendung, nicht aber dem rigipage-Dateisystem zugeordnet werden .

Ist mein Verständnis korrekt? Tatsächlich vermute ich, dass meine Schlussfolgerung, dass riesige Seiten für den Heap von/proc/{pid}/maps verwendet werden, ebenfalls falsch ist.

Wie soll ich überprüfen, ob die Daten und Textsegmente in den riesigen Seiten gesichert sind? Ich weiß, dass Daten und Textsegmente in das hugetlbfs-Dateisystem kopiert werden, wenn es erfolgreich ist, aber wie wird es überprüft?

Danke!

Ausgabe von/proc/pid {}/Karten

00400000-00d2c000 r-xp 00000000 fd:02 46153351 /path/to/my/application 

00f2b000-00fa3000 rw-p 0092b000 fd:02 46153351 /path/to/my/application 

00fa3000-00fbb000 rw-p 00000000 00:00 0 

02a0c000-02a2d000 rw-p 00000000 00:00 0 [heap] 

40000000-80000000 rw-p 00000000 00:15 2476090 /dev/hugepages-1G/libhugetlbfs.tmp.nS7exn (deleted) 

Antwort

1

Scheck

/proc/$pid/numa_maps 

enthält Informationen über die jeweils durch einen bestimmten Prozess benutzten Speicherbereich ermöglicht - unter anderen Informationen - die Bestimmung von denen Knoten für die Seiten verwendet wurden.

für formar siehe http://linux.die.net/man/5/numa_maps

+1

Siehe auch/proc/pid $/smaps für detaillierte Informationen über jede Zuordnung, einschließlich anonyme riesige Seiten. BSS ist ein anonymes Mapping wie der Heap und verwendet transparente rigogemages für Mappings, die ausreichend ausgerichtet sind. –

1

Wenn Sie HUGETLB_DEBUG = 1 Variable gesetzt ist, wird es Ihnen viele nützliche Informationen mitteilen. dies ist einer von ihnen:

INFO: Segment 2 ist ausgerichtet MEMSZ ist zu klein: 0x864 < 0xFFFFFFFFFFFFFFFF

Wenn es erfolgreich ist, es sieht aus wie:

libhugetlbfs [zupa: 154297 ]: INFO: Segment 0 (PhDr 2): 0x400000-0x400864 (filesz = 0x864) (Prot = 0x5)

libhugetlbfs [zupa: 154297]: INFO: Segment 1 (PhDr 3): 0x600868-0x600af8 (filesz = 0x27c() Prot = 0x3)

libhugetlbfs [zupa: 154297]: DEBUG: Gesamt MEMSZ = 0xaf4, MEMSZ der größte Segment = 0x864

libhugetlbfs [zupa: 154297]: INFO: libhugetlbfs Version: 2,16 (modifiziert)

libhugetlbfs [zupa: 154951]: INFO: zugeordnetes riesiges bei 0x2aaaaac00000. Kopieren von 0x864 Bytes und 0 zusätzlichen Bytes von 0x400000 ...getan

libhugetlbfs [zupa: 154297]: INFO: Prepare gelang

libhugetlbfs [zupa: 154952]: INFO: Mapped hugeseg bei 0x2aaaaac00000. Kopieren 0x27c Bytes und 0 zusätzliche Bytes von 0x600868 ... done

libhugetlbfs [zupa: 154297]: INFO: es gelungen Bereiten