Use o comando watch para monitorar processos em execução

O utilitário watch é usado no Linux para rodar outros programas periodicamente e exibir resultados atualizados.
O que ele faz é reexecutar programas, até que você o mande parar.
Para interromper o seu andamento, use as teclas ^C (Ctrl + c).
O watch aceita parâmetros e opções para determinar de quanto em quanto tempo ele deve rodar novamente um comando.
Segue alguns exemplos de uso.

Como monitorar o uso das unidades de armazenamento do seu sistema

Você pode observar o espaço livre de todos os drives (internos, externos ou remotos) conectados ou montados no seu sistema ao combinar o comando df com o watch.
Veja um exemplo:


watch df -h

Como padrão, o watch reexecuta seu comando a cada 2 segundos.
linux free watch
Você pode alterar este comportamento com a opção ‘-n’ ou ‘–interval’:


watch --interval 0.5 du -h

Na linha acima, ajustei o intervalo entre uma execução e outra para meio segundo.
Desta vez, usei o comando du, que mostra a ocupação (ou uso) de cada diretório montado no sistema.
linux disk usage
Note que o watch exibe, no canto superior esquerdo da tela, o intervalo de tempo entre cada execução do programa: Every 0,5s (ou seja, “a cada meio segundo”), na imagem acima.

O comando df (disk free) mostra o espaço livre em uma unidade montada.
O du (disk used ou disk usage) mostra o uso ou a ocupação dos diretórios atuais

Como monitorar o uso da memória no Linux

O comando free é usado para mostrar a quantidade de memória livre, em diversos locais (RAM, SWAP etc).
Você pode usar o watch para verificar como o uso dos programas no seu computador afetam a memória do sistema.
Experimente o seguinte:


watch free

Aqui também é possível estabelecer um intervalo de atualização.
A visualização pode ficar mais interessante, se você permitir ao watch destacar os dados que sofreram alterações:


watch --differences --interval 0.1 free

Note que o menor intervalo possível é 0.1 segundos.
linux free memory

Outros exemplos de uso do watch

É possível encontrar outros exemplos de uso no manual do comando (man watch).
Por exemplo, para monitorar os arquivos que sofrerem algum tipo de modificação ou edição, no diretório atual, use o comando da seguinte forma:


watch -d 'ls -l'

Este tipo de comando é mais usado no diretório de logs ou no sistema de arquivos proc.

Baixe e instale o f3 para testar cartões de memória e pendrives no Linux

O kit de ferramentas F3, traz um conjunto de aplicativos para verificar, testar e consertar mídias flash falsificadas.
Desenvolvido pelo Michel Machado é uma alternativa a aplicativos proprietários (embora gratuitos), como o SOSFakeFlash e o H2testw.
A proposta é trabalhar com cartões de memória SD e, inicialmente, determinar se sua mídia é ou não autêntica — mas você pode usá-lo em pendrives também.
many sd cards
Neste texto, vou mostrar como baixar e compilar (para quem deseja usar a versão mais atual da ferramenta) e também como instalar pelo apt, no Debian e no Ubuntu. Escolha o método que achar que lhe serve melhor.
No Android, a ferramenta SD insight também pode ser usada para obter informações sobre cartões de memória inseridos no aparelho.
Alguns exemplos neste texto são executados em pendrives. Isto se deve ao fato de que, atualmente, os meus cartões de memória se encontrarem tão danificados que não é possível sequer montá-los. E a mídia precisa, em alguns casos, ser montada para algumas ferramentas funcionarem.

O kit de ferramentas F3

O conjunto de aplicativos consiste no f3probe, f3fix e no f3brew — e eu só usei a versão para Linux:

  • O primeiro, é a maneira mais rápida para identificar drives falsos e determinar o tamanho real deles, em bytes.
  • O segundo, cria condições para usar a capacidade real de uma mídia falsa, sem perder dados.
    Se você aceita um conselho, não use mídias falsas ou defeituosas, mesmo que estejam funcionando “razoavelmente” para armazenar arquivos importantes. Além disto, é importante ter uma prática de fazer backups de seus dados frequentemente.
  • O terceiro, ajuda desenvolvedores a entender o funcionamento de drives falsos.

De acordo com o Michel, F3 corresponde às palavras Fight Flash Fraud, (combate a fraude em mídias flash) ou Fight Fake Flash (combate a flash falso).

Se você tem mídias flash falsas, considere a possibilidade de doá-las ao desenvolvedor, para ele melhorar ainda mais o seu trabalho — veja os links ao final do artigo.

Como instalar o F3 no Debian e Ubuntu

Se você prefere baixar o código e compilar o F3, pule esta seção (não tenha medo, o processo é simples).
Para instalar o programa a partir dos repositórios oficiais, via apt, use o seguinte comando:

sudo apt update
sudo apt install f3

O meu sistema atual é Debian 9 Stretch e vou mostrar todos os procedimentos na linha de comando.
O F3, contudo, dispõe de duas interfaces gráficas para quem prefere este meio de resolver as coisas:

  • F3 QT — voltada para o ambiente Linux e usa (como o nome indica) a biblioteca gráfica QT.
    A interface suporta o f3write, o f3read, e o f3probe.
  • F3 X — para o MAC OS X, que usa o Cocoa. De acordo com a página oficial do autor, suporte o f3write e o f3read.

Neste artigo, não vou abordar a instalação ou o uso das interfaces gráficas.

Como baixar e compilar o F3

Se você já optou pelo método anterior de instalação, pule esta seção.
Para baixar o código, use o comando wget ou clique neste link, para baixar a versão estável:

wget https://github.com/AltraMayor/f3/archive/v6.0.zip

… ou apenas clique no link https://github.com/AltraMayor/f3/archive/v6.0.zip.
Se preferir, você pode tentar encontrar uma versão mais atual, no site do desenvolvedor.
As instruções, que seguem, constam do arquivo README.md, que vem junto com o pacote zip, baixado.
Copie o arquivo f3-xxx.zip ou v6.0.zip para o local onde você deseja deixar o código e os binários e siga o procedimento:

unzip f3-6.0.zip
cd f3-6.0
sudo apt install libudev1 libudev-dev libparted0-dev
make experimental

No procedimento, descrito acima, me baseei no Debian 9, para instalar as bibliotecas de desenvolvimento libudev1, libudev-dev e libparted0-dev. Se você usa outra distro, adéque o comando para a sua instalação.
Isto é o suficiente para ter o F3 funcionando no seu sistema.

Como usar o f3write e o f3read

Depois de inserir a mídia no seu leitor, certifique-se da sua localização com o comando lsblk:

lsblk 

Como já mencionei, meu cartão está danificado (não é falso) e não irá montar. Mas a sua presença pode ser detectada. Veja o destaque, na última linha:

NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0 931,5G  0 disk 
├─sda1    8:1    0  21,4G  0 part /
├─sda2    8:2    0 881,1G  0 part /home
└─sda3    8:3    0  10,4G  0 part [SWAP]
mmcblk0 179:0    0   1,9G  0 disk

Antes de prosseguir, certifique-se de ter backup de seus dados.
Depois de inserir o cartão no slot/leitor, aguarde a montagem da mídia.
Em seguida, execute o f3write em relação a pasta/diretório em que a mídia se encontra montada:

f3write /media/justincase/music/

O processo pode demorar alguns minutos:

Free space: 2.68 GB
Creating file 1.h2w ... OK!                        
Creating file 2.h2w ... OK!                        
Creating file 3.h2w ... OK!                        
Free space: 0.00 Byte
Average writing speed: 5.30 MB/s

O que ocorreu acima?
Sendo um drive de capacidade 4 GB, com 2,68 GB de espaço livre, o f3write procurou preencher o espaço livre com os arquivos 1.h2w, 2.h2w e 3.h2w.
Os 2 primeiros arquivos tem 1 GB, cada. O último ficou com 700 MB.
A programa preenche o drive, mas não apaga os arquivos preexistentes.
Use o comando ls, para ver o conteúdo, se quiser.
Em seguida, use o f3read para verificar a consistência dos arquivos .h2w:

f3read /media/justincase/music/

O resultado é separado em 5 colunas: A primeira coluna exibe a quantidade de setores OK. A segunda, a quantidade de setores corrompidos. A penúltima e última colunas mostram os setores que sofreram alterações e os que foram sobrescritos.

                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
Validating file 2.h2w ... 2097152/        0/      0/      0
Validating file 3.h2w ... 1434984/        0/      0/      0

Data OK: 2.68 GB (5629288 sectors)
Data LOST: 0.00 Byte (0 sectors)
	       Corrupted: 0.00 Byte (0 sectors)
	Slightly changed: 0.00 Byte (0 sectors)
	     Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 20.16 MB/s

Em destaque, acima, a quantidade de dados que se encontra em setores confiáveis (ou Data OK).
Os números dos campos Data LOST e Corrupted, correspondem aos setores ruins e que não merecem confiança dentro da sua mídia.
Se você tivesse problemas, esta seção exibiria algo parecido com o seguinte:

Data LOST: 27.81 GB (58322336 sectors)
	       Corrupted: 27.81 GB (58322336 sectors)

Repare, também na velocidade de leitura (reading speed), para comparar com o que é alegado na embalagem do cartão.
Este valor é baseado em testes de laboratório, em condições perfeitas.
O valor obtido pelo F3 é uma estimativa e pode variar drasticamente, em função de outros processos em execução no seu sistema. Além disto, o leitor e a porta USB podem ter fatores limitantes do fluxo de dados.
Você pode repetir os testes quantas vezes quiser, com o f3read — ele é independente do f3write.

Algumas variações no espaço/capacidade total da mídia de armazenamento, em relação ao anunciado na embalagem, podem ser atribuídas a sistemas de arquivos que fazem reservas de segurança (ext2, ext3, ext4 etc.)

Como testar o dispositivo de armazenamento com o f3probe

O f3probe não precisa que a sua mídia esteja montada e deve ser direcionado ao endereço “físico” e não à pasta de montagem.
Novamente, use o lsblk para descobrir onde se encontra o dispositivo em que você quer executar o f3probe.

sudo f3probe /dev/mmcblk0 

O resultado, abaixo, indica que o device está danificado e que tem 0.00 bytes *utilizáveis*.

[sudo] senha para justincase: 

F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient.

Probe finished, recovering blocks... Done

Bad news: The device `/dev/mmcblk0' is damaged

Device geometry:
	         *Usable* size: 0.00 Byte (0 blocks)
	        Announced size: 1.88 GB (3952640 blocks)
	                Module: 2.00 GB (2^31 Bytes)
	Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
	   Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 7.33s

Ao tentar usar uma identificação como /dev/sdb1 ou /dev/sdc3, para o f3probe, ele irá avisar que você precisa indicar o endereço “raíz”: /dev/sdb ou /dev/sdc.
Para acessar este tipo de endereço, é necessário ter privilégios administrativos.
Use a opção ‘–destructive’ se você não se importa em perder dados no dispositivo testado.
Acrescente a opção ‘–min-memory’, para economizar memória do sistema — em compensação o processo ficará mais lento.
A opção ‘–time-ops’, testa leitura, escrita e aplica resets.
A mensagem abaixo, se você a obtiver é indício de falsificação:
Bad news: The device `/dev/sdb’ is a counterfeit of type limbo.”
A opção ‘–destructive’ faz o utilitário desprezar o conteúdo do drive, para aumentar a velocidade do teste. Sem ela, o F3 fará backup dos dados, antes de os destruir e os copia de volta, quando terminar o teste.
O problema é que você ainda pode perder tudo, caso o F3 deixe de funcionar no meio do procedimento. Portanto, faça seu próprio backup, antes de usar o F3.

Como resolver o problema do cartão de memória falso

Obviamente, você não deve aceitar ficar com um produto falso.
O melhor caminho é deixar claro para o vendedor que você sabe que ele te vendeu um produto ilegítimo e procurar receber o seu dinheiro de volta.
Ao agir assim, você ajuda outras pessoas a não serem enganadas.
Se não houver meios de reaver o seu prejuízo, esta seção irá te ajudar a tentar reduzir os danos.
Uma mídia de armazenamento falsa, usualmente, tenta fazer passar que tem um capacidade muito superior à real.
Por exemplo, anuncia que é um cartão de 32 GB e tem, no máximo, 8 GB utilizáveis.
Se você prestar atenção, o resultado do f3probe contém uma sugestão de uso do f3fix que pode ajudar a corrigir o problema no caso de mídia falsa.
O aviso costuma ser parecido com este:

f3fix --last-sec=16477878 /dev/sdb

Certifique-se de ter privilégios de superusuário para rodar o comando contido no aviso que você obteve, aí.

O f3fix funciona criando uma partição no seu cartão de memória, que incluirá apenas a sua parte utilizável. Isto evita que dados sejam gravados na “área ruim” (ou inexistente).
Ainda assim, não é recomendável confiar os arquivos mais importantes da sua vida a um dispositivo nestas condições.
Esta solução te dará algum fôlego para guardar dinheiro para comprar um novo cartão de memória SD.

Se, ao final da execução, o f3fix avisar que tem que forçar o kernel a recarregar a tabela de partições (reload the new partition table), desconecte e reconecte o dispositivo. Assim que a nova partição estiver disponível, faça a sua formatação.
O exemplo, abaixo, formata a mídia em /dev/sdb1 com o sistema de arquivos VFAT:

sudo mkfs.vfat /dev/sdb1
mkfs.fat 3.0.26 (2014-03-07)

A partir deste ponto, o cartão deve estar a funcionar bem.
Monte-o novamente e faça o teste f3write/f3read, novamente
Se você ainda obtiver mensagens informando erros e setores corrompidos, repita o procedimento f3write/f3read, mais uma vez.
É comum alguns cartões se recuperarem de falhas em um segundo ciclo de escrita.
Contudo, se os setores corrompidos persistirem, o conselho é desistir da mídia — pois ela não é apenas falsa, mas de baixíssima qualidade.
Boa sorte!

Referências

Site oficial: https://github.com/AltraMayor/f3/.
Documentação: http://oss.digirati.com.br/f3/.

Uma explicação simplificada sobre a gestão de memória no Linux, com foco no swap.

Uma das coisas mais certas, quando se fala em gestão da memória RAM, é que não existe memória sobrando ou ociosa em um sistema Linux.
Cada aplicação usa uma quantidade da memória disponível no sistema.
Do que “sobra”, com exceção dos últimos megabytes, o Linux usa para fazer caching — no que se inclui o cache de página, os caches de inodes etc.
Ocupar toda a memória física disponível, é benéfico — ajuda a melhorar enormemente a eficiência geral do sistema.
Tanto a leitura quanto a escrita em disco podem se beneficiar imensamente com o uso do cache.
Em mundo ideal, você sempre terá memória suficiente para abrigar todas as suas aplicações, suprir as necessidades delas e, de lambuja, ainda terá algumas centenas de megabytes disponíveis para fazer caching.
Neste mundo utópico, desde que suas aplicações não façam demandas crescentes por mais memória e o sistema não exerça pressão crescente no cache, não há necessidade alguma para swap — a não ser permitir a hibernação.

Além de auxiliar na gestão da memória virtual do sistema, o swap tem outro papel importante: guardar o estado atual do sistema, caso você ative a hibernação do computador.
Esta função do swap não será abordada neste texto, já que não tem relação direta com o gerenciamento de memória do sistema.

Para se aprofundar mais em algum tema, clique nos links incluídos no texto deste artigo e nos que estão relacionados ao final do post.


Voltando ao caching
À medida em que as aplicações precisam de mais memória física, o sistema vai abrindo mão do espaço que estava usando para o cache em prol delas.
Desalocar cache é tão simples e fácil que é feito em tempo real.
Uma vez que todo o conteúdo do cache é sempre uma cópia de algo que já se encontra gravado em disco, portanto seu espaço, ou pode ser disponibilizado imediatamente, ou já está sempre prestes a ser liberado nos próximos segundos.
O fato é que realocar o espaço usado para caching tem zero impacto na performance das aplicações.
Tendo isto em mente, quando nos referimos a memória física “livre”, podemos estar incluindo ou não a que está sendo usada pelo cache.
linux-memória-ram-livre
Esta é a maneira como todos os sistemas operacionais modernos trabalham. Na hora de exibir a quantidade de memória livre, contudo, alguns incluem o que está ocupado pelo cache, outros não.
Concordo com alguns autores que, ao falar de “memória livre”, faz mas sentido incluir a parte ocupada pelo cache — já que é instantaneamente disponibilizada ao ser requisitada pelas aplicações.
No Linux, ao executar o comando free, ele exibe as duas situações:

free -h
              total        used        free      shared  buff/cache   available
Mem:           2,0G        207M        1,2G         55M        521M        1,7G
Swap:          6,7G          0B        6,7G

No Linux, o comando free, inclui valor do cache na coluna “disponível” (available).
Se preferir ver os valor do cache destacado em uma coluna, use as opções ‘-hwt’:

free -hwt
              total        used        free      shared     buffers       cache   available
Mem:           2,0G        491M        262M        127M        2,0M        1,2G        1,3G
Swap:          6,7G        144K        6,7G
Total:         8,7G        491M        7,0G

Como o Linux usa o swap

Este tópico será explicado de maneira básica, aqui.
Sugiro a leitura de Perguntas e respostas sobre o SWAP, caso você queira saber mais sobre o assunto.
Uma vez preenchida toda a memória física disponível na sua máquina, não há mais espaço suficiente para o cache garantir a velocidade do fluxo de dados entre as mídias físicas e a memória.
Neste caso, o Linux irá realocar espaço na memória, usado por aplicações inativas (ou pouco usadas), da memória RAM, para o swap (no disco rígido), com objetivo de ter de volta algum espaço para operar com o cache.
Isto não acontece como fruto de uma decisão simples. Não existe “um percentual” de uso da memória a partir do qual o sistema automaticamente começa a fazer swapping.
Há um algoritmo mais complexo envolvido, a partir do qual o Linux decide que é hora de levar dados da RAM para o disco.
O algoritmo leva vários fatos em conta. Este processo pode melhor ser descrito por “quanta pressão há para alocar novos bytes de memória”.
Se houver muita pressão para alocar novos blocos de memória, também haverá mais chance de que alguns outros blocos sejam “swapeados” para criar mais espaço na memória. Se houver menos pressão, as chances serão menores.
A variável que regula a pressão do cache (ou cache pressure), pode ser definida, junto com o swappiness“.
Se quiser saber como fazer isto, leia Como reduzir o uso do swap para melhorar o desempenho.
A menos que você saiba o que está fazendo, em computadores de uso genérico, não é recomendável alterar estas variáveis.
É comum vilanizarmos o swap. De modo geral, contudo, ele é uma coisa muita boa.
Você pode ser penalizado na performance do seu sistema, por uso ocasional do swap. Mas esta situação traz mais ganhos à responsividade e à estabilidade geral do sistema.
Ao reduzir o valor do swappiness, permite-se que a quantidade de memória cache diminua um pouco mais do que iria normalmente — mesmo que, de alguma forma, ela pudesse ser útil ao sistema.
O uso de valores baixos para a variável swappiness, traz o risco de tornar um computador (de uso genérico) mais lento — por que ele terá menos espaço para fazer caching.
Cabe a você determinar se, no seu caso específico, esta relação pode ser interessante e trazer ganhos de desempenho
Desabilitar completamente o swap, pode trazer riscos a estabilidade do seu sistema, principalmente se ocorrer de toda a memória física vir a ser ocupada.

O que acontece no sistema quando ele está atolado e fazendo uso pesado do swap?

Com alguma frequência, acontece de percebermos que nosso computador parece atolado de tarefas, super lento e o led indicador de atividade no disco está “quase queimando”.
Neste caso, aparentemente, o sistema está enviando uma quantidade tremenda de dados da memória RAM para o HD (ou SSD).
Culpar o swap pela situação, é uma maneira inadequada de abordar o problema.
Se o swapping realmente atingiu este extremo, o fato é que a memória física está prestes a se esgotar — e o swapping é justamente quem está evitando o travamento do sistema ou evitando que este saia “matando” processos a esmo, para conseguir se manter em pé.
Sem o swapping, numa situação como esta, processos irão colidir e morrer (crash n’ die).
Neste caso, o que se tem é um sintoma de problemas mais profundos.
Se o seu computador tivesse memória suficiente, para a execução de todas as suas tarefas, o espaço de troca (swap) serviria apenas para garantir que a memória fosse usada de forma eficiente.
Remover o swap ou restringir arbitrariamente seu uso não vai mudar o fato de que você tem um hardware com pouca memória física para executar suas aplicações.

Quase tudo do que se fala do swap e cache, aqui, vale para qualquer sistema operacional atual. Não se restringe ao Linux, portanto.

O Linux é um sistema operacional extremamente amadurecido e testado em condições das mais adversas (nos computadores mais exigidos do mundo, inclusive).
Acredite, o algoritmo que cuida da gestão da memória, escolhendo os dados menos usados para “swapear” pro disco, é muito eficiente — e a grande maioria dos usuários jamais irá precisar alterar suas variáveis e seus parâmetros de trabalho.
Em um sistema desktop, pouco usado, há uma situação bastante conhecida em que o usuário chega, após algum tempo em que a máquina estava sem uso, e tem que esperar alguns segundos (que parecem horas) até que se torne disponível novamente.
Esta demora é resultante do trabalho de mover de volta (do disco para a memória RAM) os processos que estavam ociosos.
Isto é comum quando deixamos a máquina ligada durante a noite, realizando alguma tarefa, como downloads, checagem antivírus, backup etc., enquanto dormimos.
De manhã, o sistema não tem como prever que você vai querer usar o navegador, que ficou inativo durante horas. Portanto, você terá que esperar um pouco.
Este é um dos pontos “chatos” de deixar o swap habilitado e por conta do sistema. Se você desabilitá-lo, esta lentidão, após o backup (por exemplo), não irá mais ocorrer. Em compensação, o sistema irá rodar um pouco mais lento, durante o uso diário — na medida em que haverá menos espaço para cache.
Outro fator a ser considerado, é a perda da proteção no caso de faltar memória física para suas aplicações — neste caso, o sistema vai arriar.

A maneira mais eficiente, em termos de custos, de resolver lentidão associada ao uso do swap pelo sistema, é aumentar sua memória física.
Se isto não for possível, avalie trocar suas aplicações por outras mais leves.
Desabilitar ou restringir o uso do swap é uma das soluções menos eficazes — uma vez que ele é apenas um mecanismo do sistema, usado para lidar com situações em que a memória física se tornou escassa.

Em sistemas com grande quantidade de memória RAM, o swap pode ser desabilitado com segurança?

Nos dias atuais (veja a data do post), 8 Gb de memória RAM é uma grande quantidade de memória — se estivermos falando de uma distro Linux comum, para uso genérico.
Neste cenário, raramente o usuário irá chegar ao ponto de precisar de swap.
Ainda assim, é desnecessário desativar o swap — lembre que ele tem outras utilidades.
Tampouco há necessidade de ajustar o swappiness — o sistema “sabe” que há bastante espaço na memória RAM para as aplicações e para o cache e nunca irá tomar a decisão de usar o swap.
Se, ainda assim, você quiser desabilitar o swap e reduzir o swappiness, o sistema continuará funcionando bem. Simplesmente não fará diferença.
Nos raros casos em que o sistema precisar lançar mão do swap, vai ser bom tê-lo à disposição.
Deixar os valores padrão, portanto, é a opção pela segurança e pela eficiência — tendo ou não uma grande quantidade de memória.

Como o swap atua para tornar o meu sistema mais rápido?

A transferência de dados entre a memória física e o swap (em HD ou SSD) é uma operação lenta.
Porém, é uma atitude que o kernel só toma quando tem certeza de que os benefícios superam seus custos.
Um exemplo disto é quando a aplicação ativa no seu sistema cresceu no uso da memória a ponto de não deixar mais espaço livre para o cache — ocasionando uma perda sensível na eficiência da transferência de dados.
Neste caso, há benefícios em mover porções inativas ou pouco usadas da memória para o swap, liberando alguma quantidade de memória suficiente para agilizar o fluxo de dados do cache.
Algumas aplicações podem também precisar de uma grande quantidade de dados na hora de iniciar. A pressão por recursos é aliviada logo após seu completo carregamento.
Se o seu sistema já estiver sobrecarregado, de antemão, o swap pode evitar um crash, durante este processo.

Conclusão

Não faça deste caso, um dilema Tostines.
Não é o swap que torna o seu sistema mais lento. É o contrário.
É por estar muito lento, que seu sistema faz uso deste recurso.

As pessoas associam a lentidão do sistema ao uso do swap, por que seu uso acontece quando o sistema está perto da inanição por recursos de memória.
O swap, antes de estar atrapalhando a sua vida, pode estar salvando o seu dia de trabalho.
Se ele está “salvando demais” o seu dia, em vez de fazer dele um vilão suas ações precisam ter como alvo o problema certo — a falta de recursos para rodar as aplicações atuais. Ou muda as aplicações, ou aumenta os recursos.

Referências

Como verificar a memória swap no Linux.
Como criar um arquivo swap no Ubuntu.
Perguntas e respostas sobre o swap.
http://askubuntu.com/questions/184217/why-most-people-recommend-to-reduce-swappiness-to-10-20

Perguntas e respostas sobre o SWAP

No decorrer dos anos, tenho colecionado algumas perguntas sobre o recurso de SWAP, ou área de troca, no Linux.
As perguntas surgiram de alguns artigos sobre o assunto, neste site.
Não tenho a intenção de repetir o que já escrevi (eu não quero ser chato, obviamente) — mas quero responder o que não respondi.
Este post é voltado para usuários novatos e, portanto, não vai abordar técnicas complexas ou usar termos “mais rebuscados” — para isto, há alguns links, no decorrer do texto, para outros posts onde é possível obter informações mais aprofundadas.
Sinta-se à vontade para expôr dúvidas básicas e adicionais ou compartilhar sua experiência, na sessão de comentários.
Disco rígido

O que é o swap

Área de troca ou swap é um espaço em disco que, em conjunto com a memória física (RAM), faz parte do sistema de memória virtual.
A área de troca guarda temporariamente as páginas de memória inativas.
Este espaço é usado quando o sistema percebe que precisa de mais memória física (além da que se encontra disponível) para os processos ativos e para os dados que estão em uso.
O swap pode ficar em uma partição dedicada do disco rígido (o que é recomendado), em um arquivo de swap ou em uma combinação dos dois.
Seu principal defeito é que seu tempo de acesso é muito lento.
Se comparar a velocidade da memória RAM com as taxas de transferência dos discos rígidos mais rápidos, o swap é extremamente lento, para ser usado como memória.
Trata-se de um paliativo e não, exatamente, uma solução.
Se o seu sistema está fazendo uso intenso do swap, você deveria pensar em adquirir mais memória RAM.
Disco rígido, HDD

Por que necessitamos de SWAP

Há várias situações em que o seu sistema pode recorrer ao uso do swap.

  • Programas consomem memória.
    Alguns programas consomem muita memória — o que pode fazer com que o sistema necessite, temporariamente, de uma quantidade extra de espaço na memória RAM.
    Parte dos recursos, das informações ou páginas usadas por programas podem não estar mais sendo utilizadas. Neste caso, o sistema pode movê-las para a área de troca, liberando memória RAM para as tarefas ativas.
  • O recurso de hibernação ou suspend-to-disk funciona gravando o conteúdo da memória RAM na partição, antes de desligar a máquina.
    Para isto ocorrer, é necessário que o espaço alocado para o swap seja do tamanho (pelo menos) da sua memória RAM.
  • Circunstâncias ou eventos imprevisíveis, de vários tipos (o que inclui programas com “mau comportamento”) podem ocupar uma grande quantidade de memória. Neste caso, é bom ter um espaço extra para “manobrar” dentro do sistema.
  • Otimizar o uso da memória do sistema, uma vez que os discos rígidos são consideravelmente mais lentos do que a RAM. Isto ocorre por que o acesso aos dados envolve a movimentação de partes mecânicas, no caso dos HDs.
    Ainda que você considere o uso do swap em uma unidade de estado sólido (ou SSD – Solid State Drive), ela ainda será significativamente mais lenta que a memória RAM.
    Deixar o gerenciamento de memória do sistema para o Linux resolver, costuma ser a melhor política.
    O Linux carrega os arquivos para a RAM e os mantém lá para uso posterior. Os arquivos armazenados na RAM podem ser disponibilizados instantaneamente.
    Há porções da RAM separados para para acelerar a leitura dos dispositivos de armazenamento auxiliares (leitores de CD/DVD/Bluray, cartões de memória, USB etc) — e são chamadas de cache.
    A função do sistema de cache, é armazenar em RAM, dados que estão sendo lidos dos dispositivos auxiliares, para que possam ser acessados mais rapidamente.
    Uma vez que o caching é uma das melhores formas de agilizar as tarefas, o Linux prefere mover dados pouco usados para o swap, em função de liberar mais memória para o sistema de cache — que é uma solução mais eficiente.
  • O sistema de gestão da memória, no Linux, é comprovadamente excelente. O aperfeiçoamento deste sistema, contudo, pode ser feito através de ajustes, que o adequem às necessidades específicas das aplicações que você estiver rodando.

  • Otimizar a performance do próprio swap. Já que este também usa o disco rígido ao mesmo tempo que todo o resto do sistema, pode causar gargalos e afetar seriamente a performance do sistema.
    Uma das formas de evitar este problema é manter a área de troca em um drive físico diferente — para evitar a competição por recursos entre os aplicativos e o sistema de swap.

Qual o tamanho ideal do swap

Em distribuições populares, como o Ubuntu, Debian, Fedora etc. instaladas em máquinas com menos de 1 GB de memória física (RAM), o tamanho do swap deve ser equivalente à quantidade de memória.
Se você tiver muito espaço no disco rígido, pode configurar o sistema para usar mais swap, até um teto equivalente ao dobro da capacidade de memória física.
A partir deste valor, não há benefícios significativos.
Se você precisa de um swap maior do que o dobro da capacidade de memória RAM, você deveria investir em aumentar a quantidade de memória física do sistema.
Geralmente, se algo demora 1 segundo para ser feito dentro da memória RAM, levaria 15 minutos para ser feito a partir do disco rígido. Mesmo em um SSD rápido, o trabalho ainda levaria mais de um minuto.
É seguro acompanhar a tabela abaixo, para computadores com até 1 GB de memória RAM:

Quantidade de RAM Sem hibernação Com hibernação Máximo
(Valores em MB)
256 256 512 512
512 512 1024 1024
1024 1024 2048 2048

Trocando em miúdos, configure o tamanho do swap para ser igual ao da memória física da sua máquina, se não for usar o recurso de hibernação. Se for usar o recurso, configure o swap para o dobro da memória física.
Para computadores, com maior quantidade de memória, use os valores da tabela a seguir.

Quantidade de RAM Sem hibernação Com hibernação Máximo
(Valores em GB)
1 1 2 2
2 1 3 4
3 2 5 6
4 2 6 8
5 2 7 10
6 2 8 12
8 3 11 16
12 3 15 24
16 4 20 32
24 5 29 48
32 6 38 64
64 8 72 128
128 11 139 256

Estas tabelas demonstram o quanto é indesejável inflar a área de troca no Linux — use apenas o necessário.
Geralmente, o recurso de hibernação não faz sentido em servidores. Portanto, podem usar a quantidade mínima de espaço na área de troca.

O que é mais rápido? Usar uma partição exclusiva para swap ou usar um arquivo swap?

Na perspectiva do usuário final, em kernel de versão superior a 2.6.x, arquivos de swap e partições de swap têm o mesmo desempenho de velocidade.
A limitação dos arquivos de swap é que precisam ter seus blocos todos contíguos para obter o melhor desempenho.
A fragmentação não é um problema pro kernel — na verdade, o sistema de swap pode englobar partições, arquivos, drives USB etc. todos de uma vez.
O kernel mantém um mapeamento com a localização de cada dispositivo e o acessa diretamente, ignorando o cache e o sistema de arquivos.
Embora não seja um problema, esta situação concorre para a redução do desempenho.
A documentação da Red Hat recomenda que você use partições exclusivas para swap, portanto.
Quando a partição exclusiva para swap reside em disco rígido (HDD), que é um dispositivo magnético e rotativo, é possível tirar vantagem da localização contígua e desfragmentada dos dados — o que proporciona um tempo de busca menor.
Contudo, é mais fácil administrar os arquivos de swap: você os pode colocar onde quiser; é fácil redimensionar etc.

Podemos usar o swap em uma unidade SSD?

As pessoas costumam ver este cenário como problemático, por 2 motivos:

  1. por acreditar que o swap é muito usado no seu sistema, causando um grande fluxo de dados — intensa atividade de leitura e escrita e
  2. por acreditar que as unidades SSD não suportam um grande número de eventos de leitura e escrita

O fato é que, no Linux, o swap é muito pouco usado. Em um sistema com quantidade adequada de memória para as suas aplicações, há poucas possibilidades de se chegar a usar o swap.
Ainda neste post, mostro como saber a quantidade de swap que você está usando no sistema.
Ainda que fosse muito usado, como no Windows, ainda assim se recomenda deixar o swap no SSD.
As unidades SSD atuais suportam uma grande quantidade de operações de leitura e escrita — o suficiente para você não precisar se preocupar com o suposto desgaste.
Some a isto o fato de que as partições swap do Linux, por padrão, executam operações de trimming, quando o dispositivo de bloco tem suporte ao TRIM.
Portanto, a resposta é sim. Se você tem uma unidade SSD atual, com espaço para uma partição ou arquivo de swap, é recomendado usá-lo.

O que é o swapiness?

O parâmetro de controle swapiness dita a tendência do kernel a mover processos da memória física para o swap (arquivo ou partição).
Como já se sabe, discos são muito mais lentos do que a memória RAM.
Portanto, quanto mais o sistema usa a área de troca em disco, mais lento ele se torna.
O swapiness regula esta relação entre o uso da memória física e o swap:

  • pode ter um valor entre 0 e 100
  • ao definir o valor 0 para o swapiness, você diz pro kernel para só mover processos da memória física para a área de troca em último caso
  • ao definir o valor 100 par o swapiness, você diz ao kernel para mover agressivamente processos da memória física para o swap

Nas principais distribuições GNU/Linux, como Ubuntu, Debian, Fedora etc. o valor padrão do swapiness é igual a 60.
No artigo Como melhorar a performance do Ubuntu, reduzir o valor do swapiness é apontado como uma das medidas a ser adotada para melhorar o desempenho geral do sistema.
No site oficial (veja links ao final do texto) da comunidade e suporte ao Ubuntu, há uma recomendação para usar swapiness=10 em instalações de uso normal.
Para verificar o valor atual do swapiness no seu sistema, use o seguinte comando:

cat /proc/sys/vm/swappiness

Se você quiser saber mais sobre este assunto e aprender a alterar o swapiness, leia o texto Reduza o uso do swap e melhore o desempenho do Linux.
Memória RAM

Por que o Linux não está usando o swap?

É possível saber quanto do swap está sendo usado em seu sistema com o comando free:

free -h
             total       used       free     shared    buffers     cached
Mem:          7,5G       3,5G       4,0G       403M        90M       1,7G
-/+ buffers/cache:       1,7G       5,8G
Swap:          15G         0B        15G

Neste momento, no meu sistema 0 bytes estão sendo usados pelo swap.
A resposta mais simples para esta situação é: se o sistema não está usando, é por que não é necessário.
Contudo, você pode alterar o quadro se abrir vários aplicativos vorazes por recursos da memória do sistema — como o Gimp, o LibreOffice, o Audacity etc).
Depois disto, rode o comando free mais uma vez.
Incrementar o valor do swapiness, como já foi explicado antes, pode ser uma forma mais agressiva de aumentar o uso do swap.
Lembre-se também que o Linux usa o recurso durante a hibernação — onde ele grava o estado atual da memória do sistema.
Você pode também verificar se há e qual é a partição swap no seu sistema, com o comando fdisk:

sudo fdisk -l | grep swap
[sudo] password for justincase: 
/dev/sda1  *        2048  31999999  31997952  15,3G 82 Linux swap / Solaris

Como esvaziar o swap

Mesmo tendo uma grande quantidade de RAM e mesmo que você esteja usando um valor baixo para o swapiness, ainda é possível que o seu sistema recorra ao swap, em algum momento.
Se isto acontecer, você pode manualmente esvaziar esta área.
Só para ficar claro, este procedimento é totalmente desnecessário e você nunca deveria se preocupar em esvaziar a área de troca do seu sistema — o próprio Linux se encarrega de fazer isto automaticamente.
Os próximos passos necessitam de privilégios administrativos para serem realizados:

  1. Inicie o seu editor favorito para criar o script swap2ram.sh. Eu vou guardar o meu script em ‘/usr/local/sbin/’. Você pode gravar o seu onde quiser. Apenas tome o cuidado para adequar as instruções deste post ao que você vai realizar aí.
  2. O conteúdo do script é o que segue:
    #!/bin/sh
    
    mem=$(LC_ALL=C free  | awk '/Mem:/ {print $4}')
    swap=$(LC_ALL=C free | awk '/Swap:/ {print $3}')
    
    if [ $mem -lt $swap ]; then
        echo "ERRO: não há espaço suficiente em RAM para transferir o conteúdo do swap. Não é possível prosseguir." >&2
        exit 1
    fi
    
    swapoff -a && 
    swapon -a
    
    
  3. Após gravar o seu script, torne-o executável:
    sudo chmod +x /usr/local/sbin/swap2ram.sh
    

Basicamente, o script /usr/local/sbin/swap2ram.sh compara a quantidade de memória RAM disponível e o tamanho do swap.
Se houver espaço suficiente na primeira, o script prossegue com a desativação (swapoff) e ativação (swapon) da área de troca.


Imagens: http://www.pixabay.com.

Referências

https://lkml.org/lkml/2006/5/29/3.
https://en.wikipedia.org/wiki/Paging#Linux.
https://help.ubuntu.com/community/SwapFaq.
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/ch-swapspace.html.

Como criar um disco virtual (ram drive) na memória RAM com Linux

A memória RAM representa um espaço de armazenamento extremamente rápido no sistema. Tão rápido, que é difícil comparar com os outros dispositivos mecânicos, como o disco rígido ou HD.
Usar uma parte desta memória como um sistema de arquivos pronto para armazenar seus dados, pode ser uma solução interessante em alguns casos.

O recurso é chamado de drive virtual RAM ou drive de software RAM e oferece um desempenho muito superior ao de um HD ou, mesmo, de um SSD.

bios memória ram ddr3
Trata-se de um hack e ele não traz solução milagrosa para problemas de desempenho. mas pode resolver alguns problemas pontuais que vocẽ esteja tendo.
Usar uma quantidade excessiva de memória RAM, como drive virtual ou ram drive, pode causar outros problemas, uma vez que todos os outros aplicativos presentes no sistema dependem e fazem uso desta memória.
Quando começar a faltar memória RAM para outros aplicativos e arquivos, o sistema passará a fazer uso da memória virtual em disco ou swap (que é o recurso oposto) e acabará perdendo desempenho significativamente.
Pra ficar do lado seguro, não use mais do que 25% da memória RAM livre.
Para saber quanto de memória RAM você tem e quanto, deste total, se encontra livre, use o comando free:

free -h
             total       usado      livre    compart.  buffers     em cache
Mem:          7,5G       3,6G       3,9G       249M        66M       1,9G
-/+ buffers/cache:       1,7G       5,8G
Swap:          15G         0B        15G

A velocidade máxima de transferência de dados de um disco virtual RAM está limitado por fatores como o bus de dados (na placa-mãe), a CPU e os próprios limites de velocidade de transferência da memória RAM.

Para criar um disco virtual de 512 Megabytes, use a seguinte sequência de comandos.
Comece por criar um diretório, que servirá de “link” ou atalho pro seu disco:

sudo mkdir /mnt/ramdisk

em seguida, monte o disco:

mount -t tmpfs -o size=512m tmpfs /mnt/ramdisk

Agora você pode acessar o seu novo disco, no endereço /mnt/ramdisk (inclusive com o gestor de arquivos gráfico).

Em caso de queda de energia ou desligamento proposital do sistema, você pode perder todos os dados armazenados na memória RAM (ela é volátil).
Isto exige que os dados sejam permanentemente copiados para um local seguro (usualmente, o HD).
Por isto, o uso de um disco virtual costuma ser para dados que já tenham cópias em outras mídias mais lentas (CD, DVD, Blu-Ray, HD, SSD etc.).
Dados que se encontram criptografados, por exemplo, podem ser manipulados com mais agilidade em um disco virtual RAM, por exemplo.

Como ter um disco virtual permanente

Se você quiser que o seu sistema sempre inicie o seu ramdrive, insira as configurações feitas no arquivo /etc/fstab (pode ser no final):

tmpfs       /mnt/ramdisk tmpfs   nodev,nosuid,noexec,nodiratime,size=512M   0 0

Tenha em mente que esta solução apenas recria o disco virtual, do zero, toda vez que você iniciar o seu sistema. Os dados, dentro do disco virtual, não se tornam permanentes com esta solução.

Considerações finais

Um sistema GNU/Linux para desktop (Debian, Ubuntu, Fedora etc), normalmente funciona bem com 2 GB de memória RAM. Com 4 GB, funciona melhor ainda.
O que acontece é que alguns usuários pensam em usar a sobra de memória RAM para melhorar de alguma forma o seu sistema como um todo, ao passar alguns processos ou atividades para lá.
O fato é que o Linux já faz tudo isso sozinho, de uma forma ou de outra.
O caching é uma forma de usar a velocidade da memória RAM ou da memória cache, para armazenar temporariamente arquivos e ganhar desempenho.
Há muito pouca margem para ajustes neste ponto, a menos que as suas necessidades sejam mais específicas que as do usuário médio.
Para a maioria dos usuários desktop comuns, o Linux representa o suprassumo da gestão dos recursos do sistema — ele tira e faz o melhor com o que você tem aí.
No artigo Como melhorar o desempenho do Ubuntu, há uma série de dicas para melhorar o desempenho do seu sistema (e valem para qualquer distro). Com estas dicas, é possível tunar o seu sistema e arrancar-lhe mais desempenho.
No que tange um ramdrive as aplicações são muitas. Vou enumerar algumas que eu já usei:

  • espaço de armazenamento temporário de imagens de um DVD, é muito mais rápido carregar as imagens da RAM do que do DVD e, no final, não preciso me preocupar em apagar. Desligou o PC, tá limpo.
  • espaço para armazenar imagens de sistemas operacionais criados com o QEMU, o que torna mais rápido carregar uma máquina virtual. Se não for feita qualquer mudança no sistema dela, não há necessidade de copiar de volta, depois do uso.
  • substituto do diretório de armazenamento de imagens do Apache web server, que ajuda a entregar as imagens do servidor mais rápido aos usuários.

E você? Para que gostaria de usar o seu ramdrive?

Referências:
https://en.wikipedia.org/wiki/RAM_drive.
http://www.linuxscrew.com/2010/03/24/fastest-way-to-create-ramdisk-in-ubuntulinux/.
http://www.jamescoyle.net/how-to/943-create-a-ram-disk-in-linux.