Gostaria de fazer uma pergunta sobre o teste de uma simulação grande de CAE no mesmo computador nas duas situações a seguir.
- Sistema Ubuntu puro
- Sistema Ubuntu no Windows 10 (WSL)
As velocidades de cálculo nos dois casos são quase as mesmas ou são diferentes?
Respostas:
O seu software de simulação provavelmente está ligado à CPU ou à memória . Para essas cargas de trabalho, não seria diferente ver a diferença significativa entre executar o código em "bare metal" ou dentro da WSL (ou qualquer outra camada de compatibilidade ou VM que use execução nativa), pois, em ambos os casos, o sistema operacional está apenas aguardando enquanto o código de simulação é executado diretamente na CPU.
No entanto, também é possível que sua simulação seja pelo menos parcialmente ligada à E / S e é aí que podem surgir diferenças. Aparentemente, o WSL (atualmente) possui uma camada de interface do sistema de arquivos bastante lenta que pode diminuir significativamente a E / S do disco. * Dito isso, enquanto a E / S do disco pode ser o principal gargalo para muitos tipos de tarefas de processamento de dados em massa, uma "simulação" geralmente não deve gastar a maior parte do tempo lendo e gravando arquivos. Se o seu for, considere executá-lo a partir de um disco RAM (por exemplo, tmpfs no Linux nativo **) para evitar o acesso desnecessário ao disco físico.
De qualquer forma, a única maneira de ter certeza é testar sua simulação nos ambientes e no tempo que leva para ser executado. Antes de fazer isso, no entanto, convém dar uma olhada nos benchmarks existentes, como este WSL vs. Docker vs. VirtualBox vs. Linux nativo da Phoronix, a partir de fevereiro de 2018 , e examinar os resultados para quaisquer testes que enfatizem os mesmos componentes do sistema como faz sua simulação.
(FWIW, os resultados do Phoronix parecem coincidir principalmente com os princípios gerais que descrevi acima, embora existam algumas curiosidades notáveis como o VirtualBox aparentemente superando o Linux nativo em alguns benchmarks de E / S, aparentemente devido ao seu disco virtual nem sempre sincronizar dados imediatamente Um problema potencialmente relevante que não observei acima é que os benchmarks mostram diferenças significativas no desempenho do OpenMP multiencadeado, tanto entre os diferentes ambientes host quanto entre as diferentes distribuições do Linux, mesmo quando executadas em hardware simples. isso não é muito surpreendente, já que o threading e o IPC são tratados pelo kernel. Eu acho que grande parte da diferença entre as distribuições pode se resumir a diferentes parâmetros de tempo de execução e / ou tempo de compilação do kernel.)
*) De acordo com esta postagem do blog do MSDN de 2016, na verdade existem dois componentes de interface do sistema de arquivos no WSL: VolFs, que emula de perto a semântica nativa do sistema de arquivos Linux sobre NTFS e é usado para montar eg
/
e/home
, e DrvFs, que fornece semântica semelhante ao Windows e é usado para acessar as unidades host do Windows via/mnt/c
etc. Se o seu software não exigir especificamente recursos nativos do sistema de arquivos Linux, como vários links físicos para o mesmo arquivo, configurá-lo para armazenar seus arquivos de dados em uma pasta DrvFs pode melhorar o desempenho do acesso a arquivos em WSL.**) De acordo com este thread do Reddit de maio de 2017, "o tmpfs está atualmente emulado usando o disco" no WSL. A menos que algo tenha mudado no ano passado, isso presumivelmente significa que o uso de tmpfs no WSL não oferece benefícios de desempenho em relação ao uso de um sistema de arquivos normal em disco.
fonte
-O3 -march=haswell
ou algo assim. Não sei o que o Clear Linux realmente usa para construir seus kernels, mas talvez o BMI2 /popcnt
/ o que quer que possa fazer uma diferença mensurável no glibc e no kernel. (O kernel venceu 'benefício t da AVX, porém, porque o kernel evita registradores FPU tocar exceto em código específico como os 6 dados software-RAID5 / de correção de erros).O Ubuntu no Windows (WSL - Atualização de criadores de outono de 2017) é definitivamente mais lento que o Ubuntu "Puro" no ambiente Linux.
Por exemplo, a pintura da tela leva muito mais tempo no Windows 10 do que no Ubuntu 16.04, ou seja, você pode realmente ver o cursor se mover no Windows 10:
Demora cerca de 5 segundos para a tela inicial do WSL Bash pintar. Em comparação, são cerca de 1 1/2 segundos para a mesma tela inicial no Ubuntu 16.04:
Comparação de CPU
A primeira seção mostra o quão lenta a E / S da tela é, mas e o benchmarking da CPU?
Confira as perguntas e respostas sobre o Ubuntu: Utilitário de benchmarking de CPU para Linux , executei testes no Ubuntu 16.04 no Linux e Windows. No Linux, cerca de 24 segundos no Windows 10 versão 1709, cerca de 31 segundos. O Linux é 6 segundos mais rápido ou cerca de 25% mais rápido. No entanto, acabei de atualizar o Windows 10 para a versão 1803 (Redstone 4, também conhecida como Spring Creators April 2018 update) e levou 24 segundos, o mesmo que o Linux.
Ubuntu 16.04 no Linux
Ubuntu 16.04 no Windows 10 build 1709
Ubuntu 16.04 no Windows 10 build 1803
NOTA: A atualização de primavera do Windows 10 para 2018 (apelidada de Redstone 4 ) foi lançada em 9 de maio (há 4 dias) e eu a instalarei em breve para verificar as melhorias. Sem dúvida, existem muitos. Um que eu sei que me interessa é a capacidade de executar
cron
tarefas na inicialização. Eu preciso disso para backups diários automáticos para gmail.com.NOTA 2: Acabei de instalar o Windows 10 Build 1803 (atualização de criadores de primavera de abril de 2018, AKA Redstone 4) e a pintura da tela é muito mais rápida. Agora são apenas 3 segundos em vez de 5 segundos para exibir a tela inicial do Bash. O benchmark da CPU está a par do Linux agora.
fonte
Pense nisso - na WSL, seu computador está executando o sistema gráfico completo do Windows (que é um péssimo recurso em primeiro lugar) mais o subsistema Ubuntu. No Ubuntu nativo, ele está apenas executando o Ubuntu.
fonte
pstree
oups auxw
, é óbvio que todos os processos ainda estão vivos. (Outop
pressione M para classificar por consumo de memória).systemd
não funciona como o SysVinit
. A parte anterior deste comentário está fingindo que você estava executando uma distribuição Linux de 5 ou 10 anos com umainit
configuração antiga .) Mas sim , sair da sua sessão X e interromper o X11 / GDM liberará recursos, especialmente se você não tiver espaço para troca, ou se a área de trabalho tiver uma porcaria que acorda com frequência mesmo quando "inativa".Não sei se isso afetará sua simulação em particular, mas pode:
O WSL NÃO usa RAM para memória compartilhada! Ele usa o disco!
Isso significa que, se a sua simulação usa memória compartilhada (pense
/dev/shm
), ela pode ser lenta e / ou desgastar o seu dispositivo de armazenamento! E a penalidade de desempenho vem de várias camadas:O driver do sistema de arquivos
O driver de armazenamento
O meio de armazenamento
Mas se isso não acontecer, o desempenho deve ser semelhante ao do Ubuntu bare-metal (assumindo que não haja outra E / S, como outros já mencionaram).
fonte