Я хотів би задати питання про тестування великого моделювання CAE на одному комп’ютері в наступних двох ситуаціях.
- Чиста система Ubuntu
- Система Ubuntu в Windows 10 (WSL)
Чи швидкості обчислення в обох випадках майже однакові чи вони різні?
Я хотів би задати питання про тестування великого моделювання CAE на одному комп’ютері в наступних двох ситуаціях.
Чи швидкості обчислення в обох випадках майже однакові чи вони різні?
Відповіді:
Ваше програмне забезпечення для моделювання, швидше за все, або пов'язане з процесором або з пам'яттю . У таких робочих навантаженнях не можна буде бачити якусь істотну різницю між запуском коду на "голий метал" або всередині 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.)
Ubuntu в Windows (WSL - 2017 Fall Creators Update), безумовно, повільніше, ніж "Чистий" Ubuntu в середовищі Linux.
Наприклад, малювання екрана займає набагато більше часу в Windows 10 проти Ubuntu 16.04, тобто ви дійсно можете бачити переміщення курсора в Windows 10:
На фарбування екрана WSL Bash потрібно близько 5 секунд. Для порівняння це приблизно 1 1/2 секунди для того ж екрану сплеску в Ubuntu 16.04:
У першому розділі показано, наскільки повільний введення / виведення екрану, а як щодо тестування процесора?
З цього питання Запитайте 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.
$ 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
$ 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
$ 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.
Подумайте над цим - у WSL на вашому комп’ютері працює повноцінна графічна система Windows (що в першу чергу є жахливим ресурсом свиней) плюс підсистема Ubuntu. У рідній Ubuntu він працює лише у Ubuntu.
pstree
або ps auxw
, очевидно, що всі процеси ще живі. (Або top
натисніть кнопку M, щоб сортувати за обсягом споживання).
systemd
не працює як SysV init
. Рання частина цього коментаря робить вигляд, що ви працювали з 5 або 10-річним дистрибутивом Linux зі старою школою init
.) Але так , вихід із сеансу X та зупинення X11 / GDM звільнить ресурси, особливо якщо у вас немає місця для обміну, або на робочому столі є лайно, яке прокидається часто навіть у режимі очікування.
Я не знаю, чи вплине це зокрема на ваше моделювання, але це може:
Це означає, що якщо ваше моделювання використовує спільну пам'ять (подумайте /dev/shm
), це може бути повільним і / або зношувати ваш накопичувальний пристрій! А покарання за продуктивність відбувається з декількох шарів:
Драйвер файлової системи
Драйвер зберігання
Засіб зберігання
Але якщо цього не зробити, то продуктивність повинна бути схожа на продуктивність на голому металі Ubuntu (припускаючи, що немає жодного іншого вводу / виводу, як згадували інші).