AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 417855
Accepted
virullius
virullius
Asked: 2018-01-18 13:27:40 +0800 CST2018-01-18 13:27:40 +0800 CST 2018-01-18 13:27:40 +0800 CST

Por que o Linux precisa de espaço de troca em uma VM?

  • 772

VM Linux executando nginx (ou qualquer outro daemon leve com uso estável de recursos). A VM recebe 2 GB de memória com 200-300 MB usados ​​pelo sistema operacional e serviços com o restante para cache de arquivo e buffers. Em um caso de uso específico, espero uma sobrecarga fácil de 500 MB.

P: Por que essa configuração precisaria de espaço de troca?

A resposta padrão de "Para evitar o esgotamento da memória" não faz sentido para mim aqui por 2 motivos: 1: a demanda por memória está bem estabelecida e não precisa suportar um aumento significativo inesperado ou repentino. 2: A troca apenas atrasa a situação OOM em qualquer caso. A mesma coisa pode ser realizada atribuindo mais memória à VM em primeiro lugar, especialmente porque ela é provisionada de forma leve e ninguém a perderá, desde que não seja usada.

A outra resposta comum para oferecer suporte à hibernação não se aplica a um servidor em uma VM.

Não vejo razão para trocar em tal servidor; estou esquecendo de algo?

swap
  • 2 2 respostas
  • 5051 Views

2 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-01-18T14:27:00+08:002018-01-18T14:27:00+08:00

    Você não deve pensar em “ter swap” ou não, você deve considerar sua estratégia geral de alocação de memória e determinar se o swap é necessário ou não. Há dois aspectos principais nisso.

    O principal objetivo da troca hoje em dia não é estender a memória física, é fornecer um armazenamento de apoio para páginas não recuperáveis ​​( por exemplo , alocações de memória e s anônimos mmap). Se você executar sem swap, forçará o kernel a manter a memória anônima na memória física, o que reduz sua capacidade de lidar com necessidades variáveis ​​de memória. Obviamente, se você sabe que sua carga de trabalho sempre cabe na memória física disponível, isso não deve ser um problema.

    O segundo aspecto a considerar é a estratégia de overcommit do kernel. Por padrão, as alocações de memória geralmente são bem-sucedidas, independentemente da carga de memória. No entanto, se você estiver tentando controlar sua carga de trabalho, geralmente é útil executar no modo de verificação ( /proc/sys/vm/overcommit_memorydefinido como 2); então os commits são limitados à soma de swap e a memória física não alocada para páginas enormes ajustadas pela taxa de overcommit (que é 50% por padrão). Se você executar sem swap, nada poderá alocar mais da metade da memória física por padrão; adicionando aumentos de swap que limitam linearmente, com menos risco do que aumentar a taxa de overcommit. (Isso geralmente atrapalha as pessoas ao tentar executar JVMs grandes em configurações típicas de servidor.)

    Eu mencionei que existem dois aspectos principais, descritos acima, mas me ocorre que pode haver outro ponto a ser considerado em alguns casos (é realmente uma variante do primeiro ponto): tmpfsos sistemas de arquivos podem facilmente causar problemas ao seu sistema se não tem troca...

    Para saber mais sobre tudo isso, recomendo ler as seções da página de proc(5)manual sobre overcommit e a recente postagem no blog de Chris Down em defesa do swap .

    • 7
  2. Matthew Gauthier
    2018-01-18T14:43:10+08:002018-01-18T14:43:10+08:00

    Você não precisa do espaço de troca, mas há alguns pontos que você não mencionou que valem a pena ter em mente. Algumas páginas que são carregadas quando o sistema inicia nunca mais serão tocadas. É indiscutivelmente melhor deixá-los no disco do que na memória RAM, embora qualquer ganho de desempenho seja provavelmente minúsculo.

    Em uma observação relacionada, algumas cargas de trabalho, como jvm, alocam bastante memória que pode nunca ser usada. Você pode estar jogando o bebê fora junto com a água do banho se sua carga de trabalho habitualmente for exagerada. Limitar o kernel à memória física pode significar que você a) aloca mais RAM do que a VM precisa, desperdiçando recursos do servidor que poderiam ir para outras VMs ou b) faz com que o kernel reduza a quantidade de buffers para reter os não utilizados (ou raramente usado) páginas alocadas com o aumento resultante na atividade do disco diminuindo o desempenho geral.

    Sem a troca ativada, você pode descobrir que sua sobrecarga desaparece misteriosamente se precisar fazer login no sistema para depuração. Na verdade, leva apenas uma vez para fazer login em um sistema que combina restrições de memória iniciais rígidas e um vazamento de memória para incentivar políticas de espaço de troca mais liberais. Levar uma hora para fazer qualquer coisa em uma máquina de surra ainda é uma melhoria em relação ao assassino OOM disparando constantemente.

    Finalmente, não é incomum em sistemas Unix que dumps de kernel sejam colocados em swap. Um bom número de administradores ainda alocará swap suficiente para permitir a depuração de um kernel panic. (Embora aparentemente o Linux ofereça uma solução alternativa para isso agora.)

    • 4

relate perguntas

  • A partição swap é necessária quando a partição raiz e a RAM são grandes o suficiente? [duplicado]

  • As partições swap do Linux suportam o corte?

  • Instale os arquivos de troca em vez da partição de troca manualmente no Arch Linux

  • Evite a inversão zram LRU com zswap e max_pool_percent = 100

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve