What are the huge pages in Linux?

Aprenda sobre páginas enormes no Linux. Entenda o que são páginas enormes, como configurá-lo, como verificar o estado atual e como desativá-lo.

HugePages em Linux

neste artigo, vamos orientá-lo através de detalhes sobre a enorme páginas de modo que você vai ser capaz de responder: o que são enormes as páginas no Linux? Como activar/desactivar páginas enormes? Como determinar o valor de página enorme? em Linux como RHEL6, RHEL7, Ubuntu, etc.

vamos começar com o básico de páginas enormes.

o que é a página enorme no Linux?

páginas enormes são úteis no gerenciamento de memória virtual no sistema Linux. Como o nome sugere, eles ajudam a gerenciar páginas de tamanho enorme na memória, além do tamanho padrão de página 4KB. Você pode definir como enorme como o tamanho de página 1GB usando páginas enormes.

durante o arranque do sistema, você reserva a sua porção de memória com páginas enormes para a sua aplicação. Esta parte da memória, isto é, esta memória ocupada por páginas enormes nunca é trocada da memória. Ele vai ficar lá até você mudar a sua configuração. Isso aumenta o desempenho da aplicação em grande medida, como o banco de Dados Oracle com requisitos de memória muito grandes.

por que usar uma página enorme?

no gerenciamento de memória virtual, o kernel mantém uma tabela na qual ele tem um mapeamento do endereço de memória virtual para um endereço físico. Para cada transação de página, o kernel precisa carregar mapeamento relacionado. Se você tem páginas de tamanho pequeno, então você precisa carregar mais números de páginas resultantes kernel para carregar mais tabelas de mapeamento. Isto diminui o desempenho.

Usando páginas enormes significa que você vai precisar de menos páginas. Isto diminui o número de tabelas de mapeamento a carregar pelo kernel em grande medida. Isto aumenta o seu desempenho ao nível do kernel que, em última análise, beneficia a sua aplicação.

em resumo, ao permitir páginas enormes, o sistema tem menos tabelas de páginas para lidar e, portanto, menos despesas gerais para acessá-las/mantê-las!

como configurar páginas enormes?

execute abaixo do comando para verificar os detalhes actuais das páginas enormes.

root@kerneltalks # grep Huge /proc/meminfoAnonHugePages: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB

Na saída acima, você pode ver o tamanho da página é de 2MB Hugepagesize e um total de 0 páginas no sistema HugePages_Total. Este enorme tamanho de página pode ser aumentado de 2MB para max 1GB.

execute abaixo do programa para obter as páginas enormes de que o seu sistema necessita actualmente. O script é de Oracle e pode ser encontrado.

#!/bin/bash## hugepages_settings.sh## Linux bash script to compute values for the# recommended HugePages/HugeTLB configuration## Note: This script does calculation for all shared memory# segments available when the script is run, no matter it# is an Oracle RDBMS shared memory segment or not.# Check for the kernel versionKERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`# Find out the HugePage sizeHPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`# Start from 1 pages to be on the safe side and guarantee 1 free HugePageNUM_PG=1# Cumulative number of pages required to handle the running shared memory segmentsfor SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "*"`do MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q` if ; then NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q` fidone# Finish with resultscase $KERN in '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`; echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;; '2.6' | '3.8' | '3.10' | '4.1' ) echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;; *) echo "Unrecognized kernel version $KERN. Exiting." ;;esac# End

Você pode salvá-lo no /tmphugepages_settings.sh e, em seguida, executá-lo, como abaixo :

root@kerneltalks # sh /tmp/hugepages_settings.shRecommended setting: vm.nr_hugepages = 124

saída será semelhante a algum número, como mostrado na saída da amostra acima.isto significa que o seu sistema precisa de 124 páginas enormes de 2MB cada! Se você definiu 4MB como tamanho da página, então a saída teria sido 62. Percebeste, certo?

Configure hugepages in kernel

Now last part is to configure the above-stated kernel parameter and reload it. Adicionar abaixo do valor em /etc/sysctl.conf e recarregar a configuração emitindo sysctl -p comando.

vm.nr_hugepages=126

Notice that we added 2 extra pages in the kernel since we want to keep a par of pages spare than the actual required number.

Agora, páginas enormes foram configuradas no kernel, mas para permitir que a sua aplicação as use você precisa aumentar os limites de memória também. O novo limite de memória deve ser de 126 páginas x 2 MB cada = 252 MB ou seja 258048 KB.

Você precisa para editar configurações abaixo de /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

às Vezes, essas definições são configuradas no aplicativo arquivos específicos, como para banco de dados Oracle a sua /etc/security/limits.d/99-grid-oracle-limits.conf

é isso aí! Você pode querer reiniciar sua aplicação para fazer uso destas novas páginas enormes.

como desactivar hugepages?

HugePages são geralmente ativados por padrão. Use o comando abaixo para verificar o estado actual das páginas enormes.

root@kerneltalks # cat /sys/kernel/mm/transparent_hugepage/enabled madvise never

flag in output shows that hugepages are enabled on system.

Para sistemas baseados em RedHat é o caminho do arquivo /sys/kernel/mm/redhat_transparent_hugepage/enabled

Se você deseja desabilitar enorme páginas, em seguida, adicionar transparent_hugepage=never no final do kernel linha /etc/grub.conf e reinicie o sistema.

Deixe uma resposta

O seu endereço de email não será publicado.