2016-04-12 3 views
2

Я изучаю возможность возврата текста и сегмента данных с огромными страницами по следующему руководству в https://github.com/libhugetlbfs/libhugetlbfs/blob/master/HOWTO.Использование огромных страниц для текстовых и информационных сегментов

Я переложил приложение, как это было предложено, добавив «-B/usr/share/libhugetlbfs -Wl, - hugetlbfs-align» и запустив приложение с помощью «hugectl --text --data --heap --bss/путь/к/моя/приложение».

Но я не очень уверен, как проверить, действительно ли данные и текстовые сегменты копируются в файлы файловой системы hugetlbfs.

Проверка/proc/{pid}/maps, можно видеть, что огромные страницы используются для кучи, но не для сегментов текста и данных, поскольку первые два диапазона адресов сопоставляются с приложением, но не с файловой системой огромной страницы ,

Правильно ли я понимаю? На самом деле я подозреваю, что мой вывод о том, что огромные страницы используются для кучи из/proc/{pid}/maps, также неверен.

Как проверить, поддерживаются ли данные и текстовые сегменты в огромных страницах? Я знаю, что данные и текстовые сегменты будут скопированы в файловую систему hugetlbfs в случае успеха, но как проверить ее?

Спасибо!

выход/Proc/{PID}/карты

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) 

ответ

1

проверка

/proc/$pid/numa_maps 

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

для formar см http://linux.die.net/man/5/numa_maps

+1

Смотрите также/Proc/$ PID/smaps для подробной информации о каждом отображении, включая анонимные огромные страницы. BSS - это анонимное отображение, подобное куче, и будет использовать прозрачные hugemages для сопоставлений, которые достаточно выровнены. –

1

Если вы установите HUGETLB_DEBUG = 1 переменными, она расскажет вам всю массу полезной информации. Один из них заключается в следующем:

INFO: Сегмент 2 выравнивается memsz слишком мал: 0x864 < 0xFFFFFFFFFFFFFFFF

В случае успеха это выглядит как:

libhugetlbfs [Зупа: 154297 ]: ИНФОРМАЦИЯ: Сегмент 0 (PhDr 2): 0x400000-0x400864 (filesz = 0x864) (Prot = 0x5)

libhugetlbfs [Зуп: 154297]: ИНФОРМАЦИЯ: Сегмент 1 (PhDr 3): 0x600868-0x600af8 (filesz = 0x27c) (Prot = 0х3)

libhugetlbfs [Зуп: 154297]: DEBUG: Всего memsz = 0xaf4, memsz крупнейшего сегмента = 0x864

libhugetlbfs [Зуп: 154297]: ИНФОРМАЦИЯ: libhugetlbfs версия: 2.16 (модифицированный)

libhugetlbfs [zupa: 154951]: INFO: отображается hugeseg на 0x2aaaaac00000. Копирование 0x864 байт и 0 дополнительных байтов из 0x400000 ...сделано

libhugetlbfs [Зуп: 154297]: INFO: Приготовьте преуспевший

libhugetlbfs [Зуп: 154952]: INFO: Подключенные hugeseg на 0x2aaaaac00000. Копирование 0x27c байты и 0 дополнительные байты из 0x600868 ... сделан

libhugetlbfs [Зуп: 154297]: INFO: Подготовка преуспела

 Смежные вопросы

  • Нет связанных вопросов^_^