На моем локальном компьютере (i7 9200), на котором запущен Debian Wheezy amd64, я могу добиться значительного ускорения работы с некоторыми «большими данными» / типами HPC:
HUGETLB_MORECORE=yes
чтобы перенаправить свои маллоки на 2M страниц.Приложение также достаточно хорошо работает на Debian Wheezy на EC2 (я использую последний хриплый AMI) с обычными страницами 4k (некоторые тесты масштабируемости пробовали на экземплярах c3.2xlarge, c3.4xlarge и c3.8xlarge). Но мне любопытно также узнать, вижу ли я аналогичные преимущества при использовании огромных страниц на EC2, если это возможно.
Я запустил экземпляр c3.3xlarge и настроил огромные страницы по-прежнему. И после этого / proc / meminfo действительно сообщает
HugePages_Total: 4096
HugePages_Free: 4095
Однако после компиляции libhugetlbfs он make func
самотестирование вызывает некоторые ошибки ядра. Вскоре после этого кажется, что система зависает, но не раньше, чем у меня было время проверить dmesg и увидеть кучу стеков вызовов с различными xen_
и hugetlb_fault
символы в них. После того, как система перестала отвечать на запросы, системе потребовалась принудительная остановка с консоли AWS, чтобы заставить ее остановиться.
Я попытался снова загрузиться и просто запустил свое приложение с HUGETLB_MORECORE=yes
в любом случае (в случае make func
тестирование ломало что-то непонятное, что мне на самом деле было не нужно), но почти то же самое произошло снова.
любой истории успеха с libhugetlbfs на EC2 (желательно с Debian) или рецепты для правильной работы ?
Исследовательская работа: там скудная информация в Google об огромных страницах на EC2 (или Xen). Я нашел этот, который, похоже, сообщает о той же проблеме: / proc / meminfo сообщает о наличии огромных страниц, но при попытке их использования возникает паника ядра. Статья предшествует новым экземплярам c3, но предполагает, что cc2.8xlarge может стоить того, потому что в нем используется HVM вместо PVM.
Обновить: не смог найти актуальный Debian AMI для HVM, но попробовал Ubuntu (13.04 "raring") на cc2.8xlarge и libhugetlbfs и HUGETLB_MORECORE=yes
похоже, отлично работает с этим. Единственное, это немного замедляет работу моего приложения!