Je voudrais poser une question sur le test d'une grande simulation CAE sur le même ordinateur dans les deux situations suivantes.
- Système Ubuntu pur
- Système Ubuntu dans Windows 10 (WSL)
Les vitesses de calcul sont-elles presque identiques dans les deux cas ou sont-elles différentes?
Réponses:
Votre logiciel de simulation est probablement lié au processeur ou à la mémoire . Pour de telles charges de travail, on ne ferait que constater une différence significative entre l'exécution du code sur du "bare metal" ou à l'intérieur de WSL (ou de toute autre couche de compatibilité ou machine virtuelle qui utilise l'exécution native), car dans les deux cas, le système d'exploitation est principalement en attente tandis que le code de simulation s'exécute directement sur le CPU.
Cependant, il est également possible que votre simulation soit au moins partiellement liée aux E / S, et c'est là que des différences peuvent apparaître. Apparemment, WSL (actuellement) possède une couche d'interface de système de fichiers assez lente qui peut ralentir considérablement les E / S de disque. * Cela dit, alors que les E / S de disque peuvent être le principal goulot d'étranglement pour de nombreux types de tâches de traitement de données en masse, une "simulation" ne devrait généralement pas passer la majorité de son temps à lire et à écrire des fichiers. Si c'est le cas, vous pouvez envisager de l'exécuter à partir d'un disque RAM (par exemple tmpfs sur Linux ** natif) pour éviter un accès inutile au disque physique.
Dans tous les cas, la seule façon d'être sûr est de tester votre simulation dans les deux environnements et de déterminer le temps d'exécution. Avant de faire cela, cependant, vous voudrez peut-être jeter un œil aux benchmarks existants, comme ce benchmark de performance WSL vs Docker vs VirtualBox vs Linux natif par Phoronix de février 2018 , et examiner les résultats de tous les tests qui mettent l'accent sur les mêmes composants du système comme le fait votre simulation.
(FWIW, les résultats de Phoronix semblent correspondre principalement aux principes généraux que j'ai décrits ci-dessus, bien qu'il y ait quelques bizarreries notables comme VirtualBox surpassant apparemment Linux natif dans quelques benchmarks liés aux E / S, apparemment en raison de son disque virtuel qui ne synchronise pas toujours immédiatement les données sur le disque physique. Un problème potentiellement pertinent que je n'ai pas noté ci-dessus est que les tests de performances montrent des différences significatives dans les performances OpenMP multithread à la fois entre les différents environnements hôtes et également entre les différentes distributions Linux, même lors de l'exécution sur du matériel nu. ce n'est pas trop surprenant, car le threading et l'IPC sont gérés par le noyau. Je suppose qu'une grande partie de la différence entre les distributions peut résulter de différents paramètres de réglage du noyau d'exécution et / ou de compilation.)
*) Selon ce billet de blog MSDN de 2016, il y a en fait deux composants d'interface du système de fichiers dans WSL: VolFs, qui émule étroitement la sémantique du système de fichiers Linux natif sur NTFS et est utilisé pour monter par exemple
/
et/home
, et DrvFs, qui fournit principalement une sémantique de type Windows et est utilisé pour accéder aux lecteurs Windows hôtes via/mnt/c
etc. Si votre logiciel ne nécessite pas spécifiquement des fonctionnalités natives du système de fichiers Linux comme plusieurs liens durs vers le même fichier, sa configuration pour stocker ses fichiers de données dans un dossier DrvFs peut améliorer les performances d'accès aux fichiers sur WSL.**) Selon ce fil Reddit de mai 2017, "tmpfs est actuellement émulé en utilisant le disque" sur WSL. À moins que quelque chose n'ait changé au cours de la dernière année, cela signifie probablement que l'utilisation de tmpfs sur WSL n'apporte aucun avantage en termes de performances par rapport à l'utilisation d'un système de fichiers sur disque normal.
la source
-O3 -march=haswell
ou quelque chose. Je ne sais pas ce que Clear Linux utilise réellement pour construire leurs noyaux, mais peut-être que BMI2 /popcnt
/ quoi que ce soit pourrait faire une différence mesurable dans la glibc et le noyau. (Le noyau a gagné ne bénéficient pas d'AVX, car le noyau évite de toucher aux registres FPU, sauf dans un code spécifique comme les données de correction d'erreur RAID5 / 6.)Ubuntu sous Windows (WSL - Mise à jour des créateurs d'automne 2017) est nettement plus lent que Ubuntu «pur» dans l'environnement Linux.
Par exemple, la peinture d'écran prend beaucoup plus de temps dans Windows 10 que dans Ubuntu 16.04, c'est-à-dire que vous pouvez réellement voir le curseur se déplacer dans Windows 10:
Il faut environ 5 secondes pour que l'écran de démarrage WSL Bash se peigne. En comparaison, il faut environ 1 1/2 secondes pour le même écran de démarrage dans Ubuntu 16.04:
Analyse comparative du processeur
La première section montre à quel point les E / S d'écran sont lentes, mais qu'en est-il de l'analyse comparative du processeur?
A partir de cette Ask Ubuntu Q&A: utilitaire de benchmarking CPU pour Linux , j'ai effectué des tests sur Ubuntu 16.04 sous Linux et Windows. Sur Linux environ 24 secondes sur Windows 10 version 1709 environ 31 secondes. Linux est 6 secondes plus rapide ou environ 25% plus rapide. Cependant, je viens de mettre à niveau Windows 10 vers la version 1803 (Redstone 4 aka Spring Creators, mise à jour d'avril 2018) et cela a pris 24 secondes, ce qui est le même que Linux.
Ubuntu 16.04 sur Linux
Ubuntu 16.04 sur Windows 10 build 1709
Ubuntu 16.04 sur Windows 10 build 1803
REMARQUE: la mise à jour de printemps de Windows 10 pour 2018 (baptisée Redstone 4 ) est sortie le 9 mai (il y a 4 jours) et je l'installerai bientôt pour vérifier les améliorations. Il y en a sans doute beaucoup. Celui que je connais qui m'intéresse est la possibilité d'exécuter des
cron
travaux au démarrage. J'en ai besoin pour les sauvegardes quotidiennes automatiques sur gmail.com.REMARQUE 2: Je viens d'installer Windows 10 Build 1803 (avril 2018 Spring Creators Update AKA Redstone 4) et la peinture d'écran est beaucoup plus rapide. Il ne reste plus que 3 secondes au lieu de 5 secondes pour afficher l'écran de démarrage Bash. Le benchmark CPU est à égalité avec Linux maintenant.
la source
Pensez-y - dans WSL, votre ordinateur exécute le système graphique Windows complet (qui est un horrible porc de ressources en premier lieu) plus le sous-système Ubuntu. Dans Ubuntu natif, il ne fonctionne qu'avec Ubuntu.
la source
pstree
oups auxw
, il est évident que tous les processus sont toujours en vie. (Outop
et appuyez sur M pour trier par consommation de mémoire).systemd
ne fonctionne pas comme SysVinit
. La première partie de ce commentaire prétend que vous exécutiez une distribution Linux de 5 ou 10 ans avec uneinit
configuration old-school .) Mais oui , la déconnexion de votre session X et l'arrêt de X11 / GDM libéreront des ressources, surtout si vous n'avez pas d'espace de swap, ou si votre bureau a de la merde qui se réveille fréquemment même lorsqu'il est "inactif".Je ne sais pas si cela affectera votre simulation en particulier, mais cela pourrait:
WSL n'utilise PAS de RAM pour la mémoire partagée! Il utilise le disque!
Cela signifie que si votre simulation utilise la mémoire partagée (pensez
/dev/shm
), cela peut être lent et / ou épuiser votre périphérique de stockage! Et la pénalité de performance vient de plusieurs couches:Le pilote du système de fichiers
Le pilote de stockage
Le support de stockage
Mais s'il ne le fait pas, les performances devraient être similaires à celles sur Ubuntu bare-metal (en supposant qu'aucune autre E / S, comme d'autres l'ont mentionné).
la source