Manticore 2.8.2 против 3.0 - в 2 раза быстрее в некоторых тестах

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

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

Конфигурация идентична для обеих версий 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
другие могутнетнаодолжен большойс когда-либо
нетмой использоватьдругие почемуимел деньимел датьим позволить
здесь некоторыебыли знатьгдекак увереныбыли большимиздесь е
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% более низкую 95p задержку.

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

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


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

Тест 5 - 2 термина из группы 600-750 при различных конкуренциях

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

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


Таким образом, версия 3 быстрее при всех конкуренциях в среднем на 18% с средней 95p задержкой ниже на 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 терминов
doing under poorthese search awesome background

got reason results taken ad

always tried storiesworking again comment links

feel process situation faster bring

job text cardgoogle number network function

going days browser known salary


Версия 3 снова выигрывает: пропускная способность - на 104% выше с 113% ниже 95p задержкой.

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

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


пропускная способность в v3 - на 33.3% выше, 95p задержка - на 32% ниже.

Выводы

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

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

Спасибо за чтение!

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

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