Diferença de desempenho entre distribuições / pacotes de linux compilados e binários

12

Eu pesquisei muito na internet e não consegui encontrar uma resposta exata.

Existem distros como o Gentoo (ou FreeBSD) que não vem com binários, mas apenas com código-fonte para pacotes (portas).

A maioria das distros usa backages binários (debian, etc.).

Primeira pergunta: Quanto aumento de velocidade posso esperar do pacote compilado? Quanto aumento de velocidade posso obter de pacotes do mundo real como o apache ou o mysql? ou seja, consultas por segundo?

Segunda pergunta: O pacote binário significa que ele não usa nenhuma instrução de CPU que foi introduzida após o primeiro processador AMD de 64 bits? Com os pacotes de 32 bits, isso significa que o pacote será executado em 386 e basicamente não usa a maioria das instruções modernas da CPU?

Informação adicional:

  • Não estou falando de desktop, mas de ambiente de servidor.
  • Eu não me importo com tempo de compilação
  • Eu tenho mais servidores, por isso, aumento de velocidade superior a 15% vale para usar pacotes de código-fonte
  • Por favor, não há flamewars.
por jozko 03.11.2013 / 03:11

4 respostas

6

A diferença de desempenho será em quase todos os casos mínima e não vale a pena. Boas razões para usar distribuições de código fonte (ao mesmo tempo em que roda seus próprios pacotes binários, como o sistema bindist do gentoo permite) incluem:

  • Implantando seus próprios patches personalizados
  • Personalizando seu kernel facilmente
  • Empacotando suas próprias atualizações

Se você não estiver fazendo nada disso, não precisará de uma distribuição de origem. Para uso pessoal, são muito convenientes porque permitem que você atualize as coisas de forma incremental à vontade, sem se preocupar muito com a compatibilidade binária, o que não é uma preocupação frequente em um ambiente corporativo.

Vale a pena notar que você também pode fazer essas coisas com uma distribuição binária, fazendo seus próprios pacotes RPM ou qualquer outra coisa. A sobrecarga de gerenciamento é semelhante.

Você basicamente não verá um aumento de velocidade de 15% compilando a partir da fonte. Eu odiaria estimar até 5% em qualquer caso razoável. Compilando a partir da fonte você recebe algumas coisas:

  • Você pode usar sua versão de compilador preferida
  • Você pode direcionar o compilador para gerar instruções de extensões ISA não usadas em pacotes de distribuição binários, como AESNI e AVX

No entanto, o compilador muito raramente os gera de qualquer maneira, e a economia geral de usá-los é geralmente muito minúscula quando o desempenho do aplicativo é considerado como um todo. Coisas como acessos de RAM (e latência) e latência de disco e dispositivo são fatores muito maiores, e você deve realmente começar por aí.

Aplicativos que podem se beneficiar de uma compilação personalizada que só será executada em um Intel i7 ou i5 relativamente recente incluem aqueles que fazem um monte de matemática vetorial e que fazem um monte de criptografia AES e descriptografia, ou exigem muitos números aleatórios. Se você quiser usar o Intel DRBG, também é necessário fazer isso.

Se nada disso se aplicar a você, você ficará bastante satisfeito com as distribuições baseadas em debian ou red hat por aí, e terá muito menos overhead de manutenção.

    
por 03.11.2013 / 05:10
10

Resposta curta ... Muitos aplicativos sensíveis em larga escala e velocidade / latência são executados em distribuições padrão do Linux. Red Hat, CentOS, Debian, Ubuntu ... Todos eles funcionam bem na maioria dos casos. A maioria dos ganhos vem do ajuste de aplicativos, otimizações e infraestrutura padrão do kernel e do sistema operacional.

O Gentoo pode oferecer algumas otimizações, mas abre a porta para mais problemas de gerenciamento, redução do mindshare, diminuição do suporte a fornecedores e drivers, problemas de estabilidade, ridículo e potenciais preocupações com segurança.

Eu gerenciei servidores baseados no Gentoo em um ambiente de negociação financeira de alta frequência. Apesar de alguns benefícios com o desempenho do Gentoo, ainda me mudei para o Red Hat e o CentOS. As vantagens do Gentoo no papel foram facilmente superadas por uma seleção de hardware mais inteligente, melhor suporte à integração fabricante / hardware do servidor, patches mais inteligentes por engenheiros da Red Hat e tecnologias mais esotéricas como o desvio do kernel ...

Se você estiver em um ponto em que a eficiência das pilhas de aplicativos populares (LAMP) é um problema, certifique-se de ter otimizado o hardware do servidor (tipo de CPU, layout RAM), infraestrutura de rede, sistema de monitoramento e poder identificar gargalos do sistema antes de seguir esse caminho.

Você está atingindo uma limitação de desempenho agora ?

    
por 03.11.2013 / 04:23
4

Depende do que você quer no seu sistema, e realmente existem três escolas de pensamento aqui (e isso é verdade para o hardware e o software)

Em primeiro lugar, o mainstream, tanto quanto a maioria das pessoas em SF ir - você quer algo que você sabe vai trabalhar, você quer suporte e você quer agora . Neste caso, indo com sistemas baseados em redhat (RHEL oferece excelente suporte, e centos é uma reconstrução da comunidade da distribuição RHEL bem testada). Você, porém, não receberá o mais recente e melhor. Em muitos casos, isso também é verdade para o hardware.

O segundo é o ponto de vista do 'meio da estrada', que é o meio termo - indo com algo como o Ubuntu. Você quer novos pacotes (à custa de uma sólida estabilidade sólida), você quer um instalador e coisas legais .

Em alguns casos, as pessoas têm problemas, mas você tem pacotes mais novos e as coisas são razoavelmente testadas . Embora haja muito ódio pelo Ubuntu aqui, é um bom compromisso entre facilidade de configuração e pacotes razoavelmente novos. O Debian provavelmente é uma escolha um pouco mais conservadora. Hoje em dia, você pode até configurar o Ubuntu com um kernel de baixa latência pronto para uso. Eu sinto que o Ubuntu e o Debian funcionam para mim, mas ymmv. Um monte de lugares que implantam um lote de servidores como o facebook e o google, optam por esta opção.

Finalmente, há distribuições baseadas em fontes. A configuração inicial na maioria dos casos é uma dor total na parte traseira. Você cometer um erro ao configurar seu kernel? Opa, passe algumas horas recompilando. Você não consegue um instalador - isso é para o n00bs. Geralmente, você obtém aplicativos de ponta e a opção de compilá-los conforme necessário (o que inclui a possibilidade de escolher otimizações para velocidade ou uso de memória, por exemplo) e uma versão sem interrupção. Se você tem necessidades esotéricas muito específicas, o gentoo é ótimo. Se você precisar implantar algumas dezenas de sistemas e quiser automatizá-lo ... boa sorte. Distribuições baseadas em fontes simplesmente não escalam também. Você está obtendo muita flexibilidade, * alguma ** velocidade extra, mas não capacidade de manutenção no mesmo nível de um IMO de distribuição baseado em pacote. Você não provavelmente terá 15% de velocidade extra, e você provavelmente acabará perdendo tempo tentando ajustar a sinalização de compilação para o seu hardware, e se você estragar algo, gastando tempo trabalhando exatamente falhou.

Os BSDs são uma família separada dos sistemas operacionais. Algumas pessoas juram por eles (pelo menos uma sala de comunicação regular é um usuário freebsd), e diferentes BSDs têm diferentes focos - por exemplo, o openbsd é obcecado por segurança e o freebsd é o 'mainstream'. Eles podem não ter, em alguns casos, o mesmo tipo de suporte de hardware que o Linux, mas isso depende de alguns fatores.

    
por 03.11.2013 / 09:10
4

Todos os pontos feitos são obviamente corretos. Eu gostaria apenas de levar alguns problemas com a ideia de que 5% -15% de aumento de desempenho é inatingível, especialmente com as versões modernas do GCC, isso realmente depende da arquitetura da CPU e da proximidade da linha de base usada como destino para as distribuições binárias. GCCs -march = vontade nativa, além de usar as extensões ISA, otimizar também os tamanhos de cache / linha L1 e L2. O código alinhado corretamente (para o seu CPU) pode ser muito mais rápido, especialmente quando o -flto também é usado, de modo que o compilador saiba tudo o que precisa levar em conta. [alguns pacotes estão atualmente quebrados com o LTO, infelizmente]

Além disso, a compilação de pacotes selecionados com -Ofast, além de march = native e LTO, pode fazer uma diferença significativa.

No futuro, se a infraestrutura de grafite do GCC estabilizar, isso terá potencial para ganhos ainda maiores.

    
por 11.06.2015 / 12:37