sábado, 1 de outubro de 2016

Linux Virtual Memory Management e lentidão ao copiar arquivos grandes para mídia lenta



Colaboração: Dorian Bolivar

Data de Publicação: 27 de setembro de 2016

www.dicas-l.com.br

Se você usa Linux, alguma vez já notou uma lentidão extrema - a ponto de algumas vezes deixar o sistema irresponsivo - ao copiar arquivos grandes, de alguns gigabytes, para mídias lentas, como pendrives USB (especialmente aqueles "genéricos", que oferecem baixa performance)? Se o seu computador é 64 bits e tem bastante memória RAM (8 GB ou mais), muito provavelmente já notou isso. Tanto é que até o Linus Torvalds já abordou esse problema [1], há alguns anos atrás; mesmo assim, ainda não há uma solução definitiva, mas existem tunings do subsistema de Virtual Memory do kernel do Linux que minimizam esse problema.

Antes de continuar, é preciso entender um pouco sobre alguns conceitos do gerenciamento de memória do Linux. Não vou entrar em muitos detalhes, pois este não é um artigo acadêmico, mas no final colocarei algumas referências para quem quiser se aprofundar mais. Um primeiro conceito que deve ficar claro é: o Linux trabalha por padrão com buffered I/O. De forma simplificada, isso significa que as operações de escrita simplesmente copiam os dados para a memória RAM [2], e depois, em background, o kernel vai fazendo a escrita em si (flush) no dispositivo destino. Dado isto, entra o segundo conceito: dirty memory, que é justamente essa informação que está temporariamente na memória RAM, esperando ser escrita em um dispositivo de armazenamento.

Acontece que, quando copiamos muitos dados para uma mídia lenta, há um problema de bufferbloat, em que a fila de I/O requests fica gigantesca. Isso acarreta toda a lentidão, já que outras operações de I/O são também afetadas, além de outros efeitos colaterais. Dentre as alternativas propostas para minimizar este problema, as mais simples envolvem ajustar os parâmetros relacionados à dirty memory do subsistema de Virtual Memory do kernel [3][4]. O objetivo é deixar a fila menor, definindo um threshold mais agressivo para o flush da dirty memory para o dispositivo (o daemon que controla isso é o pdflush, para quem quiser se aprofundar).
1. Procedimentos

Antes de experimentar os ajustes em questão, convém monitorar o seu sistema durante uma simulação, a fim de confirmar o problema. O sintoma mais óbvio é a lentidão, mas se você quiser ir mais a fundo, pode monitorar a quantidade de dirty memory com o seguinte comando:
  watch -n1 grep -e Dirty: /proc/meminfo


Enquanto monitora, copie um arquivo grande, de alguns gigabytes, para um pendrive (não vale aquele pendrive USB 3.0 de última geração, hein?). Observe a dirty memory aumentar assustadoramente, para alguns GBs, até que o pdflush entra em ação e começa a escrever os dados no dispositivo.

Percebeu que, aparentemente, a cópia rapidamente deu-se como concluída, mas na prática ela estava longe de terminar? Daí a importância de não remover o pendrive sem ejetar antes: podem haver muitos dados pendentes de escrita em background, e a operação de ejeção só vai concluir após eles estarem devidamente gravados.

Agora, vamos ao tuning: os parâmetros importantes aqui sãovm.dirty_background_bytes, vm.dirty_background_ratio,vm.dirty_bytes e vm.dirty_ratio. Na documentação do kernel você encontra uma explicação detalhada do que cada parâmetro faz [5], mas pelos nomes já dá para ter uma ideia. Só há um detalhe: os parâmetros com "bytes" e "ratio" são mutuamente exclusivos, ou seja, ajustando um, o outro automaticamente é desabilitado (ficando com valor 0). No meu sistema, os valores default são:
  vm.dirty_background_bytes = 0
  vm.dirty_background_ratio = 20
  vm.dirty_bytes = 0
  vm.dirty_ratio = 50
Perceba que até 50% da memória RAM total pode ser dirty! Vamos então ajustar os parâmetros para uma das recomendações, e ver o que acontece, repetindo a simulação:
  sysctl -w vm.dirty_background_bytes=16777216
  sysctl -w vm.dirty_bytes=50331648
  watch -n1 grep -e Dirty: /proc/meminfo
  (repetir cópia do arquivo)


Bem diferente, não é? Sem contar que agora o indicador de progresso da cópia é mais confiável.

Outra opção, que dá resultados similares mas trabalha com percentuais da memória RAM, ao invés de valores absolutos em bytes, é:
  sysctl -w vm.dirty_background_ratio=5
  sysctl -w vm.dirty_ratio=10

2. Conclusão


Tal situação de bufferbloat é mais usual em desktops, onde é comum realizar a cópia de arquivos grandes para pendrives lentos, mas é também possível de acontecer, com cenários alternativos, em servidores, sendo importante conhecer o problema, a solução, e o que está por trás dela. Claro que os valores sugeridos no tuning são, como disse, recomendações; o ideal para o seu caso pode variar.

O que acho mais interessante em solucionar esses problemas é que, quando queremos ir além do básico, além da receita de bolo, aprendemos muito. Espero que também tenha sido sua percepção, e se quiser ir ainda além, é só explorar as referências.
3. Referências
http://yarchive.net/comp/linux/dirty_limits.html
http://lwn.net/Articles/682582/
http://unix.stackexchange.com/questions/107703/why-is-my-pc-freezing-while-im-copying-a-file-to-a-pendrive/107722#107722
http://askubuntu.com/questions/397249/system-freezes-unresponsive-unusable-when-copying-large-file-to-usb
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
4. Sobre o autor

Dorian Bolivar é Engenheiro de Sistemas especialista em Linux, com mais de 15 anos de experiência na área. Trabalha gerenciando diariamente centenas de servidores Linux. Visite o website:http://www.dorianbolivar.com.

sábado, 17 de setembro de 2016

Como configurar o seu sistema para melhor uso de discos SSD




Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 07 de setembro de 2016

Finalmente, você colocou um disco SSD em seu computador e ele retornou à vida. Mas não se trata apenas de colocar o disco no seu sistema, para obter o melhor rendimento é preciso fazer mais alguns ajustes.
Escolha do sistema de arquivos

A escolha do sistema de arquivos é fundamental. No momento o melhor é escolher o formato ext4. É o mais estável e também o mais usado, e oferece suporte ao comando trim(*)
Opções de montagem

As partições usadas pelo seu sistema são definidas no arquivo/etc/fstab. Na definição das partições localizadas no seu disco SSD adicione as opções discard e noatime. A opção discard permite que o comando trim seja usado, o que aumenta o desempenho e a duração do seu disco SSD. A opção noatime informa ao sistema de arquivos para não registrar o tempo de último acesso aos arquivos, mas apenas a data de modificação. Esta opção reduz o número de gravações no disco e consequentemente aumenta também a sua duração. Considerando-se que qualquer comando que você emitir como ls, find, e outros, alteram esta informação, visto que o arquivo foi acessado, na verdade não representam nenhum impacto sério e você estará ganhando e muito em desempenho e durabilidade de seu equipamento.

Caso você note que alguns programas não estão funcionando bem, você pode modificar o parâmetro noatime para relatime. Este parâmetro faz com que a data de último acesso aos arquivos seja igual ao valor da data da última modificação, e tudo isto é feito na mesma operação de gravação.

No meu sistema, a linha em que é montado o disco SSD está assim:
  UUID=e613456f-3765-4653-b071-971f7b873f95 / ext4 discard,noatime,errors=remount-ro 0 1

Não aloque a partição swap no disco SSD

De forma resumida, quanto menos operações de gravação você tiver no disco SSD maior será a sua durabilidade. Dependendo da capacidade de memória e dos processadores de seu sistema, pode ser que a partição swap seja utilizada muito raramente. É verdade também que se o seu sistema fizer uso mais frequente do swap, você pode ter um bom ganho de desempenho, ao custo de encurtar a vida útil do disco.

Uma alternativa é alocar a partição swap no disco SSD mas desabilitar a hibernação, visto que a processo de hibernação de uma máquina gera um grande número de operações de leitura e gravação.

E ainda outros, instalam o sistema sem a partição swap. Com a quantidade de memória dos sistemas mais modernos, a partição swap tende a cair no esquecimento. Neste exato momento, em meu computador de meia idade, o uso da partição swap é zero. E tem mais, se você não tem uma partição swap o seu sistema não consegue hibernar, visto que este processo utiliza o swap.

(*) O TRIM é um comando que é enviado ao SSD e informa as páginas ou blocos que podem ser marcadas como inválidas. Páginas inválidas são aquelas que armazenam arquivos já apagados pelo usuário. Essas páginas inválidas passarão pelo processo chamado de "coleta de lixo", que todo SSD realiza.

sexta-feira, 22 de julho de 2016

Google disponibiliza livros completos para download


Colaboração: Tiago Eugenio de Melo


O Google colocou no ar o Google Book. Neste sítio, os internautas poderão fazer o download e imprimir na íntegra diversos livros, cujos direitos autorais expiraram, escritos por grandes autores, como Dante, Victor Hugo e William Shakespeare.

A busca pode ser realizada no link http://books.google.com. Para verificar se o livro está disponível por inteiro, basta clicar na opção "full view".

Através deste projeto, o Google disponbilizará clássicos da literatura mundial para um grande contigente de pessoas. O Google informou que a opção não está disponível para obras protegidas por direitos autorais.
Quem são os perdedores, agora que o open-source está ganhando?

Fonte: Notícias Linux

"Eu passei pelo primeiro grau durante os anos 80. Nesse tempo, eu fui ensinado que há ganhadores e perdedores. Minhas crianças aprendem que "Somos todos ESPECIAIS!!!" mas eu rapidamente tiro deles essa noção de abuso em casa. Mate ou seja morto. Coma este hamburger ou sua irmã comerá. Estou brincando, mas minha mentalidade dos anos 80 faz perguntar a mim mesmo: com todo o momento open source (e ele é real), quem está perdendo? Veja, não é possível que todos ganhem o tempo todo juntos. Não é exatamente uma soma com resultado zero, mas num mercado relativamente finito, meu sucesso pode correlacionar com sua falha. Então, quem está perdendo?"

É assim que começa o artigo de Matt Asay, que termina com: "A longo prazo, você pode ver quem eu acho que vai ganhar. É o software livre, e será uma vitória esmagadora."

Artigo completo na fonte:http://weblog.infoworld.com/openresource/archives/2006/08/who_are_the_los.html

Comente:http://www.noticiaslinux.com.br/nl1156735239.html#comentarios

Download gratuito do livro "Linux Dicas e Truques"


Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 19 de julho de 2016

No ano 2000, eu publiquei, pela Editora da Conectiva, o livro Linux: Dicas e Truques.

Este livro está disponível gratuitamente para download. Na época, o livro foi uma compilação de diversas mensagens da Dicas-L, que estava completando o seu terceiro ano de vida. No dia 3 de março de 2016, a Dicas-L completou 19 anos.

Boa leitura!

quinta-feira, 21 de julho de 2016

Fim da era PC: Transformando o seu celular em computador de mesa!



Colaboração: Alessandro de Oliveira Faria


Data de Publicação: 12 de julho de 2016


Os smartphones atuais com hardware poderosos tornam o meu sonho e de muitos NERDs realidade: utilizá-lo como um computador de bolso. Microsoft está neste caminho com o Continuum, mas a tecnologia apresentada neste documento muda o rumo dos PCs e smartphones, pois trata-se de uma ROM open source e independente, que disponibiliza a função avançada de convergência para o Android, o sistema mais popular do mundo.


O mercado dos PCs está em queda e com os smartphones cada vez mais robustos, a tendência é cada vez mais estes aparelhos ocuparem o lugar do computador de mesa. Alinhado nesse conceito de convergência agora está disponível para os celulares Android (inicialmente para o Nexus 5). O projeto é similar às novas tendências como o Continuum da Microsoft e a promessa do Ubuntu Phone que publiquei na Linux Magazine em 2013, que nunca chegou a decolar de maneira mercadológica.


Esta convergência diferente denominada MaruOS tem o objetivo de chegar onde a Canonical não chegou com o Ubuntu Phone, ou seja, transformar o celular em um computador COMPLETO com Linux ao conectar a um monitor HDMI. Mas com alguns extraordinários diferenciais, em vez de inutilizar o telefone assim que plugado ao monitor externo, o telefone opera com o sistema operacional Linux e Android simultaneamente, ativados lado a lado.


Então, seu smartphone será um Android quando estiver utilizando normalmente no dia-a-dia, mas se você plugar o aparelho ao monitor, o mesmo automaticamente passará a rodar um sistema desktop Linux com os aplicativos convencionais. Primeiramente o sistema foi disponibilizado para o Nexus 5, mas a promessa são para todos os smartphones com Lollipop. A versão atual disponibilizada publicamente é o Maru v0.2.3 e quem tiver um Nexus 5 já o pode experimentar seguindo este tutorial.


Ressalto que o projeto encontra-se no estágio Beta, mas o suficiente para entender como será o futuro, bastando conectar o smartphone a um monitor e imediatamente utilizar OpenShot, GIMP e Inkscape e até Blender! Com um desktop Linux funcional e fácil para trabalhar, instalar aplicativos (por enquanto na arquitetura ARM). E não esqueça, o telefone continua funcionando normalmente com o Android para receber chamadas enquanto estiver conectado a um monitor externo com Linux com ambiente gráfico XFCE modificado.


Após plugar o cabo do monitor, o Linux instalado no hardware do Nexus 5 inicia em apenas 5 segundos após identificar um monitor HDMI. Logo a seguir, basta parear mouse e teclado Bluetooth para começar usar seu PC de Bolso.


Veremos a seguir como instalar e configurar o brinquedo no Nexus 5 com MultiROM, ou seja, desta maneira não será necessário perder o sistema operacional atual.
Desbloqueio do aparelho Nexus 5


ATENÇÃO: antes de iniciar deixo claro que o leitor deste post é responsável por qualquer problema que venha a acontecer com o seu aparelho, sendo de sua inteira responsabilidade e risco a utilização das instruções a seguir.


A instalação começa com o desbloqueio do seu equipamento, plugue o cabo USB, habilite o modo desenvolvedor no seu Android, então com os binários adb e fastboot instalados, execute os comandos conforme mencionado a seguir.


Utilize o comando adb para reiniciar o equipamento:
  # adb reboot bootloader


Agora no bootloader, utilize o comando "fastboot devices" para verificar se tudo está funcionando corretamente. Seguidamente use o comando "fastboot oem unlock" para debloquear o equipamento e finalmente o comando "fastboot reboot-bootloader" para reiniciar o sistema.


ATENÇÃO: durante o desbloqueio devemos confirmar o termo no device.
  # fastboot devices
  XXXXXXXXXXXXXXXX     fastboot
  
  # fastboot oem unlock
  ...
  (bootloader) erasing userdata...
  (bootloader) erasing userdata done
  (bootloader) erasing cache...
  (bootloader) erasing cache done
  (bootloader) unlocking...
  (bootloader) Bootloader is unlocked now.
  OKAY [ 90.093s]
  finished. total time: 90.093s
  
  # fastboot reboot-bootloader
Pronto, nesta etapa o seu equipamento está desbloqueado. Agora podemos dar continuidade para a instalação do gerenciador de boot.


Download e instalação do MaruOS

Imagina se você deseja ter mais que um sistema instalado? Android, MaruOS e outros? Para resolver esta situação existe o MultiROM, uma espécie de GRUB para Android e muitas outras funcionalidades. O download para o meu equipamento Nexus 5, efetuei neste link:


http://forum.xda-developers.com/google-nexus-5/orig-development/mod-multirom-v24-t2571011


A seguir, o link para download dos arquivos necessários para um celular com o Android Lollipop 5.1.1:
kernel_kexec_hammerhead_511.zip
multirom-20150529-v32c-hammerhead.zip
MaruOS


Após o download de todos os arquivos, descompacte e copie-os para a pasta SDCARD do seu celular conforme os comandos a seguir:
  # tar -zxvf maruOS.tar.gz 
  maru-v0.2.3-update-hammerhead-340b552a.zip 
  open_gapps-arm-5.1-pico-20160630.zip
  
  # adb push kernel_kexec_hammerhead_511.zip /sdcard/
  # adb push multirom-20150529-v32c-hammerhead.zip /sdcard/
  # adb push open_gapps-arm-5.1-pico-20160630.zip /sdcard/ 
  # adb push maru-v0.2.3-update-hammerhead-340b552a.zip /sdcard/ **
Agora gravaremos a nova imagem gráfica do recovery rebootando o celular e entrando no modo recovery:
  # adb reboot bootloader

Ao reiniciar no modo bootloader, execute o comando fastboot conforme o exemplo abaixo:
  # fastboot flash recovery TWRP_multirom_hammerhead_20150630.img
  target reported max download size of 1073741824 bytes
  sending 'recovery' (14056 KB)...
  OKAY [  0.559s]
  writing 'recovery'...
  OKAY [  1.096s]
  finished. total time: 1.655s

Ao término, selecione com o botão de volume o modo RECOVERY e se tudo estiver funcionando corretamente, veremos uma interface gráfica (similar a imagem abaixo). Para terminar a configuração do MultiROM, devemos selecionar a opção Install, selecionar os arquivos multirom-20150529-v32c-hammerhead.zip e kernel_kexec_hammerhead_511.zipe confirmar a injeção/instalação do mesmo.
Agora novamente no menu inicial do modo recovery, selecione -> Advanced -> MultiROM -> Add ROM. Na opção do tipo de ROM selecione o tipo Android e clique no botão Next, selecione o tipo de ROM .ZIP e localize o arquivo firefox.os.viva.o.linux.zip e confirme a instalação.
Novamente volte ao menu MultiROM do modo RECOVERY e e selecione ListROM-> Selecione o Item maruO.0.2.3 -> Flash ZIP e selecione o arquivo open_gapps-arm-5.1-pico-20160630.zip para instalar o Google Play e outros aplicativos básico da Google.
Para finalizar reinicie o equipamento e aparecera o gerenciador de boot, selecione o novo item e desfrute do Maru OS sem a necessidade de apagar o sistema operacional nativo do seu aparelho. A tela do seu celular será similar a imagem a seguir após reiniciar o aparelho.
A seguir um vídeo com a operação do sistema MaruOS.



Alessandro de Oliveira Faria é Sócio-fundador da empresa OITI TECNOLOGIA fundada em Junho de 1996, empresa especializada em desenvolvimento de soluções com a tecnologia de Reconhecimento Facial, Consultor Biométrico, Experiência em Realidade Aumentada, Visão Computacional (opencv), Neuro-tecnologia, Redes Neurais e Programação multi-nuclear com CPU e GPU, atua na área de tecnologia desde 1986, leva o Linux a sério desde 1998, membro da comunidade Viva O Linux com mais de 50 palestras e 100 artigos publicados, mantenedor da biblioteca open-source de vídeo captura, Embaixador e openSUSE Member.

domingo, 26 de junho de 2016

Você gosta dos jogos de GameCub



Colaboração: Diego Boot

Data de Publicação: 23 de junho de 2016


Fonte: www.dicas-l.com.br

Você gosta dos jogos de GameCube? E do Nintendo Wii? Se você é fã desses videogames e quer ter os jogos no seu computador, o Dolphin é a melhor alternativa. Ele é um emulador feito para rodas os games desses dois consoles. E se você nunca jogou, essa é a oportunidade de conhecer as duas últimas gerações de videogames da Nintendo.

Uma das grandes vantagens de se usar o Dolphin é que ele é um programa de código aberto, ou seja, qualquer pessoa com conhecimentos em programação pode se tornar um desenvolvedor do software, pois ele está aberto a mudanças do público. Isso ajudou o emulador a melhorar suas capacidades gráficas, além de melhorar o áudio e a interface entre os usuários, que ficou mais simples e intuitiva, permitindo que pessoas que nunca usaram emuladores se acostumem com facilidade ao Dolphin.


sexta-feira, 10 de junho de 2016

Extração do áudio de um arquivo de vídeo



Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 10 de junho de 2016

www.dicas-l.com.br


O meu companheiro de caminhadas é um aparelhinho bem simples de música, o iPod Shuffle. Como eu costumo fazer caminhadas diárias de 30 a 60 minutos, eu baixo da Internet os vídeos que me interessam e extraio o aúdio, para gravar no ipod.

Existem várias maneiras de se fazer isto, mas eu gosto muito do comando avconv, pela simplicidade e rapidez:
  avconv -i arquivo_video.mp4 arquivo_audio.mp3
Outra forma:
  mplayer -dumpaudio arquivo_video.mp4 -dumpfile arquivo_audio.mp3
O programa avconv faz parte do pacote libav-tools.

Para instalar em sistemas Debian GNU/Linux e derivados, digite:
  sudo apt-get install libav-tools