Как я могу использовать огромные страницы и libhugetlbfs в экземпляре Debian EC2 PVM?
На моей локальной машине (i7 9200), на которой запущен Debian Wheezy amd64, я могу получить значительное ускорение для некоторых вещей типа "большие данные"/HPC:
- Следуйте инструкциям здесь, чтобы зарезервировать немного оперативной памяти для огромных страниц и настроить hugetlbfs.
- Запуск моего приложения с помощью libhugetlbfs'(2.17) nifty
HUGETLB_MORECORE=yes
перенаправить его mallocs на 2M страниц.
Приложение также достаточно хорошо работает на Debian Wheezy на EC2 (я использую последний wheezy AMI) с обычными страницами размером 4 тыс. (Некоторые тесты на масштабируемость были опробованы на экземплярах 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) или рецепты для правильной работы?
Исследование: там мало информации об огромных страницах на EC2 (или Xen). Я нашел это, которое, кажется, сообщает о той же самой проблеме: /proc/meminfo сообщает об огромных доступных страницах, но пытается использовать их панику ядра. Статья предшествует новым экземплярам c3, но предполагает, что cc2.8xlarge может стоить того, чтобы использовать HVM вместо PVM.
Обновление: не удалось найти последнюю версию AMI Debian для HVM, но попробовал Ubuntu (13.04 "raring") на cc2.8xlarge и libhugetlbfs и HUGETLB_MORECORE=yes
кажется, работает хорошо на этом. Единственное, это на самом деле немного замедляет мое приложение!