Pessoal, neste post ( apesar de bem direcionado para Oracle ) vou trazer algumas informações úteis sobre parametrização de memória no Linux.

TMPFS

Partição virtual que representa a área reservada para memória compartilhada ( shared memory ).
Esta partição pode ser encontrada no arquivo /etc/fstab e normalmente tem o tamanho equivalente a metade da memória RAM.

* AO FINAL DO ARTIGO TEMOS ALGUNS MACETES PARA ALTERAR O TAMANHO DA TMPFS

SHARED MEMORY

É uma parte da memória reservada pelo sistema operacional para que processos gravem e leiam informações. Inclusive leiam informações gravadas por outros processos.
Alguns processos do Oracle usam shared memory para comunicação, troca de informações ou mesmo compartilhamento de objetos. (SGA, por ex.)

Uma SHARED MEMORY sub-dimensionada ou uma SGA mal dimensionada poderão trazer erros como:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”T1JBLTA0MDMxOiB1bmFibGUgdG8gYWxsb2NhdGUgWFhYIGJ5dGVzIG9mIHNoYXJlZCBtZW1vcnkKT1JBLTI3MTIzOiB1bmFibGUgdG8gYXR0YWNoIHRvIHNoYXJlZCBtZW1vcnkgc2VnbWVudA==” hover_enabled=”0″]T1JBLTA0MDMxOiB1bmFibGUgdG8gYWxsb2NhdGUgWFhYIGJ5dGVzIG9mIHNoYXJlZCBtZW1vcnkKT1JBLTI3MTIzOiB1bmFibGUgdG8gYXR0YWNoIHRvIHNoYXJlZCBtZW1vcnkgc2VnbWVudA==[/et_pb_dmb_code_snippet]

COMO DIMENSIONAR A SHARED MEMORY?

É muito complicado dar uma receita de como definir o tamanho da SHARED MEMORY. Normalmente vai depender da finalidade do servidor, da finalidade do banco de dados, etc, etc.
Porém vamos explicar as recomendações da ORACLE para este tópico e como uma base convencional trabalha.

COMO VERIFICAR O DIMENSIONAMENTO DA MINHA SHARED MEMORY?

No linux existem duas maneiras de verificar como está sua shared memory:
– Através do comando sysctl
– Através dos arquivos dentro de /proc/sys/kernel

Existem, basicamente, 3 parâmetros para trabalharmos a shared memory:
– kernel.shmmax: Tamanho máximo de um segmento de shared memory.
– kernel.shmmni: Número máximo de segmentos de shared memory.
– kernel.shmall: Número de página alocáveis na shared memory.

Verifique o estado de seu sistema com:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgc3lzY3RsIC1hIHwgZ3JlcCBzaG0Ka2VybmVsLnNobW1heCA9IDMzNTU0NDMyCmtlcm5lbC5zaG1hbGwgPSAyMDk3MTUyCmtlcm5lbC5zaG1tbmkgPSA0MDk2″ hover_enabled=”0″]W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgc3lzY3RsIC1hIHwgZ3JlcCBzaG0Ka2VybmVsLnNobW1heCA9IDMzNTU0NDMyCmtlcm5lbC5zaG1hbGwgPSAyMDk3MTUyCmtlcm5lbC5zaG1tbmkgPSA0MDk2[/et_pb_dmb_code_snippet]

ou com:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgbW9yZSAvcHJvYy9zeXMva2VybmVsL3NobSoKOjo6Ojo6Ojo6Ojo6OjoKL3Byb2Mvc3lzL2tlcm5lbC9zaG1hbGwKOjo6Ojo6Ojo6Ojo6OjoKMjA5NzE1Mgo6Ojo6Ojo6Ojo6Ojo6OgovcHJvYy9zeXMva2VybmVsL3NobW1heAo6Ojo6Ojo6Ojo6Ojo6OgozMzU1NDQzMgo6Ojo6Ojo6Ojo6Ojo6OgovcHJvYy9zeXMva2VybmVsL3NobW1uaQo6Ojo6Ojo6Ojo6Ojo6Ogo0MDk2″ hover_enabled=”0″]W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgbW9yZSAvcHJvYy9zeXMva2VybmVsL3NobSoKOjo6Ojo6Ojo6Ojo6OjoKL3Byb2Mvc3lzL2tlcm5lbC9zaG1hbGwKOjo6Ojo6Ojo6Ojo6OjoKMjA5NzE1Mgo6Ojo6Ojo6Ojo6Ojo6OgovcHJvYy9zeXMva2VybmVsL3NobW1heAo6Ojo6Ojo6Ojo6Ojo6OgozMzU1NDQzMgo6Ojo6Ojo6Ojo6Ojo6OgovcHJvYy9zeXMva2VybmVsL3NobW1uaQo6Ojo6Ojo6Ojo6Ojo6Ogo0MDk2[/et_pb_dmb_code_snippet]

Agora vamos ao que interessa, como definir a SHARED MEMORY….

A ORACLE RECOMENDA:

kernel.shmmax: Deve ser calculado como metade do tamanho da memória RAM ( em Bytes ).
Ex: se sua memória RAM tem 16777216 kB, então sua shmmax deverá ser do tamanho de 8589934592.
kernel.shmmni: A Oracle recomenda que este parâmetro seja no mínimo de 4096. Normalmente isto é suficiente.
kernel.shmall: A recomendação é que a shmall seja igual ao total de RAM dividido pelo tamanho de cada página.
Ex: se sua memória RAM tem 16777216 kB e sua página tem o tamanho de 4096, então sua shmall deverá ser de 4194304.
OBS: para ver o tamanho de sua página execute:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgZ2V0Y29uZiBQQUdFX1NJWkUKNDA5Ng==” hover_enabled=”0″]W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgZ2V0Y29uZiBQQUdFX1NJWkUKNDA5Ng==[/et_pb_dmb_code_snippet]

E aí, curtiu a receita de bolo pra definir a shared memory?

COMO SETAR OS NOVOS VALORES DE SHARED MEMORY?

Edite o arquivo /etc/sysctl.conf e altere os parametros da seguinte forma:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”a2VybmVsLnNobW1heCA9IDxTVUFfUkFNX0VNX0JZVEVTLzI+Cmtlcm5lbC5zaG1hbGwgPSA8U1VBX1JBTV9FTV9CWVRFUyAvIFRBTUFOSE9fREFfUEFHSU5BPgprZXJuZWwuc2htbW5pID0gNDA5Ng==” hover_enabled=”0″]a2VybmVsLnNobW1heCA9IDxTVUFfUkFNX0VNX0JZVEVTLzI+Cmtlcm5lbC5zaG1hbGwgPSA8U1VBX1JBTV9FTV9CWVRFUyAvIFRBTUFOSE9fREFfUEFHSU5BPgprZXJuZWwuc2htbW5pID0gNDA5Ng==[/et_pb_dmb_code_snippet]

e para atualizar o sistema execute:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgc3lzY3RsIC1wCmtlcm5lbC5zaG1tYXggPSAxNjc3NzIxNgprZXJuZWwuc2htYWxsID0gNDE5NDMwNAprZXJuZWwuc2htbW5pID0gNDA5Ng==” hover_enabled=”0″]W3Jvb3RAYnRlYy1tZ210bHgwMSB+XSMgc3lzY3RsIC1wCmtlcm5lbC5zaG1tYXggPSAxNjc3NzIxNgprZXJuZWwuc2htYWxsID0gNDE5NDMwNAprZXJuZWwuc2htbW5pID0gNDA5Ng==[/et_pb_dmb_code_snippet]

DICAS

Como alterar o tamanho da TMPFS?

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”b24gdGhlIGZseToKCm1vdW50IC1vcmVtb3VudCxzaXplPTxUQU1BTkhPX0VNX01CPk0gL2Rldi9zaG0=” hover_enabled=”0″]b24gdGhlIGZseToKCm1vdW50IC1vcmVtb3VudCxzaXplPTxUQU1BTkhPX0VNX01CPk0gL2Rldi9zaG0=[/et_pb_dmb_code_snippet]

de maneira persistent: altere o arquivo /etc/fstab e adicione a opção size=M na linha do tmpfs como no exemplo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”L2Rldi94dmRhMSAvICAgICAgICAgICAgICAgICAgICAgICBleHQzICAgIGRlZmF1bHRzICAgICAgICAxIDEKL2Rldi94dmRhMiBzd2FwICAgICAgICAgICAgICAgICAgICBzd2FwICAgIGRlZmF1bHRzICAgICAgICAwIDAKdG1wZnMgICAgICAgICAgICAgICAgICAgL2Rldi9zaG0gICAgICAgICAgICAgICAgdG1wZnMgICBkZWZhdWx0cyxzaXplPTgxOTJNICAgICAgICAwIDAKZGV2cHRzICAgICAgICAgICAgICAgICAgL2Rldi9wdHMgICAgICAgICAgICAgICAgZGV2cHRzICBnaWQ9NSxtb2RlPTYyMCAgMCAwCnN5c2ZzICAgICAgICAgICAgICAgICAgIC9zeXMgICAgICAgICAgICAgICAgICAgIHN5c2ZzICAgZGVmYXVsdHMgICAgICAgIDAgMApwcm9jICAgICAgICAgICAgICAgICAgICAvcHJvYyAgICAgICAgICAgICAgICAgICBwcm9jICAgIGRlZmF1bHRzICAgICAgICAwIDA=” hover_enabled=”0″]L2Rldi94dmRhMSAvICAgICAgICAgICAgICAgICAgICAgICBleHQzICAgIGRlZmF1bHRzICAgICAgICAxIDEKL2Rldi94dmRhMiBzd2FwICAgICAgICAgICAgICAgICAgICBzd2FwICAgIGRlZmF1bHRzICAgICAgICAwIDAKdG1wZnMgICAgICAgICAgICAgICAgICAgL2Rldi9zaG0gICAgICAgICAgICAgICAgdG1wZnMgICBkZWZhdWx0cyxzaXplPTgxOTJNICAgICAgICAwIDAKZGV2cHRzICAgICAgICAgICAgICAgICAgL2Rldi9wdHMgICAgICAgICAgICAgICAgZGV2cHRzICBnaWQ9NSxtb2RlPTYyMCAgMCAwCnN5c2ZzICAgICAgICAgICAgICAgICAgIC9zeXMgICAgICAgICAgICAgICAgICAgIHN5c2ZzICAgZGVmYXVsdHMgICAgICAgIDAgMApwcm9jICAgICAgICAgICAgICAgICAgICAvcHJvYyAgICAgICAgICAgICAgICAgICBwcm9jICAgIGRlZmF1bHRzICAgICAgICAwIDA=[/et_pb_dmb_code_snippet]

Obs: evite deixar a tmpfs acima de 75% da RAM.

Pessoal, espero que este artigo possa ajudá-los com definições de memória.

Link Interessante para estudo:
Recomendações RHEL para Oracle

Forte abraço a todos!