Dhrystone на WebAssembly
2022-08-07 17:04В продолжение темы: меряем эффективность WebAssembly. Берём известный тест Dhrystone и компилируем для WASI:
Запускаем:$ make
/opt/wasi-sdk-16.0/bin/clang -O -DNRUNS=100000000 -c -o dhry_1.o dhry_1.c
/opt/wasi-sdk-16.0/bin/clang -O -DNRUNS=100000000 -c -o dhry_2.o dhry_2.c
/opt/wasi-sdk-16.0/bin/clang -o dhrystone dhry_1.o dhry_2.o
$ file dhrystone
dhrystone: WebAssembly (wasm) binary module version 0x1 (MVP)
Для сравнения скомпилим в родной бинарник:Nanoseconds for one run through Dhrystone: 35.3
Million Dhrystones per Second: 28.331
DMIPS: 16124.6
Запускаем:$ make
cc -O -DNRUNS=100000000 -c -o dhry_1.o dhry_1.c
cc -O -DNRUNS=100000000 -c -o dhry_2.o dhry_2.c
cc -o dhrystone dhry_1.o dhry_2.o
$ file dhrystone
dhrystone: Mach-O 64-bit executable x86_64
Получаем скорость 16124.6 на Wasm по сравнению с 22396.8 на родном Интеле. То есть потеря 28% производительности: неплохо! Вполне терпимо для для виртуальной машины такой сложности.Nanoseconds for one run through Dhrystone: 25.4
Million Dhrystones per Second: 39.351
DMIPS: 22396.8

no subject
Date: 2022-08-08 00:22 (UTC)Ну неплохо!
Там еще такая фигня, что jit optimization может уделать только так все эти нативные компиляции.
no subject
Date: 2022-08-08 00:30 (UTC)"Wasmtime is built on the optimizing Cranelift code generator to quickly generate high-quality machine code either at runtime or ahead-of-time."
no subject
Date: 2022-08-08 03:27 (UTC)no subject
Date: 2022-08-09 20:31 (UTC)Может, пора изучать AssemblyScript.
https://www.assemblyscript.org/introduction.html
no subject
Date: 2022-08-08 07:13 (UTC)И это все потому, что никто не хочет отдавать свою ОС или микрокод в паблик домейн или опенсорс? И пусть будет пять слоев накладных расходов для реализации anywhere, но табачок врозь?
А вот интересно было бы прошить тот же Wasm внутрь хеона вместо AMD64...
no subject
Date: 2022-08-08 15:30 (UTC)> пять слоев накладных расходов
– вроде как пост о том, что даже при таком раскладе просадка производительности всего -28% по сравнению с машинным кодом.
Касательно реализации в железе: интересно, можно, но зачем? Что это даст, кроме невозможности апгрейда машины иначе, чем через мусорный бак? Впрочем соглашусь, что amd64 в исполнении Intel тоже тот еще софтверный цирк с Intel ME, Minix и все равно багами вроде Spectre/Meltdown внутри.
no subject
Date: 2022-08-08 15:51 (UTC)no subject
Date: 2022-08-08 16:12 (UTC)Мякотка в том, что железо не требует обучения, пересмотра зарплат, не грозится сбежать к конкурентам, и не становится носителем критической компетенции в разрезе bus factor. А еще капвложения в железо неплохо прогнозируются. Поэтому, с точки зрения манажмента, увеличение расходов на железо за счет снижения расходов на стафф - чистое благо и стратегический успех. А что на выхлопе стопицот экземпляров разных версий одного софта в пределах одного хоста, так манажменту не нужна красота, ему нужен профит.
Хороший профит можно бы было получить, устранив зоопарк, но всякое железо, всякая ось и софт - это вендорлокинг, с которого поставщик тоже снимает жырную стружку. Вот прям взять и все, непосильным трудом нажитое, раздать разным нищебродам? Щяз. Тут вон некоторые в поисках вендорлока покрепче перепробовали все - от моторолы и интеля до арма :)
По поводу амд64 поверх микрокода - понятна выгода интеля. Можно рынок насегментировать в мелкий винегрет. Можно продавать фичи процов по подписке. В эконом-пакете можно только отнимать и делить. В премиум пакете включена доступная пользователю плиса для АИ и частота 2х от номинала. По письму от госдепа - отключат анальный зонд (один из, по выбору).
Но вот выгода потребителя тут не вполне понятна. Он платит за товар, который изрядную долю времени работает не в интересах потребителя.
Насчет апгрейдов сомнительно. Помнится, когда случился F00F, интел развел руками - мол, бывает, жопаделать. Но переход к микрокоду, эмулирующему амд64 - это уже две точки отказа, то-есть, удвоенный риск факапа. А в продакшне мало утешает обещание все поправить на следующей неделе, транзакции поломало вот уже прямо сейчас, и от этого факта невозможно отмахнуться. Манажмент скорей примет решение сменить железо на любое другое, не подверженное, чем ждать, пока все поправят.