Chciałbym zadać pytanie dotyczące testowania dużej symulacji CAE na tym samym komputerze w następujących dwóch sytuacjach.
- Czysty system Ubuntu
- System Ubuntu w Windows 10 (WSL)
Czy prędkości obliczeniowe w obu przypadkach są prawie takie same, czy różnią się?
Odpowiedzi:
Oprogramowanie do symulacji najprawdopodobniej jest związane z procesorem lub pamięcią . W przypadku takich obciążeń nie można nie zauważyć żadnej znaczącej różnicy między uruchomieniem kodu na „bare metal” lub wewnątrz WSL (lub innej warstwie zgodności lub maszynie wirtualnej, która korzysta z wykonania natywnego), ponieważ w każdym przypadku system operacyjny jest po prostu podczas gdy kod symulacyjny działa bezpośrednio na CPU.
Jednak możliwe jest również, że twoja symulacja jest przynajmniej częściowo związana z I / O, i tam mogą pojawić się różnice. Najwyraźniej WSL (obecnie) ma dość powolną warstwę interfejsu systemu plików, która może znacznie spowolnić dyskowe operacje we / wy. * To powiedziawszy, chociaż dyskowe operacje we / wy mogą być głównym wąskim gardłem dla wielu rodzajów zadań przetwarzania danych masowych, „symulacja” zwykle nie powinien spędzać większości czasu na czytaniu i pisaniu plików. Jeśli tak, możesz rozważyć uruchomienie go z dysku RAM (np. Tmpfs w natywnym ** Linuksie), aby uniknąć niepotrzebnego dostępu do dysku fizycznego.
W każdym razie jedynym sposobem, aby się upewnić, jest przetestowanie symulacji w obu środowiskach i czasu, jaki zajmuje jej uruchomienie. Jednak zanim to zrobisz, możesz przyjrzeć się istniejącym testom porównawczym, takim jak WSL vs.Docker vs. VirtualBox vs. natywny test wydajności wydajności Linuksa autorstwa Phoronix od lutego 2018 r. I sprawdzić wyniki dla testów testujących te same komponenty systemu, podobnie jak twoja symulacja.
(FWIW, wyniki Phoronix wydają się w większości zgodne z ogólnymi zasadami, które przedstawiłem powyżej, chociaż istnieje kilka znaczących osobliwości, takich jak VirtualBox, najwyraźniej przewyższający natywnego Linuksa w kilku testach porównawczych we / wy, najwyraźniej z powodu jego wirtualnego dysku nie zawsze natychmiast synchronizującego dane na dysk fizyczny. Jednym z potencjalnie istotnych problemów, których nie zauważyłem powyżej, jest to, że testy porównawcze pokazują znaczące różnice w wielowątkowej wydajności OpenMP zarówno pomiędzy różnymi środowiskami hosta, jak i między różnymi dystrybucjami Linuksa, nawet gdy są uruchomione na gołym sprzęcie. Z perspektywy czasu nie jest to zbyt zaskakujące, ponieważ jądro obsługuje wątki i IPC. Sądzę, że duża różnica między dystrybucjami może sprowadzać się do różnych parametrów strojenia środowiska uruchomieniowego i / lub kompilacji czasu).
*) Zgodnie z tym postem na blogu MSDN z 2016 roku, w rzeczywistości istnieją WSL dwa komponenty interfejsu systemu plików w WSL: VolFs, który ściśle emuluje natywną semantykę systemu plików Linux nad NTFS i jest używany do montowania np.
/
I/home
oraz DrvFs, który zapewnia głównie semantykę podobną do Windows i jest używany do uzyskiwania dostępu do dysków systemu Windows za pośrednictwem/mnt/c
itp. Jeśli twoje oprogramowanie nie wymaga specyficznych funkcji systemu plików Linux, takich jak wiele twardych linków do tego samego pliku, skonfigurowanie go do przechowywania plików danych w folderze DrvFs może poprawić wydajność dostępu do plików na WSL.**) Zgodnie z tym wątkiem Reddit z maja 2017 r. „Tmpfs jest obecnie emulowany przy użyciu dysku” na WSL. O ile coś się nie zmieniło w ciągu ostatniego roku, prawdopodobnie oznacza to, że używanie tmpfs na WSL nie daje żadnej korzyści w zakresie wydajności w porównaniu do używania normalnego systemu plików na dysku.
źródło
-O3 -march=haswell
. Czy coś. Nie wiem, co Clear Linux faktycznie wykorzystuje do budowy swoich jąder, ale może BMI2 /popcnt
/ cokolwiek, co może mieć mierzalną różnicę w glibc i jądrze. (Jądro wygrało nie skorzysta z AVX, ponieważ jądro unika dotykania rejestrów FPU, z wyjątkiem określonego kodu, takiego jak dane korekcji błędów w oprogramowaniu RAID5 / 6).Ubuntu w systemie Windows (WSL - 2017 Fall Creators Update) jest zdecydowanie wolniejszy niż „Pure” Ubuntu w środowisku Linux.
Na przykład malowanie ekranu trwa wiele razy dłużej w systemie Windows 10 w porównaniu z Ubuntu 16.04, tzn. Można zobaczyć ruch kursora w systemie Windows 10:
Malowanie ekranu powitalnego WSL Bash zajmuje około 5 sekund. Dla porównania, ten sam ekran powitalny w Ubuntu 16.04 wynosi około 1 1/2 sekundy:
Benchmarking procesora
Pierwsza sekcja pokazuje, jak powolny jest ekran I / O, ale co z testowaniem procesora?
Z tego pytania Zapytaj Ubuntu Pytania i odpowiedzi: narzędzie do testowania procesorów w systemie Linux , przeprowadziłem testy na Ubuntu 16.04 w systemie Linux i Windows. W systemie Linux około 24 sekund, w wersji Windows 10 1709 około 31 sekund. Linux jest o 6 sekund szybszy lub około 25% szybszy. Jednak właśnie uaktualniłem system Windows 10 do wersji 1803 (aktualizacja Redstone 4, czyli Spring Creators April 2018) i zajęło to 24 sekundy, czyli tyle samo, co Linux.
Ubuntu 16.04 w systemie Linux
Ubuntu 16.04 na Windows 10 build 1709
Ubuntu 16.04 na Windows 10 kompilacja 1803
UWAGA: wiosenna aktualizacja systemu Windows 10 na 2018 r. (Nazwana Redstone 4 ) pojawiła się 9 maja (4 dni temu) i wkrótce ją zainstaluję, aby sprawdzić ulepszenia. Bez wątpienia jest ich wiele. Wiem, że mnie to interesuje, to możliwość uruchamiania
cron
zadań podczas uruchamiania. Potrzebuję tego do codziennych automatycznych kopii zapasowych na gmail.com.UWAGA 2: Właśnie zainstalowałem Windows 10 Build 1803 (wiosenna aktualizacja dla twórców AKA Redstone 4 z kwietnia 2018 r.), A malowanie ekranu jest znacznie szybsze. Teraz jest tylko 3 sekundy zamiast 5 sekund, aby wyświetlić ekran powitalny Bash. Benchmark procesora jest teraz na równi z Linuksem.
źródło
Pomyśl o tym - w WSL na twoim komputerze działa pełny graficzny system Windows (przede wszystkim straszny świnia zasobów) plus podsystem Ubuntu. W natywnym Ubuntu działa tylko Ubuntu.
źródło
pstree
lubps auxw
, oczywiste jest, że wszystkie procesy są nadal aktywne. (Lubtop
naciśnij M, aby posortować według zużycia pamięci).systemd
nie działa jak SysVinit
. Wcześniejsza część tego komentarza udaje, że prowadziłeś 5 lub 10-letnią dystrybucję Linuksa z oldschoolowąinit
instalacją.) Ale tak , wylogowanie się z sesji X i zatrzymanie X11 / GDM zwolni zasoby, szczególnie jeśli nie masz przestrzeni wymiany lub na pulpicie występują bzdury, które budzą się często, nawet gdy są „bezczynne”.Nie wiem, czy wpłynie to w szczególności na twoją symulację, ale może:
WSL NIE używa pamięci RAM do pamięci współdzielonej! Używa dysku!
Oznacza to, że jeśli twoja symulacja korzysta z pamięci współdzielonej (pomyśl
/dev/shm
), może być wolna i / lub zużywać twoje urządzenie pamięci! A kara wydajności pochodzi z kilku warstw:Sterownik systemu plików
Sterownik pamięci
Nośnik pamięci
Ale jeśli tak się nie stanie, wydajność powinna być podobna do tej na Ubuntu bez systemu operacyjnego (zakładając, że nie ma żadnych innych operacji wejścia / wyjścia, jak wspomnieli inni).
źródło