Рубрики
Uncategorized

AWS Graviton2 и Elasticsearch — первое впечатление

Возможно, вы заметили, что есть много шума о ARM VS X86. Я бы сказал в основном из-за нового Mac Bo … Теги от AWS, Elasticsearch, DevOps, Performance.

Возможно, вы заметили, что есть много шума о ARM VS X86. Я бы сказал главным образом из-за новых MacBook с Apple Clibon. Но если вы являетесь пользователем AWS, вы, возможно, заметили, что Amazon некоторое время Amazon на базе EC2 на какое-то время.

Мотивация

На данный момент существует 2-го поколения AWS Graviton Processors и доступны экземпляры EC2 T4G, M6G, C6G и R6G и их варианты с локальным хранением SSD на основе NVME, которые обеспечивают до 40% лучшей ценовой производительности над сопоставимым током поколения X86- Основанные экземпляры [1]. Из моих SRE/DEVOPS инженера перспективы потенциал 40% снижение AWS EC2 Билла кажется очень интересным.

В нашей компании Big Portion нашего EC2 используется для запуска Elasticsearch. В течение 2020 года мы смогли переместить большинство нашего сервера на elasticsearch 7, поэтому тот факт, что поскольку elasticsearch 7.8.0 ARM и архитектура Aarch64 официально поддерживается [2], была для нас довольно интересными новостями. Мне кажется лучшим вариантом, чтобы начать тестирование экземпляров руки в нашей инфраструктуре на Elasticsearch, потому что:

  1. Поддерживается (нам не нужно строить версию ARM на себя)
  2. У нас есть много серверов Elasticsearch (одно развертывание может охватывать большую часть инфраструктуры)
  3. Elasticsearch распределен (вы можете начать с 1 сервера в кластере и медленно продолжить в преобразовании)
  4. Elasticsearch выполняет множество параллельных задач, поэтому он может воспользоваться реальными физическими ядрами вместо логических ядер (одновременная многопоточность в чипсах Intel и AMD X86)

Настраивать

Я обнаружил, что есть хороший ориентирный инструмент для установки Elasticsearch Setup Esrally [3] С несколькими ориентирами для разных случаев использования [4] . Установите и запустите ориентир в настройках по умолчанию на Ubuntu 20.04 довольно легко.

Установить

sudo apt-get install build-essential python3-dev openjdk-11-jdk python3-pip
python3 -m pip install esrally --user

Бегать

AMD64.

export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
./.local/bin/esrally configure
./.local/bin/esrally --distribution-version=7.8.0

ARM64.

export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-arm64"
./.local/bin/esrally configure
./.local/bin/esrally --distribution-version=7.8.0

Экземпляры EC2

К моим тестам я решил использовать трек по умолчанию (ориентир) GeOnames С настройками по умолчанию. Инстанции семейств EC2 были T3 (Intel на основе X86), T3A (AMD на основе X86) и T4G (на основе ARM) Все они в среднем размере (2 ядра VCPU и 4 ГБ ОЗУ) с неограниченными кредитами ЦП. Выбранные EBS для всех экземпляров составляли 30 ГБ объемом GP3 с 3000 IOPS (COUNT IOPS по умолчанию для GP3). Расход памяти процесса Java был ~ 1,5 ГБ, поэтому 4 ГБ в порядке для рекомендуемого соотношения 50:50 между кучей и кэшем файлов [5] .

Intel Xeon Platinum 8000 4 2 $0.0456 3,1 ГГц T3.Medium.
AMD EPYC 7000. 4 2 $0.0408 2,5 ГГц T3A.Medium.
AWS Graviton2. 4 2 $0.0368 2,5 ГГц T4G.Medium.

* По требованию Европа (Ирландия) [6]

Результаты

Средняя пропускная способность (выше лучше)

Количество операций, которые Elasticsearch могут выполняться в течение определенного периода времени, обычно в секунду. [7]

индекс-приложение Документы / S. 16336.30 11865.30 20130.90
индекс-статистика OPS / S. 90.06 90.06 90.07
Узел-статистика OPS / S. 90.09 90.07 90.10
По умолчанию OPS / S. 50.04 50.04 50.04
срок OPS / S. 100.08 100.06 100.08
фраза OPS / S. 110.06 110.05 110.06
Country_agg_uncached OPS / S. 1.41 1.17 1.65
country_agg_cached. OPS / S. 100.05 100.04 100.05
прокручивать Страницы / С. 20.04 20.03 20.04
выражение OPS / S. 0.80 0.74 1.02
безболезненно_static OPS / S. 0.56 0.46 0.78
безболезненно_dynamic OPS / S. 0.58 0.47 0.78
decay_geo_gauss_function_score. OPS / S. 0.77 0.66 0.80
decay_geo_gauss_script_score. OPS / S. 0.73 0.61 0.80
field_value_function_score. OPS / S. 1.50 1.50 1.50
field_value_script_score. OPS / S. 1.23 1.10 1.50
cars_terms. OPS / S. 0.55 0.43 0.76
bard_filtered_terms. OPS / S. 0.55 0.47 0.81
bard_probited_terms. OPS / S. 0.56 0.48 0.84
desc_sort_population OPS / S. 1.50 1.50 1.50
asc_sort_population. OPS / S. 1.50 1.50 1.50
asc_sort_with_after_population. OPS / S. 1.50 1.50 1.50
desc_sort_geonameid OPS / S. 6.02 6.02 6.02
desc_sort_with_after_geonameId. OPS / S. 2.65 2.67 3.59
ASC_SORT_GEONAMEID OPS / S. 6.02 6.02 6.02
ASC_SORT_WITH_AFTER_GEONAMEID OPS / S. 3.19 3.17 4.22

90-е процентильное задержка (ниже лучше)

Период времени между представлением запроса и получение полного ответа. Он также включает в себя время ожидания, то есть время запроса протягивает ожидание до тех пор, пока он не будет готов к обслуживанию elasticsearch. [7]

индекс-статистика РС 4.56241 4.78031 4.44132
Узел-статистика РС 4.47714 5.34818 4.15083
По умолчанию РС 4.61649 5.09174 4.41905
срок РС 3.63299 4.28009 3.64795
фраза РС 5.17816 6.07525 4.47468
Country_agg_uncached РС 124891.00000 166506.00000 94687.30000
country_agg_cached. РС 3.34225 4.02981 3.04555
прокручивать РС 670.81900 765.98000 570.69700
выражение РС 217096.00000 247556.00000 138891.00000
безболезненно_static РС 320471.00000 431436.00000 179742.00000
безболезненно_dynamic РС 304484.00000 427699.00000 179525.00000
decay_geo_gauss_function_score. РС 89906.50000 150580.00000 74991.40000
decay_geo_gauss_script_score. РС 105799.00000 182819.00000 71880.20000
field_value_function_score. РС 633.79800 672.88200 445.35700
field_value_script_score. РС 43596.90000 71071.80000 608.36600
cars_terms. РС 266805.00000 412260.00000 117055.00000
bard_filtered_terms. РС 261997.00000 353390.00000 94404.30000
bard_probited_terms. РС 255688.00000 336764.00000 81920.80000
desc_sort_population РС 226.38900 300.21000 222.33700
asc_sort_population. РС 231.23700 346.52400 217.20900
asc_sort_with_after_population. РС 319.70900 441.59100 321.49400
desc_sort_geonameid РС 62.33390 85.29280 32.14760
desc_sort_with_after_geonameId. РС 61356.70000 60678.60000 32569.20000
ASC_SORT_GEONAMEID РС 22.83960 41.67980 16.00420
ASC_SORT_WITH_AFTER_GEONAMEID РС 42734.50000 43248.40000 20625.20000

90-е место процентиля (ниже лучше)

Период времени между началом запроса Обработка и получение полного ответа. Эта метрика может быть легко перепутана с Задержка Но не включает время ожидания. Это то, что большинство инструментов тестирования нагрузки относятся к «задержке» (хотя это неверно). [7]

индекс-статистика РС 2.93328 3.53074 2.61744
Узел-статистика РС 3.30236 4.06215 3.09698
По умолчанию РС 2.83038 3.68959 2.44764
срок РС 2.70983 3.10945 2.59679
фраза РС 4.11032 4.67643 3.54806
Country_agg_uncached РС 707.67700 847.52500 608.29600
country_agg_cached. РС 2.12763 2.60659 1.84201
прокручивать РС 665.93600 764.75300 568.91200
выражение РС 1249.61000 1364.56000 998.85400
безболезненно_static РС 1770.04000 2149.38000 1302.50000
безболезненно_dynamic РС 1723.03000 2135.88000 1305.81000
decay_geo_gauss_function_score. РС 1318.65000 1531.22000 1268.05000
decay_geo_gauss_script_score. РС 1373.07000 1635.57000 1257.33000
field_value_function_score. РС 632.53500 669.61300 443.95100
field_value_script_score. РС 821.20200 915.69800 607.47500
cars_terms. РС 1801.00000 2290.12000 1291.52000
bard_filtered_terms. РС 1788.23000 2092.46000 1213.08000
bard_probited_terms. РС 1767.71000 2038.35000 1166.24000
desc_sort_population РС 225.35300 298.99600 220.65600
asc_sort_population. РС 229.82800 345.71300 215.47500
asc_sort_with_after_population. РС 317.48400 440.44900 319.92900
desc_sort_geonameid РС 61.14970 83.03990 31.05030
desc_sort_with_after_geonameId. РС 380.07800 379.30000 295.56700
ASC_SORT_GEONAMEID РС 21.48470 39.62020 15.29170
ASC_SORT_WITH_AFTER_GEONAMEID РС 314.37000 316.44200 250.03600

Заключение

Соотношение средней пропускной способности (выше лучше)

T3.Medium. Как 1,00, линии, где пропускная способность была одинаковой для всех 3 экземпляров, были удалены.

Country_agg_uncached 1.0 0.83 1.17
выражение 1.0 0.93 1.28
безболезненно_static 1.0 0.82 1.39
безболезненно_dynamic 1.0 0.81 1.34
decay_geo_gauss_function_score. 1.0 0.86 1.04
decay_geo_gauss_script_score. 1.0 0.84 1.10
field_value_script_score. 1.0 0.89 1.22
cars_terms. 1.0 0.78 1.38
bard_filtered_terms. 1.0 0.85 1.47
bard_probited_terms. 1.0 0.86 1.50
desc_sort_with_after_geonameId. 1.0 1.01 1.35
ASC_SORT_WITH_AFTER_GEONAMEID 1.0 0.99 1.32
средние значения 1.0 0.87 1.30

Давайте поговорим о задачах, где существует некоторая разница между экземплярами. Задачи с одинаковыми значениями, вероятно, ограничены CPU.

Мы можем видеть 87% производительности, когда мы сравним T3A.Medium с T3.Medium Отказ Это, вероятно, ожидается, что поскольку рацион между 2,5 ГГц для AMD и 3,1 ГГц для Intel составляет ~ 81%. Обе значения предназначены для тактовой скорости Turbo CPU, поэтому реальная тактовая частота может быть немного отличной и может быть небольшая разница в IPC. Цена T3A.Medium 90% T3.Medium. Таким образом, производительность на цену незначительно в пользу экземпляров на основе Intel.

Теперь интересная часть T4G.Medium против T3.Medium Отказ На 30% больше возможностей для рук достаточно удивительны для меня, и когда мы объединяем это с более низкой ценой на 20%, производительность на цену удивительна. Трудно сказать, сколько может эластично использовать пользу от SMT на Intel и AMD-процессоры против настоящих ядер на AWS Graviton2, но это может быть объяснение, почему экземпляр Graviton2 имеет 30% более высокой оценки, чем Intel, а на 50% больше, чем AMD. Я с нетерпением жду возможности делать больше тестов и, возможно, попробуйте добавить несколько Graviton2 в наш нынешний эластичный поиск кластер для проверки некоторых сценариев реального мира.

Источники

[1] https://aws.amazon.com/ec2/graviton/

[2] https://www.elastic.co/blog/elasticsearch-on-arm.

[3] https://github.com/elastica/rually

[4] https://github.com/elastic/rally-tracks

[5] https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#heap-size-settings

[6] https://aws.amazon.com/ec2/pricing/on-demand/

[7] https://esraly.readtheDoc.io/en/stable/summary_report.html.

Оригинал: «https://dev.to/brabemi/aws-graviton2-and-elasticsearch-the-first-impression-5c46»