Artigo
· 9 hr atrás 2min de leitura

Mínima pegada do container IRIS

Às vezes, clientes precisam de uma pequena instância IRIS para fazer algo na nuvem e desligá-la, ou precisam de centenas de contêineres (ou seja, um por usuário final ou um por interface) com pequenas cargas de trabalho. Este exercício surgiu para ver quão pequena uma instância IRIS poderia ser. Para este exercício, focamos em qual é a menor quantidade de memória que podemos configurar para uma instância IRIS. Você conhece todos os parâmetros que afetam a memória alocada pelo IRIS?

Configurações de Memória

Estes são os diferentes grupos que afetam a alocação de memória pelo IRIS e seus parâmetros correspondentes:

  • Global Buffers (32 MB) => O mínimo parece ser 32 MB para bancos de dados de 8k
  • Routine Buffers (26MB) => O mínimo teórico da documentação é de 430 buffers x 64k por buffer ≈ 26 MB e na prática é 26 MB
  • Journal Buffers (16 MB) => Em teoria e na prática, o mínimo para um sistema Unicode é 16 MB (8 MB para 8-bit)
  • Buffer descriptors (3 MB) => Parece ser 3 MB, não é possível ajustar
  • gmheap (16 MB) =>  O mínimo é de 256 páginas x 64k por página = 16 MB (configurado em bytes no CPF = 16384)
  • ECP (1 MB) => Existem alguns parâmetros no CPF que controlam isso. MaxServerConn e MaxServers. Mesmo com MaxServerConn=0 e MaxServers=0, o mínimo é 1 MB porque o IRIS aloca memória para essas estruturas independentemente de você usar ECP ou não. Com MaxServerConn=1 e MaxServers=2, o padrão é 5 MB.
  • Miscellaneous (15 MB) => Pelos meus testes, o mínimo parece ser 15 MB. Não consegui ir abaixo disso.

Com todas essas configurações definidas dessa forma, os parâmetros do CPF ficariam assim:

globals=0,0,32,0,0,0
routines=0,0,0,0,0,26
jrnbufs=16
gmheap=16384
MaxServerConn=0
MaxServers=0

Portanto, se você configurar o IRIS com esses parâmetros (eu usei o IRIS 2024.1) no arquivo CPF, pode-se esperar um total de 111 MB como a quantidade mínima de memória a ser alocada pelo IRIS na inicialização (processos de usuário à parte). Você pode ver a memória alocada pelo IRIS no arquivo messages.log:

 

 

Bem, eu sei, deve haver algum arredondamento acontecendo porque se você somar todos os números individuais, obtém 109 MB, mas no messages.log é reportado como 111 MB.

Durante este processo, também descobrimos que os contêineres IRIS não conseguiam alocar Huge Pages. Isso foi reportado e corrigido em versões subsequentes pela InterSystems.

A propósito, este artigo também pode servir como um artigo geral para aprender sobre os diferentes parâmetros de memória que se pode ajustar dentro do IRIS para obter melhor desempenho.

Espero que gostem!

Discussão (0)1
Entre ou crie uma conta para continuar