Execução de uma simulação no Ubuntu puro vs no Ubuntu no Windows (WSL)

14

Gostaria de fazer uma pergunta sobre como testar uma simulação grande do CAE no mesmo computador nas duas situações a seguir.

  1. Sistema Pure Ubuntu
  2. sistema Ubuntu no Windows 10 (WSL)

As velocidades de cálculo em ambos os casos são quase iguais ou são diferentes?

    
por ABCDEMMM 13.05.2018 / 05:44

4 respostas

17

O seu software de simulação provavelmente está vinculado à CPU ou limite de memória . Para tais cargas de trabalho, não seria necessário ver qualquer diferença significativa entre a execução do código em "bare metal" ou dentro da WSL (ou qualquer outra compatibilidade camada ou VM que usa a execução nativa), já que em ambos os casos o sistema operacional está praticamente parado enquanto o código da simulação é executado diretamente na CPU.

No entanto, também é possível que sua simulação seja pelo menos parcialmente limitada por E / S, e é aí que as diferenças podem surgir. Aparentemente, a WSL (atualmente) tem uma camada de interface de sistema de arquivos bastante lenta que pode diminuir significativamente a E / S do disco. * Dito isso, embora a E / S de disco possa 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 escrevendo arquivos. Se o seu for, você pode considerar a possibilidade de executá-lo a partir de um disco RAM (por exemplo, tmpfs no Linux nativo **) para evitar o acesso desnecessário ao disco físico.

Em qualquer caso, a única maneira de ter certeza é testar sua simulação nos dois ambientes e o tempo de execução. Antes de fazer isso, no entanto, você pode querer dar uma olhada nos benchmarks existentes, como este WSL vs. Docker vs. VirtualBox vs. benchmark de desempenho nativo do Linux pela Phoronix a partir de fevereiro de 2018 , e examine os resultados para quaisquer testes que enfatizem os mesmos componentes do sistema que a sua simulação.

(FWIW, os resultados do Phoronix parecem coincidir com os princípios gerais que descrevi acima, embora existam algumas esquisitices notáveis como o VirtualBox aparentemente superando o Linux nativo em alguns benchmarks de I / O, aparentemente devido ao seu disco virtual nem sempre Sincronizando dados imediatamente com o disco físico.Um problema potencialmente relevante que eu não observei acima é que os benchmarks mostram diferenças significativas no desempenho do OpenMP multiencadeado tanto entre os diferentes ambientes host como também entre diferentes distribuições Linux mesmo quando rodando em hardware nu.Em retrospectiva, isso não é muito surpreendente, já que o threading e o IPC são manipulados pelo kernel.Eu acho que grande parte da diferença entre as distribuições pode vir a um kernel de tempo de execução e / ou compilação diferente parâmetros de ajuste.)

*) De acordo com este post do blog do MSDN a partir de 2016, existem, na verdade, dois componentes de interface de sistema de arquivos no WSL: VolFs, que emula de perto a semântica do sistema de arquivos Linux nativo sobre o NTFS e é usado para montar, por exemplo / e /home e DrvFs, que fornece basicamente semântica semelhante ao Windows e é usado para acessar as unidades do Windows host via /mnt/c etc. Se o seu software não requer especificamente recursos nativos do sistema de arquivos Linux, como vários links físicos para o mesmo arquivo, configurando-o para armazenar seus arquivos de dados em uma pasta DrvFs pode melhorar o desempenho de acesso a arquivos no WSL.

**) De acordo com este tópico do Reddit de maio de 2017, " O tmpfs é atualmente emulado usando o disco "no WSL. A menos que algo tenha mudado ao longo do último ano, isso significa que usar o tmpfs no WSL não oferece nenhum benefício em relação ao uso de um sistema de arquivos normal em disco.

    
por Ilmari Karonen 13.05.2018 / 11:00
11
O

Ubuntu no Windows (WSL - 2017 Fall Creators Update) é definitivamente mais lento que o Ubuntu "Pure" no ambiente Linux.

Por exemplo, a pintura de tela demora muito mais no Windows 10 em relação ao Ubuntu 16.04, ou seja, você pode realmente ver o cursor se mover no Windows 10:

Demoracercade5segundosparaatelainicialdoBashdaWSLpintar.Porcomparação,écercade11/2segundosparaamesmatelainicialnoUbuntu16.04:

TestecomparativodaCPU

AprimeiraseçãomostracomoateladeE/Sélenta,maseobenchmarkingdeCPU?

Apartirdisso,pergunteaoUbuntuQ&A: Utilitário de benchmarking da CPU para Linux , testei o Ubuntu 16.04 no Linux e no 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, eu acabei de atualizar o Windows 10 para a versão 1803 (atualização do Redstone 4 também conhecido como Spring Creators de abril de 2018) e levou 24 segundos, o mesmo que o Linux.

Ubuntu 16.04 no Linux

$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          23.5065s
    total number of events:              10000
    total time taken by event execution: 23.5049
    per-request statistics:
         min:                                  2.13ms
         avg:                                  2.35ms
         max:                                  8.52ms
         approx.  95 percentile:               2.76ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   23.5049/0.00

Ubuntu 16.04 no Windows 10, compilação 1709

$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          30.5350s
    total number of events:              10000
    total time taken by event execution: 30.5231
    per-request statistics:
         min:                                  2.37ms
         avg:                                  3.05ms
         max:                                  6.21ms
         approx.  95 percentile:               4.01ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   30.5231/0.00

Ubuntu 16.04 no Windows 10, compilação 1803

$ sysbench --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          23.7223s
    total number of events:              10000
    total time taken by event execution: 23.7155
    per-request statistics:
         min:                                  2.21ms
         avg:                                  2.37ms
         max:                                  4.53ms
         approx.  95 percentile:               2.73ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   23.7155/0.00

OBSERVAÇÃO: A atualização de primavera do Windows 10 para 2018 (dublado Redstone 4 ) foi lançada em 9 de maio (4 dias atrás) e eu irei instalá-lo em breve para conferir as melhorias. Sem dúvida, existem muitos. Um que eu sei que me interessa é a capacidade de executar cron jobs na inicialização. Eu preciso disso para backups diários automáticos para o gmail.com.

OBS 2: Acabei de instalar o Windows 10 Build 1803 (Atualização de criadores do Spring de abril de 2018, AKA Redstone 4) e a tela de pintura é 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á no mesmo nível do Linux agora.

    
por WinEunuuchs2Unix 13.05.2018 / 06:02
7

Pense nisso - na WSL, o seu computador está executando o sistema gráfico completo do Windows (que é um recurso horrível em primeiro lugar) mais o subsistema Ubuntu. No Ubuntu nativo, ele está apenas executando o Ubuntu.

    
por JimDeadlock 13.05.2018 / 06:07
1

Não sei se isso afetará sua simulação em particular, mas pode:

A WSL NÃO usa RAM para memória compartilhada! Ele usa o disco!

Isso significa que, se sua simulação usar memória compartilhada (pense em /dev/shm ), ela poderá ficar lenta e / ou desgastar 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, então o desempenho deve ser semelhante ao do Ubuntu bare-metal (não assumindo nenhum outro I / O, como outros já mencionaram).

    
por Mehrdad 14.05.2018 / 11:07