Запуск моделювання на чистому Ubuntu проти Ubuntu в Windows (WSL)


15

Я хотів би задати питання про тестування великого моделювання CAE на одному комп’ютері в наступних двох ситуаціях.

  1. Чиста система Ubuntu
  2. Система Ubuntu в Windows 10 (WSL)

Чи швидкості обчислення в обох випадках майже однакові чи вони різні?


4
Не знаючи природи моделювання, відповісти на це неможливо.
муру

1
@muru: Це не що розпливчасте. "Моделювання", імовірно, є обчислювально інтенсивним фоновим завданням, що робить його або процесором, або пам'яттю. (Дисковий або мережевий введення / виведення також може бути вузьким місцем, але це те, чого люди, які пишуть такі програми, зазвичай уникають, а деякий сучасний імітаційний код може навіть використовувати графічний процесор для паралельних обчислень.) Можна було б досить легко написати (або завантажити) орієнтир. що перевіряє всі ці 2–5 можливих вузьких місць та перевіряє, чи є якась значна різниця між WSL та нативним Ubuntu для будь-якого з них. Я б це зробив, але у мене немає доступних WSL (або Windows 10).
Ільмарі Каронен

3
@IlmariKaronen "імовірно". Залежно від даних, які принесли хрускіт, це може бути так само інтенсивним IO, навіть якщо процесор пов'язаний. А решта вашого коментаря є досить вагомою причиною для закриття цього питання - ми не маємо уявлення про те, яка можлива комбінація вузьких місць має значення тут.
муру

1
Ну, я відповів, оскільки виявляється, що відповідні орієнтири вже є в Інтернеті . Очевидно, що я не можу точно сказати , є чи OP в конкретних буде код моделювання працювати повільніше на WSL чи ні; але в будь-якому випадку, відповідь на це питання не має жодної користі ні для кого, крім ОП. На що я можу відповісти, ґрунтуючись на орієнтирах, - це те, на які типи коду моделювання можна обґрунтовано очікувати різниці між продуктивністю WSL та рідним Linux.
Ільмарі Каронен

@muru, це моделювання CAE (Abaqus CAE).
ABCDEMMM

Відповіді:


18

Ваше програмне забезпечення для моделювання, швидше за все, або пов'язане з процесором або з пам'яттю . У таких робочих навантаженнях не можна буде бачити якусь істотну різницю між запуском коду на "голий метал" або всередині WSL (або будь-який інший шар сумісності або VM, який використовує нативне виконання), оскільки в будь-якому випадку ОС здебільшого просто стоїть при цьому імітаційний код працює безпосередньо на процесорі.

Однак також можливо, що ваше моделювання принаймні частково пов'язане введення / виведення, і саме там можуть з’явитися відмінності. Мабуть, WSL (в даний час) має досить повільний інтерфейс файлової системи, який може значно уповільнити введення / виведення диска. * При цьому, в той час як дисковод введення / виведення може бути головним вузьким місцем для багатьох завдань об'ємної обробки даних, "моделювання" зазвичай слід не слід витрачати більшість свого часу на читання та запис файлів. Якщо у вас є, ви можете розглянути можливість запуску його з диска оперативної пам’яті (наприклад, tmpfs на рідному ** Linux), щоб уникнути непотрібного фізичного доступу до диска.

У будь-якому випадку, єдиний спосіб бути впевненим - перевірити своє моделювання в обох середовищах та час, на який потрібно запустити. Перш ніж це зробити, можливо, ви захочете ознайомитись із існуючими орієнтирами, як-от цей WSL vs. Docker vs. VirtualBox порівняно з нативним показником продуктивності Linux від Phoronix з лютого 2018 року , та вивчити результати для будь-яких тестів, що підкреслюють ті самі компоненти. системи, як це робить ваше моделювання.

(FWIW, здається, результати Phoronix здебільшого відповідають загальним принципам, які я виклав вище, хоча є кілька помітних дивацтв, таких як VirtualBox, очевидно, перевершує рідний Linux у кількох орієнтирах, пов'язаних з входом / виводом, очевидно, завдяки тому, що його віртуальний диск не завжди одразу синхронізує дані Один з потенційно релевантних проблем, які я не зміг зазначити вище, - це те, що показники показують значні відмінності у багатопотоковому виконанні OpenMP як між різними середовищами хосту, так і між різними дистрибутивами Linux, навіть коли вони працюють на голому апаратному забезпеченні. це не надто дивно, оскільки ядро ​​обробляє нитками та IPC. Я здогадуюсь, що велика різниця між дистрибутивами може зводитися до різних режимів виконання та / або компілювати параметри настройки ядра часу.)


*) Відповідно до цієї публікації в блозі MSDN від 2016 року, фактично є два компоненти інтерфейсу файлової системи у WSL: VolFs, який тісно імітує вбудовану семантику файлової системи Linux через NTFS та використовується для монтажу, наприклад, /та /home, та DrvFs, який забезпечує переважно Windows-семантику. і використовується для доступу до хост-накопичувачів Windows через /mnt/cтощо. Якщо для Вашого програмного забезпечення спеціально не потрібні вбудовані файлові системи Linux, такі як декілька жорстких посилань на один і той же файл, конфігурування його для зберігання файлів даних у папці DrvFs може покращити продуктивність доступу до файлів у WSL.

**) Відповідно до цієї теми Reddit від травня 2017 року, "tmpfs в даний час емулюється за допомогою диска" на WSL. Якщо щось не змінилося за останній рік, це, мабуть, означає, що використання tmpfs на WSL не дає переваги продуктивності, ніж використання звичайної файлової системи на диску.


Можливо, не просто налаштування параметрів, а параметри компілятора (наприклад, -O3 -march=haswellчи що-небудь. Я не знаю, що Clear Linux насправді використовує для створення своїх ядер, але, можливо, BMI2 / popcnt/ все, що може змінити різницю в glibc та ядрі. (Ядро перемогло) Однак ви не отримаєте користі від AVX, тому що ядро ​​уникає доторкань до реєстрів FPU, за винятком конкретного коду, як-от дані програмного виправлення помилок програмного забезпечення RAID5 / 6.)
Пітер Кордес,

12

Ubuntu в Windows (WSL - 2017 Fall Creators Update), безумовно, повільніше, ніж "Чистий" Ubuntu в середовищі Linux.

Наприклад, малювання екрана займає набагато більше часу в Windows 10 проти Ubuntu 16.04, тобто ви дійсно можете бачити переміщення курсора в Windows 10:

WSL bash startup.gif

На фарбування екрана WSL Bash потрібно близько 5 секунд. Для порівняння це приблизно 1 1/2 секунди для того ж екрану сплеску в Ubuntu 16.04:

Термінал Ubuntu splash.gif


Бенчмаркінг процесора

У першому розділі показано, наскільки повільний введення / виведення екрану, а як щодо тестування процесора?

З цього питання Запитайте Ubuntu Q&A: утиліта порівняльного процесора для Linux , я провів тести на Ubuntu 16.04 для Linux і Windows. В Linux близько 24 секунд, у Windows 10 версії 1709 - близько 31 секунди. Linux на 6 секунд швидший або приблизно на 25% швидший. Однак я щойно оновив Windows 10 до версії 1803 (оновлення Redstone 4 aka Spring Creators April 2018), і це зайняло 24 секунди, що таке саме, як Linux.

Ubuntu 16.04 на 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 у Windows 10, збірка 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 в Windows 10, збірка 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

ПРИМІТКА: Весняне оновлення для Windows 10 на 2018 рік (отримав назву Redstone 4 ) вийшло 9 травня (4 дні тому), і я незабаром його встановлю, щоб перевірити покращення. Без сумніву, їх багато. Те, що мене знає, що мене цікавить, - це можливість запускати cronзавдання при запуску. Мені це потрібно для автоматичного щоденного резервного копіювання на gmail.com.

ПРИМІТКА 2: Я щойно встановив Windows 10 Build 1803 (квітень 2018 року. Spring Creators Update AKA Redstone 4), і фарбування екрана відбувається набагато набагато швидше. Зараз на екрані Bash сплеск відображається лише 3 секунди замість 5 секунд. Базова ціна процесора зараз однакова з Linux.


8
Зауважте, що це вводить в оману - це не відрізняє продуктивність вводу / виводу та інші обчислювальні характеристики. Відомо, що WSL є повільним для вводу / виводу (див., Наприклад, орієнтири Phoronix). Це нічого не говорить про те, чи можна обчислення ОП робити так само швидко в WSL.
муру

6
Я чесно здивований, що малювання екрана заставки не є ефективним миттєвим в обох випадках. Ваш комп'ютер (імовірно) радий робити набагато складніші оновлення екрану за кілька мілісекунд, наприклад, під час відтворення відео. І востаннє, коли я бачив термінал так само повільно, як у вашому першому записі, був на початку 90-х, коли набирав BBS на моєму 2400 bps модему.
Ільмарі Каронен

Що ви маєте на увазі під «Ubuntu в Linux»?
Джон Бентлі

3
Чесно кажучи, цей вид еталонів абсолютно марний для будь-якої реалістичної програми, як будь-який тест, який по суті вимірює швидкість консольного малювання. Або вузьким місцем вашої програми є консольний вхід / вивід (який, як відомо, повільно навіть в Linux з більшістю термінальних емуляторів), або це не є надійним показником нічого корисного.
Маттео Італія

2
@ WinEunuuchs2Unix З того, що я бачу, обчислень мало. але багато вводу-виводу: виведення погоди звідкись, зчитування дати та часу та друк у форматі, читання системної інформації тощо. У будь-якому разі, ви коли-небудь використовували Абакус? Програмне забезпечення для моделювання, як-от воно, Ansys або Simulink, не пов'язане з екраном вводу / виводу під час виконання фактичного моделювання, якщо ви не змусили моделювання таким чином. Цілком можливо для них показати справедливі кінцеві результати залежно від зробленого моделювання.
муру

7

Подумайте над цим - у WSL на вашому комп’ютері працює повноцінна графічна система Windows (що в першу чергу є жахливим ресурсом свиней) плюс підсистема Ubuntu. У рідній Ubuntu він працює лише у Ubuntu.


1
@JimDeadlock Я дійсно не думаю, що це вбиває робочий стіл, він просто не відображає його. Кожен додаток gui все ще працює у фоновому режимі, чи не так?
Ерік Думініл

2
Графічний інтерфейс Windows споживає деяку пам’ять, але не дуже багато використовує процесор, коли нічого не роблять. Я не бачу, чому це могло б мати суттєвий вплив?
vidarlo

1
Перемикання консолі на інший ВТ не вбиває жодних процесів; @EricDuminil вірно. Це може призупинити те, що використовувало час процесора для оновлення графіки, оскільки сервер X знає, що він більше не відображається (і, отже, може не витрачати часу на обробку OpenGL чи інше). Але якщо ви запустите pstreeабо ps auxw, очевидно, що всі процеси ще живі. (Або topнатисніть кнопку M, щоб сортувати за обсягом споживання).
Пітер Кордес

2
@MichaelEricOberlin: Перехід на інший VT не впливає на рівень пробігу! Просто текстові консолі все ще доступні в рівні запуску, який запускає GDM. (І BTW, runlevels - це в основному історія минулого; systemdне працює як SysV init. Рання частина цього коментаря робить вигляд, що ви працювали з 5 або 10-річним дистрибутивом Linux зі старою школою init.) Але так , вихід із сеансу X та зупинення X11 / GDM звільнить ресурси, особливо якщо у вас немає місця для обміну, або на робочому столі є лайно, яке прокидається часто навіть у режимі очікування.
Пітер Кордес

1
@MichaelEricOberlin: Ваш коментар досить просто неправильний. Скажіть, будь ласка, видалити його?
Ерік Думініл

1

Я не знаю, чи вплине це зокрема на ваше моделювання, але це може:

WSL НЕ використовує оперативну пам’ять для спільної пам'яті! Він використовує диск!

Це означає, що якщо ваше моделювання використовує спільну пам'ять (подумайте /dev/shm), це може бути повільним і / або зношувати ваш накопичувальний пристрій! А покарання за продуктивність відбувається з декількох шарів:

  • Драйвер файлової системи

  • Драйвер зберігання

  • Засіб зберігання

Але якщо цього не зробити, то продуктивність повинна бути схожа на продуктивність на голому металі Ubuntu (припускаючи, що немає жодного іншого вводу / виводу, як згадували інші).


дійсно добре це знати!
ABCDEMMM
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.