184 похожих чатов

Всем привет! Пост на тему: Как мы тестировали производительность дисковой подсистемы CH. Или

битва между железным RAID и mdraid.

Есть 3 сервера. В каждом 24 sas hdd 10k rpm.
Пытаемся выбрать оптимальный RAID массив.
Приоритет на чтение.

Диски поделили так.
2 - система. Зеркало.
2 - spare.
20 - CH
Остановились на 3х конфигурациях.
1. mdraid 2xRAID_6(10 дисков) - ClickHouse JBOD.
2. mdraid RAID_60(20 дисков)
3. HW Adaptec RAID_60(20 дисков)

Сначала тестируем с помощью fio
Вот такая команда на чтение и такая же на запись:
fio --directory=/home --name=test --rw=read --bs=1m --size=10G --numjobs=1 --time_based --runtime=60 --group_reporting --ioengine libaio --iodepth=32 --buffered=0 --direct=1

Получаем. Чтение/Запись
1(soft 2xRAID_6_JBOD). 2300/400 x 2. Т.к. два независимых массива. Тест запущен одновременно.
2(soft RAID_60). 3900/700
3(hard RAID_60). 3500/2600

Тут очевидно, что железный RAID вне конкуренции.
Но помним старые комментарии уважаемых камрадов, что mdraid кладёт железные массивы на обе лопатки.

Надо придумать, как тестировать в самом CH.
Попробовали такое решение.

Тестирование записи:
echo "insert into default.tmp_experiment select today(), * from system.numbers limit 100000000" | clickhouse-benchmark -i 100 -c 10
Ставим лимит в 3000 партов и играем с параметром -c, чтобы мержи успевали пройти.
У меня получилось 15 потоков на железный raid, 20 потоков на soft.
Скорость пока удалось замерить только для конфигураций 1 и 3. Приведу ниже.

Тестирование чтения:
Многократным запуском предыдущего теста, получил таблицу в 300 Гб.
Тестировал 2 запроса, запускал в 4 потока:
1. SELECT avg(integers) FROM default.tmp_experiment SETTINGS min_bytes_to_use_direct_io = 1;
2. SELECT avg(integers) FROM default.tmp_experiment;

Результаты 1(soft 2xRAID_6_JBOD):
Запись 1.15 GB/s.
Чтение 1й запрос. Clickhouse показывает:
Progress: 4.60 billion rows, 36.77 GB (118.82 million rows/s., 950.58 MB/s.)
iotop: 1,7GB/s

Чтение 2й запрос. Clickhouse показывает:
Progress: 13.96 billion rows, 111.71 GB (402.27 million rows/s., 3.22 GB/s.)
iotop: 2Gb/s

Результаты 3(hard RAID_60). 3500/2600
Запись 1,6 GB/s
Чтение 1й запрос. Clickhouse показывает:
Progress: 710.15 million rows, 5.68 GB (77.68 million rows/s., 621.48 MB/s.)
iotop: 1 GB/s

Чтение 2й запрос. Clickhouse показывает:
Progress: 13.83 billion rows, 110.61 GB (291.97 million rows/s., 2.34 GB/s.)
iotop: 1,1 GB/s

При такой методике тестирования, mdraid почти в 2 раза быстрее на чтение. Но проигрывает при записи.
Кстати, процессор в 4 потока загружен на 100% и при железном и при софтовом raid.
На софтовом 50/50 usr/sys
На хардовом 50/50 usr/wait

Как считаете, такая методика тестирования даёт достаточно приближенный к реальности результат?

1 ответов

6 просмотров

Я тестирую на чтении. Типа есть колонка на сотни гигабайт рандомных чисел и я ищу там значение=42

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Есть Pipeline для GitLab Runner (executor = "shell") В нём есть: default: before_script: - set -eo pipefail - source "$(~/bin/trdl use werf 2 stable)" - source...
Aleksandr Karabanov
1
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
Карта сайта