Kernel Linux ganhará mais desempenho em breve |
Quando o assunto é desempenho, Linux é o melhor sistema operacional. E antes que surjam fanboys me chamando de fanboy, Linux se torna a base de referencia quando algum projeto ou empresa quer ou precisa analisar o real desempenho de outros sistemas operacionais. No History do site de DragonflyBSD é descrito que de uma perspectiva de desempenho, o único competidor real do DragonflyBSD é o Linux. Já no meu artigo 3 sistemas operacionais que não são escritos na linguagem C, o sistema operacional JX que é desenvolvido em Java, analisou o seu desempenho tendo Linux como comparativo. Brendan Gregg, um dos mestres na arte de performance e que escreveu algoritmos que melhoraram o desempenho do Solaris, descreve que, out of the box, Linux é mais rápido.
Comparando o desempenho do JX vs Linux |
AQUI VAI UMA CONSIDERAÇÃO MUITO IMPORTANTE
A análise relacionada a performance é algo que oscila muito. Brendan Gregg mesmo ressalva que o desempenho de um sistema operacional depende do workload e que essas diferenças podem oscilar entre 5% á 5 vezes mais. Através de análises e configurações, Brendan conseguiu colocar o SmartOS (fork do Solaris) para ter melhor desempenho que o Linux e conseguiu também o mesmo feito ao contrário.
Em uma análise de jogos por exemplo, por várias vezes no passado eu mencionei que, mesmo que o Windows não possuísse o desempenho e qualidade tão bom quanto a do Linux, seu desempenho em jogos era muito melhor devido o emprego do DirectX. Eu ainda mantenho essa mesma afirmação se compararmos DirectX vs OpenGL. Porém, com o surgimento do Vulkan, esse quadro tem mudado bastante; a diferença de desempenho entre Windows+DirectX vs Linux+vulkan é bem baixa em favor do Windows e depois do surgimento do DXVK (DiretcX to Vulkan) que favorece muito os usuários de Linux rodar jogos do Windows sem a necessidade de ports, muitos dos desenvolvedores já mostraram que é possível rodar os jogos do Windows no Linux com o desempenho bem melhor do que no próprio Windows.
Se o DXVK já apresenta melhor desempenho no Linux do que no próprio Windows, a tendencia natural é ser ainda melhor uma vez que a própria Microsoft disponibilizou uma versão de DirectX para Linux e a NVidia também disponibilizou um driver open-source para Linux. A própria Apple melhorou o desempenho do MacOSX Ventura para jogos através do framework MetalFX.
Esclarecido os detalhes sobre desempenho, agora vamos a o que importa neste artigo. No dia 21 de Junho foi publicado uma série de patches que irão melhorar ainda mais o desempenho do kernel Linux. Esses patches fazem exploram o recurso CC_OPTIMIZE_FOR_PERFORMANCE_O3, ou simplesmente -O3. O -O3 vai estar desntro do arquivo Kconfig ou podendo compilar o kernel Linux com a opção make KCFLAGS=-O3.
Não necessariamente se trata de um novo recurso, as opções de otimização já estão presentes nos compiladores GCC e LLVM/Clang há algum tempo. Como pode ser conferido nas imagens abaixo, eu já o utilizo na compilação do bc do Gavin Howard; pode ser conferido no GCC digitanto gcc --help=optimizers e na manpage do LLVM/Clang (man 1 clang em Code Generation Options)
O kernel Linux já utiliza tal recurso, porém a opção -O2 por padrão e no meu artigo Redução do kernel Linux e do filesystem para IoT é apresentado a opção -Os para a otimização de tamanho (optimize for size, uma das opções que podemos escolher). O LLVM ainda apresenta a opção -O4 que é bem parecido com o -O3 e nas duas imagens abaixo eu mostro que compilei o bc com esta opção.
Configurando o bc de Gavin Howard com a opção -O4 |
-O4 durante o processo de compilação do bc |
Por volta de 2019, já haviam tentado implementar a otimização -O3 no kernel Linux, mas havia sido rejeitado por Linus Torvalds devido o código que havia sido enviado não ser confiável o suficiente. Hoje, depois de passarem por revisão e melhorias, tais patches começam a ser aceitos e apesar de ainda estarem em estágio beta, o site Phoronix realizou um benchmark que mostram serem promissores. Vamos torcer
CONCLUSÃO
É possível melhorar ainda mais o desempenho em todo o sistema operacional Linux, e não somente em seu kernel. Particularmente, eu tenho uma ideia do desenvolvimento de uma distribuição que tem como um dos princípios melhorar ainda o desempenho de todo o sistema operacional (não com o mesmo argumento de muitas distribuições surgem "essa é uma distribuição estável, segura e com alto desempenho" mas que na prática não oferece nada demais). Essa não seria sua unica característica, mas um de seus princípios. Quem sabe no futuro? Pode ser que até lá alguém já faça isso no meu lugar, pessoas podem acabar tendo a mesma ideia mesmo não sendo expressadas. Se até lá alguém fizer me poupará muito tempo.
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.