⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.

Manticore 2.8.2 vs 3.0 - 2x faster in some tests

Как вы, вероятно, знаете, недавно был выпущен новый релиз Manticore 3.0 был выпущен .

В этом бенчмарке посмотрим, лучше ли он, чем 2.8. Окружение теста было следующим:

  • подборка комментариев Hacker News 2016 года в формате CSV
  • OS: Ubuntu 18.04.1 LTS (Bionic Beaver), ядро: 4.15.0-47-generic
  • CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz, 8 ядер
  • 32 ГБ ОЗУ
  • HDD
  • Docker версии 18.09.2
  • Базовый образ для индексации и searchd — Ubuntu:bionic
  • stress-tester для бенчмаркинга

Конфигурация идентична для обеих версий Manticore:

source full
{
  type = csvpipe
  csvpipe_command = cat /root/hacker_news_comments.prepared.csv|grep -v line_number
  csvpipe_attr_uint = story_id
  csvpipe_attr_timestamp = story_time
  csvpipe_field = story_text
  csvpipe_field = story_author
  csvpipe_attr_uint = comment_id
  csvpipe_field = comment_text
  csvpipe_field = comment_author
  csvpipe_attr_uint = comment_ranking
  csvpipe_attr_uint = author_comment_count
  csvpipe_attr_uint = story_comment_count
}

index full
{
  path = /root/idx_full
  source = full
  html_strip = 1
  mlock = 1
}

searchd
{
  listen = 9306:mysql41
  query_log = /root/query.log
  log = /root/searchd.log
  pid_file = /root/searchd.pid
  binlog_path =
  qcache_max_bytes = 0
}

Индексация

Индексация заняла 1303 секунды для Manticore 3.0 и 1322 секунды для Manticore 2.8.2:

Manticore 3.0:

indexing index 'full'...
collected 11654429 docs, 6198.6 MB
creating lookup: 11654.4 Kdocs, 100.0% done
creating histograms: 11654.4 Kdocs, 100.0% done
sorted 1115.7 Mhits, 100.0% done
total 11654429 docs, 6198580642 bytes
total <b>1303.470</b> sec, 4755444 bytes/sec, 8941.07 docs/sec
total 22924 reads, 16.605 sec, 238.4 kb/call avg, 0.7 msec/call avg
total 11687 writes, 13.532 sec, 855.1 kb/call avg, 1.1 msec/call avg

Manticore 2.8:

indexing index 'full'...
collected 11654429 docs, 6198.6 MB
sorted 1115.7 Mhits, 100.0% done
total 11654429 docs, 6198580642 bytes
total <b>1322.239</b> sec, 4687939 bytes/sec, 8814.15 docs/sec
total 11676 reads, 15.248 sec, 452.6 kb/call avg, 1.3 msec/call avg
total 9431 writes, 12.800 sec, 1065.3 kb/call avg, 1.3 msec/call avg

индексация в 3.0 быстрее, чем в 2.8, примерно на ~1,5%.

Тесты производительности


Обе инстанции были прогреты перед тестированием.

Manticore 3.0:

total 4.7G
drwx------ 2 root root 4.0K May 14 17:41 .
drwxr-xr-x 3 root root 4.0K May 14 17:40 ..
-rw-r--r-- 1 root root 362M May 14 17:24 idx_full.spa
-rw-r--r-- 1 root root 3.1G May 14 17:36 idx_full.spd
-rw-r--r-- 1 root root  90M May 14 17:36 idx_full.spe
-rw-r--r-- 1 root root  628 May 14 17:36 idx_full.sph
-rw-r--r-- 1 root root  29K May 14 17:24 idx_full.sphi
-rw-r--r-- 1 root root 6.5M May 14 17:36 idx_full.spi
-rw------- 1 root root    0 May 14 17:41 idx_full.spl
-rw-r--r-- 1 root root 1.4M May 14 17:24 idx_full.spm
-rw-r--r-- 1 root root 1.1G May 14 17:36 idx_full.spp
-rw-r--r-- 1 root root  59M May 14 17:24 idx_full.spt

Manticore 2.8:

total 4.6G
drwx------ 2 root root 4.0K May 16 18:38 .
drwxr-xr-x 3 root root 4.0K May 14 17:43 ..
-rw-r--r-- 1 root root 362M May 14 17:24 idx_full.spa
-rw-r--r-- 1 root root 3.1G May 14 17:36 idx_full.spd
-rw-r--r-- 1 root root  27M May 14 17:36 idx_full.spe
-rw-r--r-- 1 root root  601 May 14 17:36 idx_full.sph
-rw-r--r-- 1 root root 6.3M May 14 17:36 idx_full.spi
-rw-r--r-- 1 root root    0 May 14 17:24 idx_full.spk
-rw------- 1 root root    0 May 16 18:38 idx_full.spl
-rw-r--r-- 1 root root    0 May 14 17:24 idx_full.spm
-rw-r--r-- 1 root root 1.1G May 14 17:36 idx_full.spp
-rw-r--r-- 1 root root    1 May 14 17:36 idx_full.sps

Тест 1 — время обработки топ‑1000 терминов из коллекции

Для начала просто запустим простой тест — сколько времени требуется, чтобы пройтись по топ‑1000 часто встречающихся терминов коллекции и найти все документы для каждого:

Результаты таковы: 77,61 секунды для Manticore 2.8 и 71,79 секунды для Manticore 3.0.

В этом тесте Manticore Search 3.0 быстрее предыдущей версии на 8%.

Тест 2 — топ‑1000 часто встречающихся терминов из коллекции, разбитых по группам (топ 1‑50, топ 50‑100 и т.д.)

Теперь посмотрим, лучше ли 3.0 в обработке терминов из разных групп частот. Ниже вы найдёте несколько случайных примеров из каждой группы:

1-5050-100100-150150-200200-250250-300
одинмногонашкаждыйменьшеплатить
сдействительновбездругойпонимать
былдругойвсе ещевнизужевсе
300-350350-400400-450450-500500-550550-600
поискразработчикисоздаватьинтересобщийкомпания
причинацелыйданныйпыталсямодельофис
ничегоимядрузьядоступколичествооплачено
600-650650-700700-750750-800800-850850-900
управлениесамичерезpgбумагаядро
связанныймаркетингвыученныймнениевыбратьвысоко
идетесли несообщениярисксильныйтрафик
900-950950-1000
мыслиприличный
интерфейсмолодой
ответанглийский


Manticore 2.8 в среднем быстрее, чем 3.0, на 0,4 % по задержке и обеспечивает на 0,5 % более высокий пропускной способность. Это находится в пределах диапазона погрешности.

Тест 3 — топ‑1000 часто встречающихся терминов из коллекции, разбитых по группам + 1 термин из группы 1‑100

Посмотрим, как это работает, когда у вас есть один очень частый термин и другой менее частый из разных групп частот. Примеры следующие:

1-5050-100100-150150-200200-250250-300
другой можетэто нетна надо егодолжен большойs всегда
нет естьмое использованиедругой почемубыл деньбыл датьих позволить
здесь некоторыебыли знатьs гденасколько уверенбыли большиездесь e
300-350350-400400-450450-500500-550550-600
кто разработчикэто книгасейчас одинне доступв решенииих назвали
работа началасьан ycombinatorот добавитьиспользовать сайтызнать microsoftв основном
в часысейчас значениетакже данокоторый построилчем мощностьранних
600-650650-700700-750750-800800-850850-900
знать наукудолжен маркетингдолжен детичислаих драйвкто сильно
если согласенодна минутаt постывремя pgтам выбратьимеет возможность
были бы связаныимеет странуполучить постыhttp образованиетакже чрезвычайномог бы тема
900-950950-1000
любая партияособенно на
только ответмогут компьютеры
люди firefoxо компьютерах


Manticore 3.0 показывает в среднем на 86.3% более высокий пропускной способность и на 109,5% более низкую 95‑процентную задержку.

Тест 4 - 1000 самых частотных терминов из коллекции, разбитых по группам + 1 термин из группы 1-100, оба термина заключены в кавычки, чтобы образовать фразу

1-5050-100100-150150-200200-250250-300
"работа не""вы их""мы всё ещё""свой""я получаю""мог бы запустить"
"мой для""самый""твоя работа""использовать получил""здесь плохо""тогда всегда"
"но то""получить ком""я первый""сейчас день""в помощь""затем делая"
300-350350-400400-450450-500500-550550-600
"это информация""их сообщество""одна забота""что мобильный""выйти счастливым""смотреть"
"ком сторона""этот сервер""ком позиция""в огромном""как остановить""s написано"
"он смотрит""был x""время стать""попытался""должен приходит""другие звуки"
600-650650-700700-750750-800800-850850-900
"через api""не скоро""t любопытный""было несколько""исправить""вещи абсолютно"
"из трёх""использовать приходящий""что не хватает""кто ui""имею понимание""большинство темы"
"действительно говорящий""создавать приложения""действительно среда""будет кто нанимает""дорого""больше ядра"
900-950950-1000
"просто фреймворк""это извините"
"рабочие ресурсы""хотеть выгоду"
"их ресурсы""s дальше"


Manticore v3 в среднем на 5.6% быстрее по пропускной способности и на 25.1% ниже по 95‑мильному времени отклика.

Тест 5 — по 2 термина из группы 600‑750 при разных уровнях одновременности

Этот тест направлен на демонстрацию разницы в пропускной способности при разных уровнях одновременности запросов. Несколько случайных примеров:

Примеры запросов: "talking view", "imagine 15", "curious term"


Итак, версия 3 быстрее при всех уровнях одновременности в среднем на 18% с средним 95‑мильным временем отклика ниже на 15%.

Тест 6 — 3‑5 терминов из разных групп

Теперь проверим производительность более длинных запросов.

  • 3 термина из групп 100‑200, 400‑500, 800‑900
  • 4 термина из групп 100‑200, 300‑400, 500‑600, 800‑900
  • 5 терминов из групп 100‑200, 300‑400, 500‑600, 800‑900, 900‑1000

Примеры запросов:

3 термина4 термина5 терминов
делает при плохомэтот поиск потрясающий фон

получил причину результаты взятые объявление

всегда пробовал историиработает снова комментарии ссылки

чувствуй процесс ситуация быстрее принести

![](95p-latency-of-3-5-terms-1-optimized.webp) ![](Throughput-of-3-5-terms-1-optimized.webp)

Версия 3 снова побеждает: пропускная способность — на 104% выше, а 95‑мильное время отклика — на 113% ниже.

ТЕСТ 7: 3 И термина из групп 300‑600 и 1 НЕ из 300‑400

Теперь добавим один НЕ‑термин к 3 И.

пропускная способность в v3 — на 33,3% выше, 95‑мильное время отклика — на 32% ниже.

Выводы

Новая версия демонстрирует значительно более высокую производительность во всех тестах, кроме теста №2, но разница там находится в пределах погрешности (0,4‑0,5%).

Тест полностью контейнеризован и открыт в нашем GitHub . Подробные результаты можно найти здесь . Мы будем признательны, если вы запустите те же тесты на своём оборудовании или внесёте вклад, добавив новые тесты в набор, и сообщите нам результаты.

Если вы обнаружите любую проблему или неточность, не стесняйтесь сообщить нам.

Спасибо за внимание!

throughput in v3 - 33.3% higher, 95p latency - 32% lower.

Conclusions

The new version demonstrates significantly higher performance in all the tests except for the test #2, but the difference there is within the error range (0.4-0.5%).

The test is fully dockerized and open sourced in our github . The detailed results can be found here We'll appreciate if you run the same tests on your hardware or contibute by adding more tests to the suite and let us know the results.
If you find any issue or inaccuracy don't hesitate to let us know.

Thank you for reading!

Установить Manticore Search

Установить Manticore Search