O poder da colaboração

“Eu trabalho sozinho em casa. Sempre trabalhei. Foi assim que iniciei o desenvolvimento do Linux. Não o iniciei como um projeto colaborativo, mas sim como um entre vários projetos que tinha feito na época. Em parte, porque eu precisava ver o resultado final, mas, principalmente, porque eu apenas gostava de programar”.

Assim Linus Torvalds descreve o início do desenvolvimento de um software (mais especificamente, o núcleo de um sistema operacional) lançado em 1991 e que, atualmente, está em dois terços de todos os servidores da Internet; nos 500 maiores supercomputadores do mundo; em 75% dos smartphones (o Android é baseado no Linux); nos sistemas de controle de tráfego aéreo e em inúmeros equipamentos médicos. O Grande Colisor de Hádrons e o foguete Falcon 9, da SpaceX, usam o Linux em seus sistemas de controle. Também é possível que ele esteja na sua Smart TV, no seu roteador de Internet e, futuramente, na sua geladeira e no seu carro autônomo.

Um software criado por um jovem finlandês hoje influencia mais as nossas vidas do que qualquer outro, desafiando empresas como a Microsoft e Apple e sendo fundamental para os negócios de outras gigantes como o Facebook, Google e Amazon.

São vários os fatores que levaram o Linux ao sucesso, assim como outros softwares livres/código aberto, mas os principais, sem dúvida, se resumem à colaboração. De acordo com um relatório apresentado em 2017 pela Linux Foundation, uma organização sem fins lucrativos criada para fomentar o crescimento do Linux, desde 2005, 15.637 desenvolvedores de mais de 1.400 empresas contribuíram para o Linux. Apenas em 2016, foram mais de 4.300 desenvolvedores.

Nas organizações, isso não é uma novidade. Uma cultura de colaboração resulta em inovação, melhores produtos, maior produtividade e capacidade de agir rapidamente. Especialmente no setor de tecnologia da informação, as metodologias mais recentes de desenvolvimento e manutenção de softwares priorizam o trabalho colaborativo. Não à toa, as empresas emergentes (startups) criam espaços de trabalho que encorajam esse comportamento.

A tecnologia é fundamental para conseguirmos realizar a conexão entre os colaboradores e aprimorarmos a comunicação em grande escala. De acordo com um porta-voz do Slack, uma plataforma de colaboração que atualmente supera os 8 milhões de usuários diários, “estamos nos estágios iniciais de uma transformação de 100 anos sobre como as pessoas vão trabalhar e se comunicar”. O próprio Linus Torvalds enxergou a necessidade de uma nova ferramenta para organizar melhor as contribuições que são feitas para o Linux e criou um sistema de controle que se tornou o padrão de fato para o desenvolvimento colaborativo de software.

Embora pesquisas recentes mostrem que as pessoas são mais produtivas quando trabalham sozinhas, a criação e desenvolvimento de novas ideias é cada vez mais um processo colaborativo. A ciência hoje se tornou muito complexa e especializada para que uma única pessoa consiga avanços significativos. O próximo passo da evolução do nosso conhecimento não depende mais de alguns poucos cérebros privilegiados, mas de como conectamos eficientemente a maior quantidade de cérebros hiper-especializados na pesquisa e desenvolvimento. O Linux é a prova disso.

Continuar lendo


Utilização de CPU em sistemas Linux multi-thread

O Hyper-threading (HT) é uma tecnologia da Intel introduzida nos processadores Xeon em 2002 que permite que um núcleo do processador execute mais de uma thread de uma única vez.

O Hyper-threading simula dois processadores lógicos em um único núcleo de processador físico. Recursos do processador físico como cache de memória, unidade lógica e aritmética, barramentos, são compartilhados entre os processadores lógicos. Naturalmente, os processadores lógicos competem por estes recursos e ficam aguardando se as unidades desejadas já estiverem sendo usadas.

Apesar de simular dois processadores lógicos, o Hyper-threading não oferece o dobro de desempenho como um núcleo físico. Segundo a Intel, o aumento de desempenho é de até 30%, dependendo da configuração do sistema. Os ganhos são mais expressivos em ambientes multitarefa.

O kernel Linux enxerga o processador lógico, correspondente a thread adicional do Hyper-threading, como um núcleo tradicional. Por exemplo, um processador com 6 núcleos e Hyper-threading habilitado totaliza 12 núcleos.

O problema é que as ferramentas padrões de monitoramento das distribuições Linux (top, mpstat, vmstat, etc) consideram que todos os processadores têm o mesmo desempenho e não refletem os efeitos colaterais do compartilhamento de recursos do Hyper-threading.

Supondo que 6 processos single-thread estejam em execução neste sistema, considerando que cada um utilize 100% de um núcleo do processador, as ferramentas de monitoramento irão mostrar o total de utilização de processamento em 50%. Entretanto, como sabemos que as threads não oferecem desempenho similar aos dos núcleos, este percentual está incorreto.

Não há uma maneira simples de resolver este problema. Outros sistemas operacionais, como o AIX, calcula o percentual total fazendo aproximações com base no desempenho estimado de cada thread. Especificamente no Linux é importante não tratar os valores de processamento de forma isolada quando estiver realizando o monitoramento e estabelecer um threshold para o percentual total abaixo de 70%.

Referências:

Continuar lendo


RDO: Distribuição RPM do OpenStack

OpenStack é um projeto Open Source para construir e gerenciar nuvens públicas ou privadas no modelo conhecido como infrastructure-as-a-service (IaaS).

Tentando traduzir para quem não está acostumado com o vocabulário da computação em nuvem, pode-se dizer que o OpenStack fornece os componentes de software para disponibilizarmos serviços semelhantes aos principais serviços da Amazon AWS (EC2, S3, RDS, dentre outros), tanto para fornecê-los para terceiros (nuvem pública), como para uso interno (nuvem privada).

Continuar lendo


Atualização dinâmica do kernel Linux

É comum administradores Linux se vangloriarem da estabilidade de seus servidores dizendo que eles não foram reiniciados nos últimos anos. O uptime do sistema é uma espécie de medalha conseguida a duras penas na guerra santa entre os sistemas operacionais da Microsoft e o Linux.

Enquanto os sistemas operacionais da Microsoft carregam o fardo do seu passado sombrio de instabilidade, o Linux mantém fama oposta. Mas até que ponto não reiniciar o sistema por um longo período de tempo é algo a ser comemorado?

Se por um lado isto demonstra algumas virtudes do sistema operacional, por outro revela que o administrador de sistemas não está preocupado com a segurança de seus servidores. Falhas são encontradas com alguma frequência no kernel Linux, e uma atualização neste componente exige a reinicialização do sistema.

Continuar lendo


Compactação de memória com o zswap

A memória swap é um elemento importante do gerenciamento de memória no Linux, mas sua utilização, quando notada, geralmente é acompanhada de uma penalidade considerável no desempenho, e por vezes é necessário reiniciar todo o sistema. Por esse e outros motivos, alguns administradores de sistemas não ortodoxos questionam sobre a real necessidade de um dispositivo swap.

Poucas alternativas de configuração são populares: desabilitar totalmente o swap e deixar que o kernel sacrifique alguns processos em uma eventual falta de memória (OOM Killer), ou simplesmente utilizar um disco mais rápido para o dispositivo de swap, como, por exemplo, discos SSD.

Agora disponível no Red Hat Enterprise Linux 7 (e clones), o zswap aparece como uma alternativa sensata e econômica que promete dar novo estímulo ao uso da memória swap.

Continuar lendo