Todos os parâmetros de ajuste de TCP/IP estão localizados no diretório /proc/sys/net/. Por exemplo, aqui estão alguns dos parâmetros de ajuste mais importantes, seguidos de seus significados:
1. /proc/sys/net/core/rmem_max — Buffer máximo de recebimento de dados TCP
2. /proc/sys/net/core/wmem_max — Buffer máximo de envio de dados TCP
3. /proc/sys/net/ipv4/tcp_timestamps — O carimbo de data/hora é adicionado ao cabeçalho TCP em 12 bytes (consulte RFC 1323).
4. /proc/sys/net/ipv4/tcp_sack — resposta seletiva
5. /proc/sys/net/ipv4/tcp_window_scaling — Suporta janelas TCP maiores Se a janela TCP máxima exceder 65535 (64K), esse valor deverá ser definido como 1.
6. rmem_default — tamanho padrão da janela de recebimento
7. rmem_max — o tamanho máximo da janela de recebimento
8. wmem_default — tamanho padrão da janela de envio
9. wmem_max — o tamanho máximo da janela de envio
Todo o conteúdo do diretório /proc é temporário, portanto, quaisquer alterações serão perdidas após a reinicialização do sistema.
Recomenda-se modificar automaticamente os parâmetros TCP/IP quando o sistema for iniciado:
Adicione o seguinte código ao arquivo /etc/rc.local e salve o arquivo. Os seguintes parâmetros TCP/IP serão modificados automaticamente quando o sistema for reinicializado:
eco 256960 > /proc/sys/net/core/rmem_default
eco 256960 > /proc/sys/net/core/rmem_max
eco 256960 > /proc/sys/net/core/wmem_default
eco 256960 > /proc/sys/net/core/wmem_max
eco 0 > /proc/sys/net/ipv4/tcp_timestamps
eco 1 > /proc/sys/net/ipv4/tcp_sack
eco 1 > /proc/sys/net/ipv4/tcp_window_scaling
Os parâmetros TCP/IP são autoexplicativos, o tamanho da janela TCP é definido como 256960, os carimbos de data e hora TCP estão desabilitados (cancelar a adição de 12 bytes a cada cabeçalho de pacote), janelas TCP maiores e respostas seletivas TCP são suportadas.
Os valores acima são definidos com base na conexão com a Internet e na taxa máxima de largura de banda/latência.
Nota: Os valores do exemplo acima podem ser usados na prática, mas incluem apenas parte dos parâmetros.
Outro método: Use /etc/sysctl.conf para configurar os parâmetros com os valores que você definiu quando o sistema for inicializado:
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_sack=1
net.ipv4.tcp_window_scaling = 1
-------------------------------------------------- ---------------
/proc/sys/fs/supermax
Este arquivo especifica o número máximo de manipuladores de superblocos. Qualquer sistema de arquivos montado requer o uso de um superbloco, portanto, se um grande número de sistemas de arquivos for montado, o manipulador do superbloco poderá se esgotar.
Configuração padrão: 256
/proc/sys/fs/super-nr
Este arquivo mostra o número atual de superblocos alocados. Este arquivo é somente leitura e é usado apenas para exibir informações.
/proc/sys/kernel
/proc/sys/kernel/acct
Este arquivo possui três valores configuráveis que controlam quando a contabilização do processo começa com base na quantidade de espaço livre (expresso como uma porcentagem) no sistema de arquivos que contém o log:
Se o espaço livre ficar abaixo desse valor percentual, interrompa a contabilização do processo
Se o espaço livre for superior a este valor percentual, inicie a contabilização do processo
Com que frequência (em segundos) os dois valores acima são verificados
Para alterar um valor neste arquivo, uma sequência de números separados por espaços deve ser retornada.
Configuração padrão: 2 4 30
Esses valores fazem com que a contabilização seja interrompida se houver menos de 2% de espaço livre no sistema de arquivos que contém o diário e inicie a contabilização novamente se houver 4% ou mais de espaço livre. As verificações são feitas a cada 30 segundos.
/proc/sys/kernel/ctrl-alt-del
Este arquivo possui um valor binário que controla como o sistema reage ao receber a combinação de teclas ctrl+alt+delete. Esses dois valores representam:
Um valor zero (0) significa que ctrl+alt+delete é capturado e enviado para o programa init. Isso permitirá que o sistema desligue e reinicie normalmente, como se você tivesse digitado o comando shutdown.
Um valor um (1) significa que ctrl+alt+delete não é capturado e um desligamento não limpo será executado, como se a energia tivesse sido desligada diretamente.
Configuração padrão: 0
/proc/sys/kernel/nomedodomínio
Este arquivo permite configurar o nome de domínio da rede. Não tem valor padrão. O nome de domínio pode ou não ter sido definido.
/proc/sys/kernel/nome do host
Este arquivo permite configurar nomes de host de rede. Não possui valor padrão, o nome do host pode ou não ter sido definido.
/proc/ss/kernel/msgmax
Este arquivo especifica o comprimento máximo das mensagens enviadas de um processo para outro. A passagem de mensagens entre processos ocorre na memória do kernel e não é trocada para o disco, portanto, se você aumentar esse valor, aumentará a quantidade de memória usada pelo sistema operacional.
Configuração padrão: 8192
/proc/sys/kernel/msgmnb
Este arquivo especifica o número máximo de bytes em uma fila de mensagens.
Configuração padrão: 16384
/proc/sys/kernel/msgmni
Este arquivo especifica o número máximo de IDs do serviço de enfileiramento de mensagens.
Configuração padrão: 16
/proc/sys/kernel/pânico
Este arquivo indica quanto tempo, em segundos, o kernel espera antes de reinicializar se ocorrer um "kernel panic". Uma configuração de zero (0) segundos desativará a reinicialização no caso de kernel panic.
Configuração padrão: 0
/proc/sys/kernel/printk
Este arquivo possui quatro valores numéricos que definem para onde a mensagem de log é enviada com base em sua importância. Para obter mais informações sobre os diferentes níveis de log, leia a página de manual do syslog(2). Os quatro valores deste arquivo são:
Nível de log do console: mensagens com prioridade superior a este valor serão impressas no console
Nível de registro de mensagens padrão: mensagens sem prioridade serão impressas com esta prioridade
Nível mínimo de log do console: o valor mínimo para o qual o nível de log do console pode ser definido (prioridade mais alta)
Nível de log do console padrão: o valor padrão para o nível de log do console
Configuração padrão: 6 4 1 7
/proc/sys/kernel/shmall
Este arquivo é a quantidade total de memória compartilhada (em bytes) disponível no sistema em um determinado momento.
Configuração padrão: 2097152
/proc/sys/kernel/shmax
Este arquivo especifica o tamanho máximo (em bytes) dos segmentos de memória compartilhada permitidos pelo kernel.
Configuração padrão: 33554432
/proc/sys/kernel/shmmni
Este arquivo representa o número máximo de segmentos de memória compartilhada usados para todo o sistema.
Configuração padrão: 4096
/proc/sys/kernel/sysrq
Se o valor especificado neste arquivo for diferente de zero, a Chave de Solicitação do Sistema será ativada.
Configuração padrão: 0
/proc/sys/kernel/threads-max
Este arquivo especifica o número máximo de threads que o kernel pode usar.
Configuração padrão: 2048
/proc/sys/net
/proc/sys/net/core/message_burst
O tempo (em 1/10 segundos) necessário para escrever uma nova mensagem de aviso; outras mensagens de aviso recebidas durante este tempo serão descartadas. Isso é usado para evitar ataques de negação de serviço usados por alguém que tenta "inundar" seu sistema com mensagens.
Configuração padrão: 50 (5 segundos)
/proc/sys/net/core/message_cost
Este arquivo contém o valor do custo associado a cada mensagem de aviso. Quanto maior o valor, maior a probabilidade de a mensagem de aviso ser ignorada.
Configuração padrão: 5
/proc/sys/net/core/netdev_max_backlog
Este arquivo especifica o número máximo de pacotes que podem ser enfileirados quando a interface recebe pacotes mais rápido do que o kernel pode processá-los.
Configuração padrão: 300
/proc/sys/net/core/optmem_max
Este arquivo especifica o tamanho máximo do buffer permitido para cada soquete.
/proc/sys/net/core/rmem_default
Este arquivo especifica o valor padrão para o tamanho do buffer do soquete de recebimento em bytes.
/proc/sys/net/core/rmem_max
Este arquivo especifica o tamanho máximo do buffer do soquete de recebimento em bytes.
/proc/sys/net/core/wmem_default
Este arquivo especifica o valor padrão para o tamanho do buffer do soquete de envio em bytes.
/proc/sys/net/core/wmem_max
Este arquivo especifica o tamanho máximo do buffer do soquete de envio em bytes.
/proc/sys/net/ipv4
Todos os parâmetros IPv4 e IPv6 estão documentados na documentação do código-fonte do kernel. Consulte o arquivo /usr/src/linux/Documentation/networking/ip-sysctl.txt.
/proc/sys/net/ipv6
O mesmo que IPv4.
/proc/sys/vm
/proc/sys/vm/buffermem
Este arquivo controla a quantidade de memória geral do sistema usada para memória buffer (expressa como uma porcentagem). Possui três valores, que são definidos escrevendo uma sequência de números separados por espaços no arquivo.
Porcentagem mínima de memória usada para buffers
Se ocorrer uma situação em que não resta muita memória do sistema e a memória do sistema estiver sendo reduzida, o sistema tentará manter a quantidade de memória buffer.
Porcentagem máxima de memória usada para buffers
Configuração padrão: 2 10 60
/proc/sys/vm/freepages
Este arquivo controla como o sistema responde a vários níveis de memória disponível. Possui três valores, que são definidos escrevendo uma sequência de números separados por espaços no arquivo.
O kernel só pode alocar alguma memória se o número de páginas disponíveis no sistema atingir um limite mínimo.
Se o número de páginas livres no sistema ficar abaixo desse limite, o kernel iniciará a troca de maneira mais agressiva para liberar memória e manter o desempenho do sistema.
O kernel tentará manter esta quantidade de memória do sistema disponível. Valores abaixo disso permitirão a troca de kernel.
Configuração padrão: 512 768 1024
/proc/sys/vm/kswapd
Este arquivo controla como o kernel pode trocar memória. Ele possui três valores, que são definidos gravando uma sequência de números separados por espaço no arquivo:
O número máximo de páginas que o kernel tenta liberar de uma vez. Se quiser aumentar a largura de banda durante a troca de memória, você precisará aumentar esse valor.
O número mínimo de vezes que o kernel tenta liberar uma página por troca.
O número de páginas escritas pelo kernel em uma troca. Isso tem o maior impacto no desempenho do sistema. Quanto maior for esse valor, mais dados serão trocados e menos tempo será gasto em buscas no disco. Entretanto, um valor muito grande pode afetar negativamente o desempenho do sistema, "inundando" a fila de solicitações.
Configuração padrão: 512 32 8
/proc/sys/vm/pagecache
Este arquivo faz o mesmo trabalho que /proc/sys/vm/buffermem, mas é um mapa de memória do arquivo e um cache geral.
Torne as configurações do kernel persistentes
Um utilitário conveniente é fornecido aqui para alterar qualquer parâmetro do kernel no diretório /proc/sys. Ele permite alterar o kernel em execução (semelhante aos métodos de eco e redirecionamento usados acima), mas também possui um arquivo de configuração que é executado quando o sistema é inicializado. Isso permite que você faça alterações no kernel em execução e adicione essas alterações ao arquivo de configuração para que persistam durante as reinicializações do sistema.
Este utilitário é chamado sysctl e está totalmente documentado na página de manual do sysctl(8). O arquivo de configuração do sysctl é /etc/sysctl.conf, que pode ser editado e gravado em sysctl.conf(8). sysctl trata arquivos em /proc/sys como variáveis individuais que podem ser alteradas. Portanto, tomando o arquivo /proc/sys/fs/file-max em /proc/sys como exemplo, ele representa o número máximo de identificadores de arquivo permitidos no sistema. Este arquivo é representado como fs.file-max.
Este exemplo revela algumas coisas maravilhosas sobre a notação sysctl. Como o sysctl só pode alterar variáveis no diretório /proc/sys, e as pessoas sempre pensam que as variáveis estão neste diretório, essa parte do nome da variável (/proc/sys) é omitida. Outra mudança a ser observada é a substituição do separador de diretório (barra /) pelo ponto final em inglês (ponto).
Existem duas regras simples para converter arquivos em /proc/sys em variáveis em sysctl:
Remova a parte frontal /proc/sys.
Altere as barras nos nomes dos arquivos para pontos.
Essas duas regras permitem converter qualquer nome de arquivo em /proc/sys em qualquer nome de variável em sysctl. A conversão geral de arquivo para variável é:
/proc/sys/dir/arquivo --> dir.arquivo
dir1.dir2.file --> /proc/sys/dir1/dir2/file
Você pode usar o comando sysctl -a para visualizar todas as variáveis que podem ser alteradas e suas configurações atuais.
Variáveis também podem ser alteradas usando sysctl, que faz exatamente a mesma coisa que o método echo usado acima. Sua representação é:
sysctl -w dir.file="valor"
Usando file-max como exemplo novamente, use um dos dois métodos a seguir para alterar o valor para 16384.