Size: a a a

2019 August 09

A

Anton in pro.lua
Шмель Тяжеловес
Сделал
apt-get install libtext-table-perl liblist-allutils-perl
и оно заработало. Работало довольно долго, загружен был только один процессор. Тесты ведь можно замногопоточить?
Там по дефолту стоит --multirun 5 (5 раз гоняет бенчмарки + запускает их с JIT ON и JIT OFF). Загружен один процессор в силу однопоточности Lua-машины. Запараллелить – ну в принципе можно, да.
источник

S

Serezha in pro.lua
Ivan Azoyan
ему обидно что мы отстаём от js и питона
Нет, мне просто кажется что дальше довольно очевидных и простых вещей развитие джита не пойдет без Майка.
источник

IA

Ivan Azoyan in pro.lua
он гений?
источник

IM

Igor Munkin in pro.lua
Ivan Azoyan
он гений?
https://news.ycombinator.com/item?id=11326395
Но это не точно :)
источник

M

Max in pro.lua
Serezha
Нет, мне просто кажется что дальше довольно очевидных и простых вещей развитие джита не пойдет без Майка.
Мы, к сожалению, не знаем и про развитие луаджита и с Майком
источник

M

Max in pro.lua
Ну то есть та же идея с GC была имплементирована не раз и не дала никакого перф буста
источник

IA

Ivan Azoyan in pro.lua
последний коммит был 10 января 2019 https://repo.or.cz/w/luajit-2.0.git
источник

A

Anton in pro.lua
Max
Ну то есть та же идея с GC была имплементирована не раз и не дала никакого перф буста
При том что бумага красивая. Но меня, честно говоря, немного пугают требования к выравниванию арен (кажется, там идея гарантированно иметь 16 нулевых битиков). Но может, зря пугаюсь.
источник

DF

Dollar Føølish in pro.lua
Так поинтер и так 47 битный
источник

DF

Dollar Føølish in pro.lua
Или еще меньше надо для выравнивания?
источник

A

Anton in pro.lua
Serezha
Нет, мне просто кажется что дальше довольно очевидных и простых вещей развитие джита не пойдет без Майка.
Можно уточнить, какие вещи являются на ваш взгляд очевидными и простыми?

> развитие джита не пойдет без Майка

Наш опыт не позволяет мне согласиться с этим утверждением.
источник

A

Anton in pro.lua
Dollar Føølish
Так поинтер и так 47 битный
http://wiki.luajit.org/New-Garbage-Collector

All arenas have the same size and they are naturally aligned to their size. E.g. 64 KB-sized arenas have addresses ending with 16 zero bits. This has two advantages:

   Aligned arenas can be densely packed and do not cause any extra memory fragmentation issues for the operating system.
   The metadata area of its arena can be derived from any interior pointer simply by masking off the lowest bits of the address.
источник

CP

Companion Philipp in pro.lua
Anton
Можно уточнить, какие вещи являются на ваш взгляд очевидными и простыми?

> развитие джита не пойдет без Майка

Наш опыт не позволяет мне согласиться с этим утверждением.
Я бы сказал, что проблема в том, что люди очень неохотно меняют привычные для себя вещи на что-то новое. uJIT не дает сверх-крутых преимуществ над LuaJIT2.1, чтобы все массово на него перешли. Сейчас есть уже штуки 4 разных ЖИТов, но все продолжают использовать LuaJIT
источник

CP

Companion Philipp in pro.lua
Я думаю, тут мысль в том, что Майк Полл уже подсадил людей на свою платформу и кто бы что ни делал –– люди всё равно будут ждать луажита
источник

DF

Dollar Føølish in pro.lua
Конечно, когла привычные вещи стабильно работают
источник

DF

Dollar Føølish in pro.lua
Очень неохотно
источник

A

Anton in pro.lua
Companion Philipp
Я бы сказал, что проблема в том, что люди очень неохотно меняют привычные для себя вещи на что-то новое. uJIT не дает сверх-крутых преимуществ над LuaJIT2.1, чтобы все массово на него перешли. Сейчас есть уже штуки 4 разных ЖИТов, но все продолжают использовать LuaJIT
Не-не-не, не поймите меня превратно, я не агитирую за советскую власть^W^W LuaVela. Правда. У меня нет целей прийти и вот всем-всем-всем продать новую платформу, тем более что по некоторым характеристикам (например, переносимости) она заведомо хуже оригинала.

Но у LuaJIT'а есть проблемы, которые нам удалось так или иначе решить. И мы будем только рады, если кому-то эти решения окажутся полезны. Кто-то может забрать к себе в форки. Кто-то может нам что законтрибутит. Как-то так.

Мне очень понравился комментарий Хавьера, он соответствут примерно моим ожиданиям:

> even if many of us might not use it directly, there's a _ton_ of hard
> work there and lots of things to learn from.   the first thing I'd
> like to check is how much work and overhead is there from the bigger
> TValue struct.  the current 47-bit limit is annoying, and just saying
> "this is a design issue, it's not going away" is just not enough.  now
> we can compare with a real, tested, alternate implementation.

Ну даже если не пригодятся никому наши наработки – ну что ж, ну бывает :-)
источник

S

Snusmumriken in pro.lua
Anton
Это всё-таки не отвечает на мои вопросы (ещё раз):

* А в каком состоянии по вашему мнению Майк Полл забросил разработку?
* И что такое по вашему мнению 10%?

Но я тем не менее как-то попробую ответить.

Во-первых, бетой в 2019 году по-прежнему является ветка  2.1, а 2.0 – stable. Сравнивая 2.1 и LuaVela, я не берусь утверждать, что LuaVela – это bugless code, но я хотя бы могу сказать, что она крутится с 2017 года в боевом окружении, обрабатывая сотни миллиардов запросов ежесуточно (я не преувеличиваю). А про LuaJIT 2.1 у меня проверенной информации нет. При этом, возвращаясь к стабильной ветке 2.0: она просто не умеет работать со всей виртуальной памятью на 64-битной платформе на Линуксах, а LuaVela (как потомок стабильной 2.0) – умеет. Да, 2.1 имеет режим LJ_GC64, но, насколько я помню доклад Питера на митапе в Лондоне (смотрели?), этот режим стабилизировался только к 2017 году.

Далее, не JIT-ом единым живы реализации Lua. Например, ещё хочется эффективно использовать память в бизнес-приложениях. Для этой цели и была добавлена функциональность силинга (о ней см. в анонсе) и DataState (забыл упомянуть об этом, это возможность задёшево разделять read-only данные между несколькими экземплярами VM). В этот момент мы бесплатным бонусом получаем возможность делать какие-то данные иммутабельными (как я рассказывал на докладе в прошлом году, ujit.immutable(_G) спасает нас от проблем опечаток в именах переменных).

Но если мы говорим о JIT-е:

* В LuaVela затащено очень многое из того, что есть в LuaJIT 2.1. Из крупного, что не сделано – trace stitching для "компиляции" вызовов Lua C API;
* В LuaVela есть расширения стандартной бибилиотеки, в которых собраны некоторые полезные на наш взгляд функции общего назначения. Они написаны на C, и многие из них JIT-компилируются;
* В LuaVela появились оптимизации, которые помогают улучшить работу машинного кода при обилии с операциями с памятью (это очень частый случай при скриптовании бизнес-логики, и вот тут оригинальный JIT ведёт себя не очень хорошо – безусловно делая всех в чисто вычислительных задачах).

Наконец, код платформы опубликован сразу с несколькими тестовыми сюитами и документацией, которую мы писали, накапливая экспертизу в течение многих лет. Можно брать, смотреть, пробовать, тестировать, контрибутить.

В общем и целом – да, проблема фрагментации, безусловно, есть. Это тот случай, когда сильная сторона языка оборачивается его же слабостью.

Но утверждение про 10% – это выглядит как-то непонятно.
>Но утверждение про 10% – это выглядит как-то непонятно.
Это Серёжа. Я его уже много раз бил по рукам за громкие вопли без оснований, и миллиард выводов когда сам не разобрался в теме (наполовину нахватался, наполовину выдумал). Не работает. Видать просто человек такой, но реагировать бесполезно.
источник

A

Anton in pro.lua
Snusmumriken
>Но утверждение про 10% – это выглядит как-то непонятно.
Это Серёжа. Я его уже много раз бил по рукам за громкие вопли без оснований, и миллиард выводов когда сам не разобрался в теме (наполовину нахватался, наполовину выдумал). Не работает. Видать просто человек такой, но реагировать бесполезно.
Да ничего страшного на самом деле :-) Мне кажется, все недоразумения разрешились в процессе дискуссии.
источник

S

Snusmumriken in pro.lua
С другой стороны, Серёжа делает вброс, и дальше мы дружно дискутируем и бьём его по рукам, движуха идёт, сообщество развивается и не стагнирует.
источник