Quanto a escolha do SO importa para o desempenho do código de computação científica?

8

É comum dizer que o Linux é mais rápido e por boas razões. Mas, como declarado no título, quanto a escolha do SO importa para o desempenho do código de computação científica? Para algo em que o sistema operacional está mais diretamente envolvido (como jogar jogos ou renderização de vídeo), com certeza pode haver uma diferença. Mas se eu executo alguns códigos no MATLAB, resolvo PDEs em Julia ou faço álgebra linear em uma GPU usando CUDA: existe realmente uma diferença mensurável de desempenho entre Windows, MacOS e Linux?

Gostaria de saber se alguém realizou benchmarks para ver se existe essa diferença. Talvez existam diferenças ao usar algum software como o MATLAB devido a diferenças nos compiladores que eles usam? Ou talvez os drivers CUDA sejam notavelmente mais rápidos para um sistema operacional do que para o outro? Ou os sistemas operacionais às vezes interferem muito como o problema WDDM CUDA ?

Nota: Sei que existem outros motivos para escolher um sistema operacional que está além do escopo desta pergunta. Estou pensando especificamente sobre desempenho.

Chris Rackauckas
fonte
6
As diferenças de desempenho entre os sistemas operacionais geralmente estão no agendamento do processo, no desempenho do disco e da rede (as coisas que um kernel do sistema operacional trataria). Como o código de computação científica é tipicamente vinculado à CPU ou à memória, provavelmente faz apenas uma pequena diferença. Para CUDA e gráficos, também seria uma questão de quanto esforço o fornecedor coloca em seus drivers para cada sistema operacional, mas para código vinculado à computação provavelmente também não importaria muito.
Kirill
É o que suponho que seja o caso, mas estou me perguntando se alguém fez alguns experimentos para garantir que esse seja o caso. Posso configurar um Windows / MacOS / Linux de inicialização tripla e comparar os mesmos scripts para verificar se é esse o caso. Mas se alguém com uma inicialização múltipla já fez isso antes, talvez não seja necessário investir esse tempo.
Chris Rackauckas
2
Expandindo o que o @Kirill mencionou, diferentes sistemas operacionais podem ter granularidade de controle diferente para gerenciar, digamos, prioridade do processo ou nós NUMA (por exemplo, controlar a memória e a afinidade da CPU), que por sua vez podem afetar o desempenho do aplicativo.
Njuffa 29/07
Enquanto você esclareceu que outros motivos para a escolha do SO devem ser evitados - o que é de alguma maneira compreensível -, você deve permitir a estabilidade do SO como resposta. Se o OS1 cai após 20 horas a 99% da computação e todos os cálculos têm de ser repetido, você pode considerá-lo menos eficaz do que um pouco mais lento, mas compuation estável no OS 2.
Jan Hackenberg

Respostas:

2

Em princípio, deve haver pouca diferença, pois os kits de ferramentas subjacentes geralmente são semelhantes, se não os mesmos: bibliotecas, compiladores (e hardware). Na prática, pode haver melhorias ao usar nós 'thin'. Isso não é uma GUI, nenhum e-mail sendo executado em segundo plano ou qualquer um dos muitos processos que um sistema operacional pode facilitar a experiência do usuário. Pode ser mais fácil configurar um 'servidor' no linux diretamente de uma distribuição padrão que pode resultar em uma máquina muito mais enxuta para executar um código intensivo de ponto flutuante. Mesmo assim, as vantagens não seriam muito visíveis desde que não houvesse atividade do usuário além do código em execução.

user21387
fonte
2

Lembro-me de ler estatísticas de dois ou três anos atrás sobre a distribuição de sistemas operacionais na Lista dos 500 computadores mais rápidos do mundo. O número do computador em execução baseado em Linux / unix era 498, Windows 2 e nenhum MacOS. Infelizmente, não consegui acessar as estatísticas novamente. O artigo SuperComputer da Wikipedia apenas declara:

"Embora a maioria dos supercomputadores modernos use o sistema operacional Linux, cada fabricante possui seu próprio derivado específico do Linux e não existe um padrão no setor, em parte devido ao fato de que as diferenças nas arquiteturas de hardware exigem alterações para otimizar o sistema operacional a cada projeto de hardware" .

Mesmo que este artigo não forneça os números da distribuição, ele fornece pelo menos uma tendência clara para os computadores baseados em Linux. Em um campo em que todo o desempenho conta (e o dinheiro necessário para adaptar o sistema às especificações do supercomputador provavelmente não o faz, então não presumo que a natureza do código aberto seja o principal benefício aqui).

Em uma estação de trabalho bastante normal, o Linux também tende a ter um melhor gerenciamento de recursos, por exemplo, menos uso de memória e mais estável. No entanto, esta é uma experiência pessoal minha sem estatísticas e não deve ser generalizada sem confirmação (Win 7 x Ubuntu 14.04).

Jan Hackenberg
fonte