Na minha máquina local (i7 9200) rodando o Debian Wheezy amd64, eu posso obter algumas acelerações significativas em algumas coisas do tipo "big data" / HPC:
HUGETLB_MORECORE=yes
para redirecionar seus mallocs para páginas de 2M. / li>
O aplicativo também funciona razoavelmente bem no Debian Wheezy no EC2 (estou usando mais recente wheezy AMI ) com páginas normais de 4k (alguns testes de escalabilidade testados em instâncias c3.2xlarge, c3.4xlarge e c3.8xlarge). Mas estou curioso para ver também se vejo benefícios semelhantes usando páginas enormes no EC2, se for possível.
Ativei uma instância c3.3xlarge e configurei páginas enormes como de costume . E depois disso / proc / meminfo de fato reporta
HugePages_Total: 4096
HugePages_Free: 4095
No entanto, depois de compilar o libhugetlbfs, o make func
de autoteste aciona alguns erros do kernel. O sistema logo depois parece travar, mas não antes de eu ter tempo de inspecionar o dmesg e ver um monte de pilhas de chamadas com vários símbolos xen_
e hugetlb_fault
nelas. Depois de não responder, o sistema precisou de uma parada forçada do console da AWS para pará-lo.
Eu tentei inicializar novamente e apenas executar meu aplicativo com HUGETLB_MORECORE=yes
de qualquer maneira (no caso de o teste make func
estar quebrando em algo obscuro que eu realmente não precisei), mas a mesma coisa aconteceu novamente.
Quaisquer casos de sucesso com o libhugetlbfs no EC2 (de preferência com o Debian), ou receitas para que ele funcione corretamente ?
Pesquisa : há poucas informações sobre páginas enormes no EC2 (ou Xen) por aí. Eu encontrei this , que parece reportar o mesmo problema: / proc / meminfo relata as páginas de acesso disponíveis, mas tentando usá-las em pânico no kernel. O artigo é anterior às novas instâncias do c3, mas sugere que um cc2.8xlarge pode valer a pena devido ao uso do HVM em vez do PVM.
Atualização : não foi possível encontrar uma AMI do Debian atualizada para o HVM, mas tentei um Ubuntu (13.04 "raring") em um cc2.8xlarge e libhugetlbfs e HUGETLB_MORECORE=yes
faz parece funcionar bem nisso. A única coisa é que, na verdade, atrasa meu aplicativo um pouco!