Ulimit oddity de comportamento de pilha ilimitada

2

Estou executando um aplicativo em um sistema Solaris 10.

Ontem definimos o tamanho da pilha do processo como ilimitado:

ulimit -s unlimited

Hoje, durante o carregamento, o processo não aparece informando que está "sem memória" durante o carregamento do banco de dados Oracle, quando o tamanho da pilha foi limitado novamente a 8192K, o processo não gerou problemas.

Houve uma pergunta sobre isso no Stack Overflow: Qual é o efeito de executar um aplicativo com o tamanho "Pilha ilimitada"?

Mas não estamos vendo os problemas estranhos e geralmente variáveis relacionados à memória que se esperaria.

Portanto, há duas perguntas:

  1. Existe uma implicação específica de configuração de pilha para Ilimitado que reverteria para alguns limites do sistema que poderiam ser menores do que o conjunto ulimit atual por usuário?
  2. Onde posso encontrar quais são esses limites sem ter acesso root?

EDITAR

'isainfo -v

aplicativos sparcv9 de 64 bits         vis2 vis

aplicativos sparc de 32 bits         vis2 vis v8plus div32 mul32 '

    
por Karlson 03.06.2014 / 15:20

1 resposta

2

A sugestão de olhar para a saída pmap está levando você na direção certa. Uma coisa que você pode querer considerar é a fragmentação de memória - se você estiver parando e iniciando sua instância de db (e aplicativos dependendo dela), o aplicativo (mecanismo rdbms) fará várias chamadas de sistema para solicitar o máximo possível de memória contígua. Quando o sistema tiver fragmentação de memória, os aplicativos com fome de memória terão dificuldades de inicialização e poderão reportar ENOMEM (falta de memória) nesse caso.

Você pode assistir por si mesmo usando o DTrace.

Existem algumas correções para isso no Solaris 11, SRUs e Atualizações, mas não tenho certeza se elas estão disponíveis para o Solaris 10. Você deve fazer login no MOS e verificar as páginas rdbms em busca de problemas específicos do Solaris 10.

    
por 24.06.2014 / 15:24