terça-feira, 29 de maio de 2012

SOs e Frequência da CPU



... quanto vai custar um SO, em termos de processamento?

A relação entre frequência da CPU e consumo de energia é diretamente proporcional. Isto quer dizer que quanto maior a velocidade do processador, maior a frequência de clock e maior o consumo de energia. Em época de gadgets consumo de energia quer dizer menos tempo de bateria e ... sair a caça de tomadas. Em nosso trabalho do dia-a-dia, uma grande parte do tempo perdemos procurando tomada, pontos rede ou de acesso wireless e outros "engates" para nossos celulares, notebooks e tablets. Assim, economia de bateria tem grande importância.

Alguns sistemas operacionais permitem o escalonamento do clock, ou seja, a variação da velocidade da CPU em tempo real. Isto é interessante quando se deseja economizar bateria, principalmente em celulares ou tablets, embora o custo seja de menor velocidade de processamento. Mas também não queremos ficar com um gadget na mão que seja uma lesma! O que é importante é poder calibrar um fator versus outro.

A maioria dos drivers de CPU permitem a variação da frequência do clock (cpufreq_core) para poder oferecer um controle dinâmico da velocidade de processamento e da diminuição do consumo.

Algumas CPUs modernas já fazem o escalonamento, variando entre diversos valores de frequências e de voltagens de operação sem a necessidade de intervenção do kernel do SO. Isto garante a rapidez de troca entre a frequência alta o suficiente para acomodar as necessidades do usuário e baixa o suficiente para economizar energia.

Nestes casos, o SO pode ser configurado para ser mais agressivo em termos de processamento ou mais econômico em consumo mas sempre dentro dos limites estabelecidos [1, 2].

Nos SOs Linux a interface para este controle é definida no kernel como um driver (.../linux-3.x.x/drivers/cpufreq), enquanto que no FreeBSD [3] o controle é estabelecido por um módulo do kernel (/usr/src/sys/modules/cpufreq).

No Linux, o diretório /sys/devices/system/cpu/cpuX/cpufreq/ onde 'cpuX' é cpu0, cpu1 etc., contém todos os arquivos de configuração de cada CPU no sistema em operação e pode ser alterado, seja manualmente ou por algum software, em tempo real.

Claro que pisar no acelerador requer mais combustível e ... é bom não ultrapassar o limite de velocidade. A não ser que tenha como refrigerar o motor com nitrogênio líquido!

Referências:

[1] Pouwelse, J.; Langendoen, K. e Sips, H. "Energy Priority Scheduling for Variable Voltage Processors", http://www.lartmaker.nl/projects/scaling/ (acesso em: 29/05/2012).

[2] mouw, J. A. K.; Langendoen, K. e Pouwelse, J. "LART Lessons Learned: cpufreq", http://www.lartmaker.nl/projects/scaling/ (acesso em: 29/05/2012).

[3] http://doc.fug.com.br/handbook/kernelconfig-config.html

domingo, 27 de maio de 2012

Linux Mint 13



Sim, são muitos sabores de Linux e, agora, Linux com sabores... 

O universo de distribuições Linux é fascinante. Enquanto a MS fica patinando em seu velho DOS com caras novas (que chamam de "janelas"), as distros Linux são um avanço fantástico no paradigma de sistemas operacionais. It's just more fun!

Desde o início, quando Linus Torvalds lançou a idéia, o SO Linux só cresceu em número de distribuições. Aos que ainda confundem, Linux é o kernel do SO, as distros são SO + customizações (que palavra feia!).  Melhor dizendo, SO + pacotes personalizados de software.

No início tínhamos o Yggdrasil [1], Slackware [2], RedHat [3] e Caldera OpenLinux (originalmente Caldera Network Desktop) lançado por ex-funcionários da Novell e depois absorvida pela SCO. Hoje não tenho nem como começar a enumerar os diversos sabores de Linux. Mas este Linux com sabor, vale a pena comentar.



O Linux Mint versão 13 "Maia" [4] é um sistema operacional com kernel Linux para aqueles amantes do Gnome 2. Ele vem em duas edições, o MATE (para gaúchos) e o Cinamon (para mach... oooops... para nerds) não resisti à piada!

É um sistema gratuito com base no Debian Linux e Ubuntu da Canonical e oferece mais de 30.000 pacotes de software gratuitos. Se diz a versão mais utilizada do SO Linux, depois do Ubuntu.

O Mint MATE é uma distro baseada no ambiente gráfico MATE 1.2 que é uma versão expandida do Gnome2/GTK2 com todas as funcionalidades aperfeiçoadas. O Mint Cinamon é construído sobre o Gnome 3 com uma interface tradicional.

O Cinamon ainda não está totalmente estável e ainda não é compatível com todos os tipos de placas gráficas. Por isso, um sistema a ser usado por conta e risco de cada um. Ou seja, ainda para nerds.

O Linux Mint é uma distribuição de instalação bem fácil e amigável, qualquer usuário não terá problemas para instalá-la e ela já vem com diversos programas de desktop previamente instalados, por default.

Para quem quer um sistema operacional excepcional como o Linux e uma interface limpa e amigável, livre do Unit do Ubuntu e com um sabor de chimarrão com menta, esta é uma boa pedida.

Referências

[1] http://www.ibiblio.org/pub/historic-linux/distributions/yggdrasil/

[2] http://www.slackware-brasil.com.br/web_site/

[3]  http://www.redhat.com/

[4] http://www.linuxmint.com/about.php

sábado, 12 de maio de 2012

Dragonfly BSD


... kernel virtual e Hammer (um poderoso martelo de Thor)

O Dragonfly é um sistema operacional (SO) Unix baseado no kernel BSD tal como o FreeBSD, NetBSD e OpenBSD. A última versão é a 3.0.2 Release 2012Q1. Esta versão vem com muitas novidades no suporte a hardware com multiprocessadores, melhoria no sistema virtual de arquivo HAMMER VFS (agora com time domain multiplexing method) que permite melhor performance e balanceamento durante longas operações de armazenamento. Ainda há suporte a encriptação de disco e mais de 10.000 pacotes de software pré-compilados e fontes para ser compilados na árvore pkgsrc.

A instalação é tranquila e não apresenta muitos problemas. Não é uma instalação gráfica mas não apresenta problemas mesmo para quem o instala pela primeira vez. Naturalmente, o conhecimento de sistemas Unix facilita bastante as coisas. O Dragonfly é um sistema como todo BSD, ou seja, um sistema para servidores. O uso do BSD em desktop é mais tranquilo com o PCBSD. Mas se gostas de escovar bits... este aqui é o cara!

Depois de instalado tu tens um sistema Unix nú e crú... É preciso então passar ao refinamento de configurações e, isto significa editar alguns arquivos do diretório /etc (o rc.conf, por exemplo) uma vez que nem mesmo o mouse está configurado. É bem possível que o usuário prefira seguir os passos do manual [1].

Em primeiro lugar é preciso criar o sistema "pkgsrc" que é igual ao do NetBSD e equivalente ao "ports" do FreeBSD. Para isso, faça o login como root e

# cd /usr
# make pkgsrc-create

E pausa para um café... O problema com estes repositórios é o controle de banda imposto pelos servidores. Pow caras, se querem que o sistema decole, é preciso agilitar o processo de download de pacotes de software, como acontece com muitos repositórios de Linux.

Feito isto verifique a documentação [2], para se certificar de que o sistema está pronto para compilar e instalar software. A partir daí, tudo depende do tipo de servidor que o usuário está configurando. E, se for usar o X este terá que ser baixado como binário ou compilado e instalado manualmente. O mesmo acontece para o Gnome, KDE ou qualquer outro gerenciador de janelas preferido [3].

Como todo BSD, o kernel é um canivete suíço. A configuração do sistema pode ser finamente controlada pelos arquivos de configuração e configuração do próprio kernel [4] o que torna o Dragonfly um respeitável membro da família BSD.

Virtual kernel...

Uma funcionalidade que achei muito boa no Dragonfly é a possibilidade de testar o kernel sem ter que ficar dando boot na máquina. Uma verdadeiramente "elegante solução para depurar o kernel e seus componentes" [5].

O kernel é carregado no nível da camada de software (userland) e pode ser testado e depurado sem interferir no kernel real. A capacidade de carregar o kernel no "userland" permite rodar um sistema virtual descartando a necessidade de constantes reboots entre as compilações.



Referências:

[1] http://www.dragonflybsd.org/docs/newhandbook/

[2] http://www.dragonflybsd.org/docs/howtos/HowToPkgsrc/

[3] http://www.dragonflybsd.org/docs/newhandbook/X/

[4] http://www.dragonflybsd.org/docs/newhandbook/Configuration/

[5] http://www.dragonflybsd.org/docs/newhandbook/vkernel/

terça-feira, 8 de maio de 2012

To BSD or not Be




... ou seja, "que BSD vou instalar agora?"


Não é só BSD, mas me pediram e, então, resolvi dedicar este post a uma análise dos SOs Unix livres mais usados e mais indicados para cada tipo de atividade.

Discutir as distribuições de sistemas operacionais é, hoje em dia, uma tarefa complicada. Primeiro porque existe mais de uma centena de tipos de UnixTM e unix-like que são gratuitos e de código aberto. E, segundo, porque cada distribuição está criando especialidades dentro de cada área de atuação profissional (vide meu post sobre o Fedora Spins).

Se deixarmos de lado os SOs próprios para nerds, tipo GNU-Hurd, Inferno, Haiku (ex-BeOS) e os unix-like como Minix e Linux, resta os SOs de kernel BSD [1] e Sistem V. É bom esclarecer que o o kernel Linux, não é um Unix tradicional, embora tenha raízes bem fincadas naquele sistema. Já o kernel BSD é um Unix totalmente POSIX compliant.

Figura 1 História do Unix (Wikipedia [http://en.wikipedia.org/wiki/File:Unix_history-simple.svg])

Na figura 1, pode-se ver os principais sistemas Unix e Unix-like existentes hoje e, como o interesse deste post está voltado para os sistemas Unix free e open source, nos limitamos aos descendentes do BSD e do Sistem V. Os descendentes do BSD a que me refiro são o FreeBSD, o NetBSD, o OpenBSD e o Dragonfly e o descendente do System V (Solaris) é o chamado OpenSolaris (ex-Sun Microsystem, atualmente da Oracle).

O que torna as distribuiões BSD atraentes é, principalmente a sua licença. A licença BSD tem pouquíssimas restrições quando comparada a outras licenças como a GPL (Gnu Public License) ou outras restrições de copyright [2].

As distribuições BSD se diferenciam das distribuições Linux por respeitarem o padrão Unix desenvolvido pela Berckeley Sistem Distribution e atenderem às exigências POSIX. POSIX vem de Portable Operating System Interface e é uma norma definida pelo IEEE organizada pelo grupo 1003 (IEEE 1003) de acordo com as normas ISO/IEC 9945 [3].

Outra característica destes sistemas (FreeBSD, NetBSD e OpenBSD) é o quesito segurança pois são sistemas construídos com foco em redes de computadores e em segurança de rede além, é claro, da preocupação com a estabilidade do núcleo do SO.

Existe muita discussão sobre qual BSD é mais seguro mas todos estão, basicamente, no mesmo nível de segurança. Dependendo da instalação —  que no OpenBSD resulta mais segura por default — é o usuário que acaba definindo o nível de segurança de um sistema. Outro fato é que sistemas BSD tendem a ser instalados por administradores de rede mais experientes que configuram os serviços de acordo com regras mais rígidas. É claro que se deve levar em consideração que o arsenal de ferramentas de segurança destes sistemas é bem grande.

O FreeBSD é, de longe, o sistema que possui maior quantidade de aplicativos e um sistema de instalação com repositórios bem atualizados. O sistema usa o ports (man 7 ports) como repositório de software e que permite a instalação de software pré-compilado ou permite fazer o download dos códigos fonte dos aplicativos e compilá-los localmente, administrando todas as dependências automaticamente.

O OpenBSD é bastante seguro e o mais tradicional dos BSD e o NetBSD é um sistema com um kernel bem "enxuto" totalmente voltado para aplicativos de rede e de roteamento sendo ideal para uso como sistemas de roteadores.

Pode-se dizer que sistemas BSD são sistemas ideais para servidores mas nada impede que se os use como desktop ou mesmo no laptop. Existem algumas versões específicas para estação de trabalho como, por exemplo, o PC-BSD. Usar estes sistemas diretamente requer um bom conhecimento e paciência para configurar e recompilar os aplicativos para que sejam otimizados para cada hardware.

O DragonflyBSD é um kernel BSD customizado que é totalmente open source e gratuito. Este está na minha lista de testes e ainda não tive tempo de analisar com mais detalhes. O que chama a atenção é o sistema de arquivos Hammer com acesso e recuperação do histórico e espelhamento (diferente do modelo do ZFS). Diz-se que o kernel tem um mecanismo de sincronização eficiente e é bem orientado ao paralelismo o que é uma boa funcionalidade para os processadores "multicore" de hoje. (este está na minha lista para um próximo assunto aqui no blog)

Outros sistemas operacionais unix tais como o Oracle Solaris 11, derivado do Sun Solaris 10 possui a versão free e open como o OpenSolaris que roda em arquitetura x86 (veja meu post sobre o Solaris 11). O atrativo deste sistema operacional é a interação com a JVM e o ambiente Java totalmente compativel com a versão da Oracle (antiga Sun Microsystems). O desenvolvedor Java deve considerar uma olhadinha no sistema da Oracle.

Segue, aos interessados, o link para os sites oficiais:

Dragonfly - http://www.dragonflybsd.org/

FreeBSD - http://www.freebsd.org/

NetBSD - http://www.netbsd.org/

OpenBSD - http://www.openbsd.org/

PCBSD - http://www.pcbsd.org/

Oracle OpenSolaris - http://hub.opensolaris.org/bin/view/Main/



Referências:

[1] http://en.wikipedia.org/wiki/Berkeley_Software_Distribution

[2] http://en.wikipedia.org/wiki/BSD_licenses

[3] http://pt.wikipedia.org/wiki/POSIX

Quer saber qual melhor distibuição Linux para você? Experimente este link:

http://www.techradar.com/news/software/operating-systems/10-best-linux-distros-704584