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

Manticore 2.8.2 vs 3.0 — в некоторых тестах вдвое быстрее

author image
View as markdown

Как вы, вероятно, знаете, недавно вышел новый релиз 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
onemuchoureverylesspay
withreallyintowithoutanotherunderstand
wasotherstilldownalreadyeveryone
300-350350-400400-450450-500500-550550-600
searchdeveloperscreateinterestgeneralco
reasonwholegiventriedmodeloffice
nothingnamefriendsaccessamountpaid
600-650650-700700-750750-800800-850850-900
managementthemselvesacrosspgpapercore
relatedmarketinglearnedopinionpickhighly
goesunlesspostsriskstrongtraffic
900-950950-1000
thoughtsdecent
interfaceyoung
responseenglish


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

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

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

1-5050-100100-150150-200200-250250-300
other canthe noon overabout hisshould bigs ever
no aremy useother whyhad dayhad givethem let
here somebeen knows wherehow surebeen bighere e
300-350350-400400-450450-500500-550550-600
who developerit booknow singlenot accessat solutiontheir called
work startedan ycombinatorfrom adduse sitesknow microsoftas mostly
at hoursnow valuealso givenwhich builtthan powerof early
600-650650-700700-750750-800800-850850-900
know scienceshould marketingshould kidsthe numberstheir drivewho highly
if agreean minutest poststime pgthere pickhas opportunity
would relatedhas countryget postshttp educationalso extremelycould topic
900-950950-1000
any partyon particularly
only responsecould computers
people firefoxabout computers


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

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

1-5050-100100-150150-200200-250250-300
"work not""you their""we still""s own""me getting""could run"
"my for""the very""your job""use got""here bad""then ever"
"but that""get com""i first""now day""up help""then making"
300-350350-400400-450450-500500-550550-600
"it information""them community""1 care""what mobile""out happy""to watch"
"com side""this server""com position""at huge""how stop""s written"
"he looks""was x""time become""the tried""should comes""other sounds"
600-650650-700700-750750-800800-850850-900
"by api""don soon""t curious""was multiple""of fix""things absolutely"
"of three""use coming""that lack""who ui""ve understanding""most topic"
"really talking""make applications""really environment""will whoishiring""at expensive""more core"
900-950950-1000
"just framework""it sorry"
"work resources""want benefit"
"their resources""s further"


Manticore v3 в среднем на 5.6% выигрывает по пропускной способности, а его задержка 95-го перцентиля ниже на 25.1%.

Тест 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.png) ![](Throughput-of-3-5-terms-1.png)

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

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

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

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

Выводы

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

ТЕСТ 7: 3 И terms из групп 300-600 и 1 НЕ из 300-400

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

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

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 одной командой в Linux или macOS:

curl https://manticoresearch.com | sh

Для расширенных вариантов установки см. полное руководство по установке и документацию .

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