Phoronix publicou uma comparação de 9 sistemas operacionais. Os três mais rápidos são:
- Limpar Linux 32310
- CentOS Stream (enquanto o rolamento Manjaro é o penúltimo)
- Estação de Trabalho Fedora 31
Quais são as razões básicas para tal diferença, especialmente, entre o CentOS e o Manjaro? Eles enviam kernels diferentes? Os pacotes do CentOS usam mais sinalizadores de otimização? Eles usam diferentes filas ou governadores de E/S por padrão?
Aqui estão os fatores que eu posso pensar, do topo da minha cabeça:
No caso do Clear Linux, eles se orgulham de:
Usar o conjunto completo de instruções que a CPU pode oferecer tem um impacto significativo.
Para comparação, Arch Linux (e Manjaro) envia um kernel, bibliotecas e executáveis compilados com GCC para uma CPU x86 genérica de 64 bits (
-march=x86-64 -mtune=generic
). Isso oferece um bom desempenho, mas não tão bom quanto os executáveis compilados especificamente para a CPU em que está sendo executado.Usar a ferramenta elfx86exts
/usr/bin/ls
no Arch Linux mostra quais instruções de CPU são necessárias, no mínimo:Eu não tive a oportunidade de tentar o mesmo no Clear Linux, mas suponho que uma lista mais longa de instruções aparecerá.
Em resumo, corrigir o kernel e ajustar a configuração do kernel dá um bom resultado, mas o mais importante, o suporte às instruções de CPU disponíveis faz uma grande diferença.
O ganho de desempenho dos sinalizadores de compilação ajustados à mão é superestimado. E o custo não é trivial (se você compilou uma configuração sob medida para sua máquina, eu uma diferente para a minha, quaisquer bugs que você encontrar serão apenas seus, é provável que eu tenha meu próprio conjunto privado, por exemplo).
Pegue uma cópia de "Escrevendo programas eficientes" da Bentley (infelizmente esgotado há muito tempo) ou seu "Programming Pearls" (2ª edição). Os ganhos reais de desempenho são muito mais difíceis de obter e são ordens de magnitude maiores.