freebsd 7.2 kern.threads.max_threads_per_proc não muda após a reinicialização

1

Eu tenho alguns aplicativos multithread na minha máquina servidor com base no FreeBSD 7.2, então por causa disso eu preciso aumentar kern.threads.max_threads_per_proc para 4000 (o valor padrão é 1500). Eu mudei usando "sysctl kern.threads.max_threads_per_proc = 4096" e parece ok, mas depois de reiniciar esta opção tem valor padrão novamente. Eu também tentei usar o /boot/loader.conf, mas ele ainda está retornando ao valor padrão.

Isto é o que contém no loader.conf:

kern.maxdsiz=1073741824
kern.maxtsiz=1073741824
kern.maxssiz=268435456
kern.maxproc=10000
kern.maxprocperuid=9000
kern.threads.max_threads_per_proc=4000

E mesmo com essa configuração, "sysctl kern.threads.max_threads_per_proc" mostra o valor de defalut (1500) após a reinicialização.

Por favor, diga-me como posso mudar isso permanentemente?

    
por Valeriy Maslov 13.02.2014 / 06:51

3 respostas

0

Primeiramente, obrigado por todas as suas respostas. Eles estão bem, claro, mas o motivo do meu problema foi um pouco mais profundo, dentro do código-fonte do kernel:)

Eu tento eplain minha solução passo a passo, o que eu encontrei. Então, como @citrin disse que kern.threads.max_threads_per_proc é necessário para ser configurado em sysctl.conf. Mas isso não ajuda a mudar o valor mais de 1500 (isso é kernel max e defaul pelo caminho). Portanto, isso ocorre porque existe outro limite no sistema que substitui qualquer um dos valores definidos pelo usuário. Eu não sabia exatamente onde está, então tentei encontrar algo nas fontes do kernel.

Eu encontrei este valor dentro das fontes do kernel: /usr/src/sys/kern/kern_thread.c . Ele contém código como este:

int max_threads_per_proc = 1500;
SYSCTL_INT(_kern_threads, OID_AUTO, max_threads_per_proc, CTLFLAG_RW,
&max_threads_per_proc, 0, "Limit on threads per proc");

Eu alterei esse valor para 5000 e construo um novo kernel com a configuração GENERIC e o instalei. Houve uma pequena surpresa para mim porque eu tinha limite de thread configurado 4096 dentro de sysctl.conf, mas o valor de trabalho era 5000, como nas fontes. Embora os valores do kernel de algum modo substituam o definido pelo usuário, isso ainda causa perguntas, mas agora meu problema está resolvido, o limite do thread foi permanentemente aumentado.

Obrigado pelas suas respostas novamente.

    
por 17.02.2014 / 07:21
2

Existem dois métodos diferentes para ajustar os parâmetros do kernel - sintetizadores do carregador e sysctl.

  1. Ajustes do carregador salvos no arquivo /boot/loader.conf - eles são exportados pelo carregador para o ambiente do kernel e têm efeito no momento da inicialização do kernel. Após a inicialização, você pode ver esses valores via comando kenv . Este ambiente pode ser alterado pelo comando kenv, mas isso é útil somente para tanables lidos pelos módulos do kernel. Por exemplo. você pode definir o kern.hwpmc.nbuffers = 32 e do que o módulo kldunload / kldload hwpmc. Mas, em geral, você precisa reinicializar após o /boot/loader.conf mudar.

  2. sysctl varuables. Muitos valores sysctl podem ser alterados no tempo de execução através do comando sysctl . Para reaplicar as alterações sysctl após a reinicialização, o arquivo pode ser salvo no arquivo /etc/sysctl.conf.

Muitos sintetizadores do carregador (mas não todos) têm sysctls de somente leitura correspondentes com o mesmo nome. Mas, em geral, não há mapeamento 1: 1 entre sintonizadores de carregador e sysctls. Por exemplo. muitos sysctl não tem nenhum carregador sintonizável com o mesmo nome, e não podem ser alterados via loader.conf.

kern.threads.max_threads_per_proc é apenas sysctl e deve ser salvo em /etc/sysctl.conf

    
por 14.02.2014 / 10:43
0

Seu /boot/loader.conf é honrado? loader.conf (5) afirma que /boot/loader.rc precisa conter as seguintes linhas:

 include /boot/loader.4th
 start

/boot/loader.4th , por sua vez carrega /boot/defaults/loader.conf que, por sua vez, pode carregar /boot/loader.conf se algo assim estiver incluído:

loader_conf_files="/boot/device.hints /boot/loader.conf /boot/loader.conf.local"
    
por 13.02.2014 / 07:19