Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 26 27 28 29 30 31 32 33 34 [35]
 Re: Конкурс идей про Firebird  [new]
Tonal
Member

Откуда: Новосибирск
Сообщений: 152
Неожиданно соглашусь с rdb_dev о том, что LLVM это интересная мысль.
Правда из его путанных объяснений вовсе нипонятно ни что это, ни зачем может быть нужно. :)

Естественно для разработки UDR и UDF можно уже и сейчас использовать тот же clang и тем самым использовать LLVM - т. е. и говорить об этом смысла отдельного нет.

Но вот использовать LLVM вместо механизма исполнения BLR вролне возможно.
Какой выйдет профит?
1. Статическая компиляция промежуточного кода LLVM IR в оптимизированный машинный
2. JIT для многих плотформ.
3. Оптимизация на уровне промежуточного кода.
Т. е. возможно серьёзное ускорение выполнения чисто расчётных мест в PSQL.

Как это может быть сделано?
Пишется транслятор из BLR в IR.
Далее или запускается статическая компиляция IR в машкод конкретного процессора для выполнения, либо выполнение передаётся самой LLVM с JIT.
23 мар 19, 10:46    [21841562]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6846
Tonal
возможно серьёзное ускорение выполнения чисто расчётных мест в PSQL

вооооот! И сколько таких мест в PSQL, которые не работают с таблицами и при этом сильно грузят ЦПУ? 1%? 5%?
23 мар 19, 17:21    [21841719]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2628
dimitr
Tonal
возможно серьёзное ускорение выполнения чисто расчётных мест в PSQL
вооооот! И сколько таких мест в PSQL, которые не работают с таблицами и при этом сильно грузят ЦПУ? 1%? 5%?
Мне кацца, что даже небольшой алгоритм, отрабатывающий на каждую строку курсора, в машинном коде "на круг" даст существенный прирост к скорости выполнения ХП или триггера, по сравнению с интерпретируемым. Или я ошибаюсь?
23 мар 19, 17:47    [21841730]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2628
WildSery
rdb_dev, и ты говори (ц)
Вы тут со скуки помрёте, если я вас перестану тормошить.
23 мар 19, 17:52    [21841731]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
afgm
Member

Откуда:
Сообщений: 573
dimitr
вооооот! И сколько таких мест в PSQL, которые не работают с таблицами и при этом сильно грузят ЦПУ? 1%? 5%?

С профайлером не стоял, но что грузит CPU? Если данные в кеше, то расколупывание версий? Разруливание блокировок? Дикие прыжки от индекса к данным и CPU ждёт? И даже если параметры для обработки потока данных уже заданы, может слишком ветвистые прыжки или вымывание кеша из-за оверхеда интерпретатора?
Есть материалы/исследования на эту тему про FB для изучения?

PS. Уж не знаю от чего в слонике LLVM втаскивают. Пока, проде бы, только для проверки условий.
23 мар 19, 18:14    [21841737]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47264

afgm
Есть материалы/исследования на эту тему про FB для изучения?

Просто собери сервер и погоняй под профилером, там увидишь.

Posted via ActualForum NNTP Server 1.5

23 мар 19, 18:16    [21841738]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
afgm
Member

Откуда:
Сообщений: 573
Dimitry Sibiryakov
Просто собери сервер и погоняй под профилером, там увидишь.

Это позволит мне сделать далекоидущие и неверные выводы :)
23 мар 19, 20:43    [21841770]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2628
afgm, тонко... 😆
23 мар 19, 22:25    [21841797]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9073
rdb_dev
Или я ошибаюсь?
Вопросительные нотки тут совершенно излишни.
25 мар 19, 14:27    [21842804]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
rdb_dev
Мне кацца, что даже небольшой алгоритм, отрабатывающий на каждую строку курсора, в машинном коде "на круг" даст существенный прирост к скорости выполнения ХП или триггера, по сравнению с интерпретируемым. Или я ошибаюсь?


а мне кажется пиление методов доступа и оптмизатора куда более полезным
25 мар 19, 14:39    [21842832]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2628
Basil A. Sidorov
rdb_dev
Или я ошибаюсь?
Вопросительные нотки тут совершенно излишни.
Хорошо, спрошу иначе - какой в процентном соотношение оверхед интерпретации на простое действие "i=i+1" относительно скорости выполнения самого действия, скомпилированного в машинный код? 10%, 50%, 100%, 200%?
25 мар 19, 14:42    [21842835]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9073
rdb_dev
Хорошо, спрошу иначе - какой в процентном соотношение оверхед интерпретации на простое действие
"Да на пофигу нам на ваши неувязочки".
Спросите (для начала - себя): какой вообще процент времени СУБД занята чисто вычислительными операциями?

P.S.
Разумные люди должны понимать, что "элементарные операции" никому не интересны: "Я бы взял частями, но мне нужно сразу".
25 мар 19, 14:48    [21842842]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 15111
Симонов Денис
а мне кажется пиление методов доступа и оптмизатора куда более полезным
Чаще всего да.
Но с этим новым инструментом появятся и его жертвы.
Один и тот же интерпретируемый код может быть написан так, что давать разницу в выполнении на порядок или два.
Также, тут вступают в действие особенности интерпретатора.

Например, я видел такое. Два схожих по результату цикла:
for pos = 1 to arrayLength do begin
  hash1 = hash1*m + arrayData[pos-1];
  if pos % 10 = 0 then begin
    hash1 = hash1 % maxSeed; 
  end
end

/***************************************/ 

pos = 0;
while pos < arrayLength - 10 do begin
  hash1 = ((((((((((hash1*m + arrayData[pos])*m + arrayData[pos+1])*m + arrayData[pos+2])*m + arrayData[pos+3])*m
				+ arrayData[pos+4])*m + arrayData[pos+5])*m + arrayData[pos+6])*m + arrayData[pos+7])*m
				+ arrayData[pos+8])*m + arrayData[pos+9]) % maxSeed;
  pos = pos + 10;
end

Второй код выполняется примерно в 8 раз быстрее.
25 мар 19, 16:05    [21842932]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47264

WildSery
Второй код выполняется примерно в 8 раз быстрее.

Маловато. Должен был бы выполняться в 10 раз быстрее как минимум, ибо остаток от деления -
дорогое удовольствие.

Posted via ActualForum NNTP Server 1.5

25 мар 19, 17:52    [21843034]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
rdb_dev,

ты для начала подумай вот о чём. Любой SQL сейчас и так при препарировании преобразуется в BLR. Насколько увеличится время prepare если там будет твоя компиляция?
25 мар 19, 17:57    [21843040]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2628
Симонов Денис
rdb_dev,

ты для начала подумай вот о чём. Любой SQL сейчас и так при препарировании преобразуется в BLR. Насколько увеличится время prepare если там будет твоя компиляция?
О prepare я уже всё написал 21838410:
rdb_dev
Конечно, при хранении в метаданных объектных файлов с машинным кодом, в которых будут находится скомпилированные хранимые процедуры и триггеры, придётся, также, хранить атрибуты с идентификаторами архитектуры, семейства процессоров, а также уровнем оптимизации, использованные при компиляции конкретного объектного файла и при несовпадении этих атрибутов с идентифицируемыми через операционную систему (идентификаторы архитектуры и семейства процессоров) и конфигурационный файл сервера (уровень оптимизации), серверу необходимо будет перекомпилировать объектный файл налету.

Единственное, в чём может быть вредно подобное использование машинного кода, так это в компиляции клиентских запросов, которые, как правило, невелики и в этом случае, оверхед на prepare - компиляцию запроса с вызовом компилятора LLVM, выделение страниц памяти, пометка этих страниц как исполняемых, помещение в эти страницы объектного файла со связыванием вызовов с функциями сервера и используемых в запросе таким же способом скомпилированных хранимых процедур, вероятнее всего перекроет выигрыш от использования машинного кода, если подготовленный запрос не будет использоваться достаточно часто, чтобы отыграть эти потери.
25 мар 19, 18:22    [21843057]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Tonal
Member

Откуда: Новосибирск
Сообщений: 152
dimitr
Tonal
возможно серьёзное ускорение выполнения чисто расчётных мест в PSQL

вооооот! И сколько таких мест в PSQL, которые не работают с таблицами и при этом сильно грузят ЦПУ? 1%? 5%?

Проверка чеков, вычисляемые поля - всё это можно скомпилить в натив.
Ну и в процедурах и триггерах изрядно мест найдётся.
Тут давича кто-то расстояние ливенштеёна считать хотел, и периодично появляются процедуры с парсерами то просто списков, а то вовсе каких JSONов али XMLев. :)

Ну и в пределе вовсе от BLR отказатся - сразу компилить в LLVM IR.
27 мар 19, 18:24    [21845323]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29780

27.03.2019 18:24, Tonal пишет:
> Ну и в пределе вовсе от BLR отказатся - сразу компилить в LLVM IR.

это, как его.. ВОЛЮНТАРИЗЪМ! (С)

даже в Оракеле не отказались.
а там есть такая возможность (компилить).
но вот чтоб кто-то реально это юзал...
у меня лично такой информации нет.
видимо уж больно специфичная ниша,
типа пресловутого Interbase на Абрамсах...

Posted via ActualForum NNTP Server 1.5

27 мар 19, 18:44    [21845339]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2628
Tonal
Как это может быть сделано?
Пишется транслятор из BLR в IR.
Далее или запускается статическая компиляция IR в машкод конкретного процессора для выполнения, либо выполнение передаётся самой LLVM с JIT.
Зачем компилятор из BLR в IR? Я предлагал из исходника ХП/триггера компилировать SQL->LLVM IR->COFF (т.е. нужен front-end не для BLR->LLVM IR, а для SQL->LLVM IR), а уже COFF помещать в метаданные с сохранением в метаданных атрибутов: семейство процессоров, архитектура, уровень оптимизации. Таким образом, при совпадении атрибутов из метаданных с определяемыми динамически на запускаемой платформе, достаточно разместить COFF в памяти и связать с функциями сервера и другими ХП/триггерами, на которые есть ссылки из COFF. При несовпадении атрибутов - произвести компиляцию SQL->LLVM IR->COFF, записать результат в метаданные и далее по схеме.
28 мар 19, 11:10    [21845861]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47264

rdb_dev
нужен front-end не для BLR->LLVM IR, а для SQL->LLVM IR

Вот и чудненько, займись. Синтаксическую диаграмму PSQL, как я уже говорил, можешь взять
готовую.

Posted via ActualForum NNTP Server 1.5

28 мар 19, 13:57    [21846085]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
Dimitry Sibiryakov,

не, он только поболтать :)
28 мар 19, 14:06    [21846094]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
rdb_dev
Member

Откуда: с болот
Сообщений: 2628
Dimitry Sibiryakov
rdb_dev
нужен front-end не для BLR->LLVM IR, а для SQL->LLVM IR
Вот и чудненько, займись. Синтаксическую диаграмму PSQL, как я уже говорил, можешь взять готовую.
Чтобы этим заняться, для начала необходимо хорошо ориентироваться в исходниках сервера.
28 мар 19, 14:31    [21846131]     Ответить | Цитировать Сообщить модератору
 Re: Конкурс идей про Firebird  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47264

rdb_dev
для начала необходимо хорошо ориентироваться в исходниках сервера.

Не надо. Для начала Просто возьми parse.y и прикрути к LLVM компиляцию PSQL в нативный код
UDR.

Posted via ActualForum NNTP Server 1.5

28 мар 19, 14:37    [21846140]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 26 27 28 29 30 31 32 33 34 [35]
Все форумы / Firebird, InterBase Ответить