“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
fevereiro 26, 2018 abril 2, 2018 Duda Deixe um comentário Linux
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:
https://ardentperf.com/2016/07/01/understanding-cpu-on-aix-power-smt-systems/
https://pt.wikipedia.org/wiki/Hyper-threading
Continuar lendo
RDO: Distribuição RPM do OpenStack
março 31, 2016 março 31, 2016 Duda 1 Comentário Cloud, Linux, Open Source
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
fevereiro 13, 2015 março 1, 2016 Duda Deixe um comentário Linux, Open Source, Sistemas Operacionais
É 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
janeiro 5, 2015 janeiro 6, 2015 Duda 1 Comentário Linux, Open Source, Sistemas Operacionais
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.