Quantidade de memória
Como já discutido na Parte Um, toda a memória é chamada de memória virtual e consiste na memória física e no espaço de troca. A disponibilidade da memória física depende do hardware que está embutido na máquina, bem como a quantidade de memória que o processador pode abordar, na verdade. Como exemplo, os sistemas operacionais de 32 bits têm um limite de 4G de memória, apenas (2^32 bits), enquanto os sistemas operacionais com base em 64 bits permitem teoricamente até 16 EB (2^64bits).
Para ser preciso, a limitação é a placa -mãe com o próprio processador, os módulos de memória que são suportados por essa placa -mãe e os módulos de memória específicos que estão conectados aos slots de memória na placa -mãe. Uma maneira de maximizar a memória disponível do sistema é usar módulos de memória semelhantes que tenham o maior tamanho possível. A segunda maneira é usar a memória de troca como já explicado na parte um.
Acesso à memória
Em seguida, uma melhoria da velocidade de acesso da memória entra em consideração. A princípio, o limite físico é dado pelo próprio módulo de memória. Você não pode ir abaixo dos limites físicos do hardware. Em segundo, um Ramdisk e, no terceiro, o uso do ZRAM pode acelerar o acesso à memória. Discutiremos essas duas tecnologias com mais detalhes.
Criando um Ramdisk
Um Ramdisk é um bloco de memória que o sistema operacional lida como um dispositivo físico para armazenar dados - um disco rígido que é totalmente mantido na memória. Este dispositivo temporário existe assim que o sistema inicia e permite o ramdisk, e o sistema desativa o Ramdisk ou desliga. Lembre -se de que os dados que você armazena em tal ramdisk é perdido após o desligamento da máquina.
Você pode criar um ramdisk dinâmico via sistema de arquivos TMPFS e via sistema de arquivos RAMFS. Ambas as tecnologias diferem significativamente uma da outra. Primeiro, dinâmico significa que a memória para o Ramdisk é alocada com base em seu uso (verdadeiro para ambos os métodos). Contanto que você não armazene dados nele, o tamanho do ramdisk é 0.
Criar um ramdisk dinâmico via TMPFS é o seguinte:
# mkdir /mídia /ramdiskCriar um ramdisk dinâmico via Ramfs é o seguinte:
# mkdir /mídia /ramdiskSegundo, usando TMPFs e, a menos que explicitamente especificado, o tamanho do Ramdisk é limitado a 50% da memória física. Em contraste, um ramdisk baseado em ramfs não tem essa limitação.
Criar um ramdisk dinâmico via TMPFS com um tamanho relativo de 20% da memória física é a seguinte:
# mkdir /mídia /ramdiskCriar um ramdisk dinâmico via TMPFS com um tamanho fixo de 200m de memória física é o seguinte:
# mkdir /mídia /ramdiskTerceiro, ambos os métodos lidam com a troca de uma maneira diferente. Caso o sistema atinja o limite de memória de um ramdisk baseado em tmpfs, os dados do Ramdisk são trocados. Isso frustra a idéia de acesso rápido. Por outro lado, o sistema operacional prioriza o conteúdo e as páginas de memória solicitadas de um ramdisk baseadas em Ramfs, mantém isso na memória e troca as páginas de memória restantes para o disco.
Nos exemplos acima, usamos /mídia/ramdisk
Como um ponto de montagem. Em relação aos dados regulares, a única parte do sistema de arquivos Linux recomendada para ser usada em um ramdisk é /tmp
. Este diretório armazena dados temporários, apenas que não persistem. Criar um ramdisk permanente que armazena o sistema de arquivos /tmp requer uma entrada adicional no arquivo /etc/fstab
como segue (baseado em ramfs):
Na próxima vez que você inicializar seu sistema Linux, o RamDisk será ativado, automaticamente.
Usando Zram
Zram significa troca virtual compactada em RAM e cria um dispositivo de bloco compactado diretamente na memória física. Zram entra em ação (uso) assim que não houver mais páginas de memória física disponíveis no sistema. Em seguida, o kernel Linux tenta armazenar páginas como dados compactados no dispositivo Zram.
Atualmente, não há pacote disponível para Debian GNU/Linux, mas Ubuntu. É chamado Zram-Config. Instale o pacote e configure um dispositivo ZRAM simplesmente iniciando o serviço Systemd da seguinte forma:
# SystemCtrl Start Zram-ConfigConforme dado pela saída de Swapon -s,
O dispositivo está ativo como uma partição de troca adicional. Automaticamente, um tamanho de 50% da memória é alocado para o ZRAM (veja a Figura 1). Atualmente, não há como especificar um valor diferente para o Zram ser alocado.
Para ver mais detalhes sobre a partição de troca compactada, use o comando zramctl
. A Figura 2 mostra o nome do dispositivo, o algoritmo de compressão (LZO), o tamanho da partição de troca, o tamanho dos dados no disco e seu tamanho comprimido, bem como o número de fluxos de compressão (valor padrão: 1).
Estratégia de uso
Em seguida, nos concentramos na estratégia de uso da memória. Existem alguns parâmetros para influenciar o comportamento do uso e distribuição da memória. Isso inclui o tamanho das páginas de memória - em sistemas de 64 bits, é 4m. Em seguida, o swappiness do parâmetro desempenha um papel. Como já explicado na Parte Um, este parâmetro controla o peso relativo dado para trocar de memória de tempo de execução, em vez de soltar as páginas de memória do cache da página do sistema. Além disso, não devemos esquecer o cache e o alinhamento da página de memória.
Use programas que requerem menos memória
Por último, mas não menos importante, o uso da memória depende dos próprios programas. A maioria deles está ligada à biblioteca C padrão (LIBC padrão). Como desenvolvedor, para minimizar seu código binário, considere usar uma alternativa e a biblioteca C muito menor em vez. Por exemplo, existem dietlibc [1], uclibc [2] e musl lib c [3]. O site do desenvolvedor de Musl Lib C contém uma extensa comparação [4] sobre essas bibliotecas em termos do menor programa estático possível, uma comparação de recursos, bem como os ambientes de compilação e arquiteturas de hardware com suporte suportadas.
Como usuário, talvez você não precise compilar seus programas. Considere procurar programas menores e estruturas diferentes que requerem menos recursos. Como exemplo, você pode usar o ambiente de desktop XFCE em vez de kde ou gnome.
Existem algumas opções para mudar o uso da memória para melhor. Isso varia de troca à compressão com base no ZRAM, além de configurar um Ramdisk ou selecionar uma estrutura diferente.
O autor gostaria de agradecer a Axel Beckert e Gerold Ruprecht pelo apoio ao preparar este artigo.