Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Классический пинбол, как в древнем игровом автомате или в компактной игрушке: есть пружины, шарики и препятствия. В нашем варианте можно не только зарабатывать очки: чтобы пройти уровень, придется выполнить дополнительную миссию.

Пинбол Пикабу

Аркады, На ловкость, Казуальные

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
2
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL⁠⁠

Взято с основного технического канала Postgres DBA ( возможны правки и дополнения в исходной статье ).

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Оптимизировать можно до бесконечности. Бесконечность - не предел.

Постановка задачи

Начало работ по использованию результатов корреляционного анализа ожиданий СУБД для подготовке процесса Continual improvement .

Постановка эксперимента

Провести тестирование результатов корреляционного анализа ожиданий на продуктивной СУБД по инцидентам производительности в течении недели .

Конфигурация ВМ и СУБД

  • Postgres Pro (enterprise certified) 15.10.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Soft 11.4.0-1), 64-bit

  • CPU 50

  • RAM 88GB

  • RED OS 7.3

Приоритеты инцидентов

Подробнее о приоритетах

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - инцидент производительности СУБД . Ось Y - приоритет инцидента

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - инцидент производительности СУБД . Ось Y - приоритет инцидента

Результат

  • свыше 80% инцидентов производительности имеют приоритет 4

Количество SQL запросов по инцидентам

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - queryid запроса. Ось Y - количество инцидентов в которых участвовал запрос.

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - queryid запроса. Ось Y - количество инцидентов в которых участвовал запрос

SQL запросы участвующие в более 80% инцидентов

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - queryid запроса. Ось Y - количество инцидентов в которых участвовал запрос.

  • Количество SQL запросов участвующих во всех инцидентах = 5

  • Количество SQL запросов участвующих в 80% инцидентов = 29

Ожидания СУБД

wait_event_type

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - тип ожидания СУБД . Ось Y - количество ожиданий

wait_event

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - событие ожидания. Ось Y - количество событий ожиданий

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

События ожидания составляющие 80% от общего числа ожиданий.

SQL запросы для оптимизации

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Список SQL запросов участувующих в инцидентах

queryid = 1214551160677155501

План выполнения запроса

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Статистика ожиданий по типу IO

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

События ожидания по типу IO

История выполнения и событий ожидания по типу IO для queryid = 1214551160677155501

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - количество выполнений запроса.

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - количество событий ожидания DSMFillZeroWrite

Статистика ожиданий по типу IPC

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

События ожидания по типу IPC

История выполнения и событий ожидания по типу IPC для queryid = 1214551160677155501

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - количество выполнений запроса.

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - количество событий ожидания BgWorkerShutdown

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - количество событий ожидания ExecuteGather

PG_HAZEL : Процесс оптимизации производительности СУБД PostgreSQL Субд, Postgresql, Оптимизация, Мониторинг, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - количество событий ожидания ParallelFinish

Результаты анализа по SQL queryid = 1214551160677155501

1. Событий ожидания типа IPC существенно больше чем событий по типу IO.

2. На основании результатов проведенных ранее экспериментов , принято решение добавить индекс в таблицу для решения проблемы большого количества ожиданий типа IPC.

3. После добавления индексов , провести анализ результатов .

Показать полностью 19
[моё] Субд Postgresql Оптимизация Мониторинг Производительность Длиннопост
0
1
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Ожидания IPC при отсутствии индекса в СУБД PostgreSQL⁠⁠

Симптомы

При высокой нагрузке на СУБД при выполнении SELECT , возможны массовые ожидания IPC/BgWorkerShutdown.

Ожидания IPC при отсутствии индекса в СУБД PostgreSQL Субд, Postgresql, Производительность, Оптимизация, Текст, Яндекс Дзен (ссылка)

Причина

Параллельное последовательное сканирование: блоки таблицы будут разделены на диапазоны, распределяемые между взаимодействующими процессами.

Исправление

Создание индекса по полю, участвующему в запросе , в плане выполнения которого используется Workers Planned - Workers Launched.

Подробнее

PG_HAZEL : ожидания СУБД PostgreSQL при отсутствии индексов.

Показать полностью
[моё] Субд Postgresql Производительность Оптимизация Текст Яндекс Дзен (ссылка)
0
17
KDvinsky
KDvinsky
3 месяца назад

Мигрантозамещение – неотъемлемая часть импортозамещения⁠⁠

В 2022 году в России началось реальное, а не декларируемое импортозамещение. Серьезные успехи достигнуты в разработке и внедрении отечественных IT-продуктов, транспортном машиностроении, химической промышленности, ряде направлений легкпрома и даже в станкостроении.

Однако что такое труд мигрантов? Это зависимость от иностранной рабочей силы и вывод финансовых ресурсов за пределы страны. Концептуально нет особой разницы, покупаем ли мы американский Боинг, отправляя деньги в пользу американской корпорации или же завозим мигрантов из Средней Азии, отправляя деньги в солнечный Душанбе.

Мигрантозамещение – неотъемлемая часть импортозамещения Политика, Экономика, Россия, Мигранты, Импортозамещение, Промышленность, Производство, Производительность, Занятость, Российское производство

Только развитие российского самолетостроения находится в абсолютном приоритете у Правительства. Медленно, но верно дорабатываются МС-21 и SSJ-NEW. Да, постоянно возникают те или иные проблемы, но цель поставлена, а работа идет. И нет сомнений, что рано или поздно в русском небе будут летать только наши самолеты.

Но проблеме засилья мигрантов такого же внимания не уделяется. Речь идет даже не о печальных социальных последствиях и прямой угрозе национальной безопасности России. Возьмем сугубо экономический аспект.

Мигранты – низкоквалифицированная рабочая сила, которая тормозит технологическое развитие нашей экономики. Возможность нанять представителей Средней Азии дестимулирует предприятия вкладываться в автоматизацию и роботизацию выпуска товаров и услуг. Несмотря на распространенный миф, в России нет никакого количественного дефицита трудовых ресурсов. Да, есть большой недостаток квалифицированных и высококвалифицированных кадров. Они, действительно, нужны, но такие "иностранные специалисты" к нам не едут.

А вот засилье низкоквалифицированных гастарбайтеров огромно. Согласно расчетам Дмитрия Белоусова, если Россия выйдет на такой же уровень производительности труда, который есть в Италии, то у нас сократится до 25 млн рабочих мест. И сделать это можно буквально за пять лет. В том числе, полностью отказавшись от труда мигрантов за исключением точечных историй, где должен действовать оргнабор.

Поэтому полноценный процесс импортозамещения не может обойтись без мигрантозамещения – отказа от иностранной рабочей силы. Учитывая всю серьезность вопроса, данное направление можно было бы выделить в отдельные федеральный проект "Мигрантозамещение".

Не забываем ставить лайк :)
Подписывайтесь, чтобы ничего не пропустить!

Показать полностью 1
Политика Экономика Россия Мигранты Импортозамещение Промышленность Производство Производительность Занятость Российское производство
34
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr⁠⁠

Взято с основного технического канала Postgres DBA ( возможны правки и дополнения в исходной статье ).

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

У любого события есть причина .

Задача

Определить причину аномальной утилизации CPU и снижения производительности СУБД

Симптомы

Аномальная утилизация CPU сервера СУБД

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - метрика утилизации CPU.

Наблюдаемая проблема

Снижение операционной скорости СУБД

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - операционная скорость СУБД

Корреляционный анализ

Отрицательная корреляция между снижением операционной скорости и ростом ожиданий - отсутствует.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - ожидания СУБД

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Ось X - точка времени. Ось Y - значение индикатора деградации скорости СУБД

Подробнее об индикаторе

https://dzen.ru/a/Z-FQYUcB3gepNYzA

Отчеты pgpro_pwr

G.3.11.2. Load distribution (Распределение нагрузки)

Этот раздел отчёта pgpro_pwr основан на представлении pgpro_stats_totals расширения pgpro_stats, если оно было доступно в течение отчётного интервала. Каждая таблица в данном разделе предоставляет данные за отчётный интервал о распределении нагрузки для определённого типа объектов, для которых собирается агрегированная статистика, например, баз данных, приложений, узлов или пользователей. Каждая таблица содержит по одной строке для каждого из ресурсов (таких, как общее время или общее число записанных разделяемых блоков), где распределение нагрузки показано на графике в виде линейчатой диаграммы с накоплением для объектов с наибольшей нагрузкой по этому ресурсу. Если область диаграммы, соответствующая объекту, слишком узка для включения заголовков, наведите указатель на эту область, чтобы получить подсказку с заголовком, значением и процентом. Таблицы «Load distribution among heavily loaded databases», «Load distribution among heavily loaded applications», «Load distribution among heavily loaded hosts» и «Load distribution among heavily loaded users» показывают распределение нагрузки для соответствующих объектов.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Наибольшую нагрузку создает DB-1

Статистика утилизации CPU

G.3.11.4.1. rusage statistics (Статистика использования ресурсов)

Этот раздел добавляется в отчёт, только если в отчётном интервале было доступно расширение pgpro_stats или pg_stat_kcache.

Таблица отчёта «Top SQL by system and user time» показывает запросы с наибольшей суммой значений полей user_time и system_time в представлении pg_stat_kcache или pgpro_stats_totals.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

SQL запрос с наибольшим потреблением CPU

Наиболее длительные SQL

Таблица отчёта «Top SQL by execution time» показывает запросы с наибольшей длительностью выполнения, определяемой по значению поля total_time представления pgpro_stats_statements или pg_stat_statements.

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

SQL запрос с наибольшей длительностью выполнения

Причина инцидента и проблемный запрос

Определение причины снижения производительности СУБД с использованием pg_hazel и pgpro_pwr Инженер, Субд, Postgresql, Мониторинг, Производительность, Длиннопост

Проблемный запрос

Причина аномальной утилизации CPU и снижения операционной скорости СУБД является массовый вызов хранимой функции, требующей для выполнения высоких вычислительных ресурсов.

Показать полностью 9
[моё] Инженер Субд Postgresql Мониторинг Производительность Длиннопост
2
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

Гипотеза об ожиданиях СУБД PostgreSQL⁠⁠

Взято с основного технического канала Postgres DBA ( возможны правки и дополнения в исходной статье ).

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

Время - деньги.

Определение ожидания СУБД

Серверный процесс выполняющий SQL запрос к СУБД, в процессе выполнения находится в основных состояниях:

· active: серверный процесс выполняет запрос.

· idle: серверный процесс ожидает новой команды от клиента.

· idle in transaction: серверный процесс находится внутри транзакции, но в настоящее время не выполняет никакой запрос.

Postgres Pro Enterprise : Документация: 15: 27.2. Система накопительной статистики : Компания Postgres Professional

Если, серверный процесс находится состоянии active, то процесс может находится в либо в состоянии выполнения запроса, либо в состоянии ожидания:

wait_event_type text

Тип события, которого ждёт обслуживающий процесс, если это ожидание имеет место; в противном случае — NULL.

Postgres Pro Enterprise : Документация: 15: 27.2. Система накопительной статистики : Компания Postgres Professional

Вывод

Чем меньше количество времени, в течении которого серверный процесс, выполняющий SQLзапрос к СУБД, имеет непустое событие ожидания, тем меньше времени серверный процесс находится в ожидании, тем быстрее завершится SQL запрос к СУБД и при многократном выполнении SQLзапросов - чем меньше ожиданий, тем больше запросов в единицу времени будет выполнено и больше полезной информации будет предоставлено клиенту.

Термины и определения:

Операционная скорость

Интегральный показатель, рассчитываемый как сумма общего числа выполненных SQL выражений и общего числа строк, полученных или затронутых операторами за выбранный промежуток времени.

Для сглаживания выбросов используется медианное сглаживание.

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - значение операционной скорости.

События ожидания в PostgreSQL

Информация о том, чего процесс базы данных ожидает, когда не выполняются активные запросы.

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

Ось X - точка наблюдения. Ось Y - общее количество ожиданий за отрезок наблюдения.

Коэффициент корреляции

Коэффициент корреляции в математической статистике — показатель, характеризующий силу статистической связи между двумя или несколькими случайными величинами.

Корреляция между операционной скоростью и ожиданиями

Коэффициент корреляции между значениями операционной скорости и событиями ожидания.

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

Ось X - значения операционной скорости за период наблюдения. Ось Y - значения ожиданий за период наблюдений.

Корреляция между ожиданиями

Коэффициент корреляции между всеми ожиданиями и событиями ожидания по определенному типу

Гипотеза об ожиданиях СУБД PostgreSQL Исследования, Субд, Postgresql, Производительность, Длиннопост

Ось X - значения ожиданий за период наблюдений. Ось Y - значения ожиданий типа IPC за период наблюдений.

Практический вывод

При постоянном сценарии нагрузки (неизменяемые SQL запросы) и при постоянных конфигурационных параметрах СУБД - коэффициент корреляции между значениями операционной скорости и количеством ожиданий определяет степень влияния событий ожидания на снижение операционной скорости.

При отсутствии влияния инфраструктуры (CPU, сеть), наибольшее влияние на снижение операционной скорости имеет тип ожидания, имеющее наибольшее значение коэффициента корреляции со всеми ожиданиями СУБД.

Следовательно – снизив количество ожиданий данного типа время выполнения SQL запроса уменьшится и количество запросов за отрезок времени увеличится. Т.е. операционная скорость возрастет.

Показать полностью 4
[моё] Исследования Субд Postgresql Производительность Длиннопост
0
7
AddictedToPi
AddictedToPi
3 месяца назад

"Моя мама умела мне объяснять так, что мне всегда становилось понятно"⁠⁠

"Моя мама умела мне объяснять так, что мне всегда становилось понятно" Картинка с текстом, Юмор, Производительность, Видеокарта, Telegram (ссылка)

Отсюда

Картинка с текстом Юмор Производительность Видеокарта Telegram (ссылка)
0
kznalp
kznalp
3 месяца назад
Postgres DBA
Серия СУБД PostgreSQL

PG_HAZEL - оперативно-тактический комплекс мониторинга и анализа производительности СУБД PostgreSQL⁠⁠

Взято с основного технического канала Postgres DBA ( возможны правки и дополнения в исходной статье ).

PG_HAZEL - оперативно-тактический комплекс мониторинга и анализа производительности СУБД PostgreSQL Субд, Postgresql, Производительность, Инженер, Исследования, Тестирование, Мониторинг

Скоро орешник даст плоды.

Начало

Эскизный проект

ℹ️Текущие возможности

✅Снимки pg_stat_activity , pg_locks , PostgreSQL RAM utilization.

✅Сбор статистических данных для оценки производительности на уровне СУБД.

✅Сбор статистических данных для оценки производительности на уровне SQL выражения.

✅История инцидентов снижения операционной скорости СУБД.

✅Связь между инцидентами и SQL выражениями.

✅Оперативная и сводная отчётность по инцидентам и нагрузочному тестированию.

✅Метрики оценки и мониторинга производительности СУБД.

✅Методология анализа инцидентов.

Показать полностью 1
[моё] Субд Postgresql Производительность Инженер Исследования Тестирование Мониторинг
0
Партнёрский материал Реклама
specials
specials

Разбираетесь в укладке теплого пола лучше, чем профи?⁠⁠

Проверьте, насколько вы круты в монтаже, и порадуйте котика.

Кот Ремонт Текст
19
0sennijLis
0sennijLis
3 месяца назад
Лига Сисадминов

Влияние максимального размера I/O-запросов на производительность систем Linux⁠⁠

В области оптимизации производительности Linux важнейшим фактором является производительность дискового ввода-вывода (I/O), которая существенно влияет на общую эффективность системы. Одним из ключевых параметров, влияющих на производительность дискового ввода-вывода, является максимальный размер I/O-запроса, определяемый параметром max_sectors_kb. Понимание и настройка этого параметра могут привести к значительному улучшению производительности системы. В этой статье мы рассмотрим понятие максимального размера I/O, его важность в системах Linux, а также его влияние на производительность в целом.

Понимание максимального размера I/O (max_sectors_kb)

Параметр max_sectors_kb определяет максимальный размер отдельного I/O-запроса в килобайтах. Он устанавливает объём данных, который может быть передан в рамках одного I/O-запроса. Значение параметра max_sectors_kb ограничено логическим размером блока файловой системы и аппаратными возможностями устройства хранения данных. Оно не может быть меньше логического размера блока, делённого на 1024, и не должно превышать значение параметра max_hw_sectors_kb, который является параметром только для чтения и показывает максимально поддерживаемый аппаратурой размер запроса.

Минимальное значение = max(1, logical_block_size/1024) 

Максимальное значение = max_hw_sectors_kb

Примечание: Максимальный размер I/O в Linux преимущественно применим к ядрам версии 4.x и выше. Рекомендуется проверить это в конкретном ядре вашей системы. Хотя впрочем очевидно - если у вас не какой-нибудь embedded, то ядро скорее всего будет выше 5.x

Важность в системах Linux

В Linux параметр максимального размера I/O существенно влияет на эффективность чтения и записи данных с устройств хранения. Он оказывает влияние на следующие аспекты производительности:

1. Баланс между пропускной способностью и задержками:

  • Пропускная способность (Throughput): Крупные размеры I/O-запросов увеличивают общую пропускную способность ввода-вывода за счёт обработки больших блоков данных за одну операцию. Это снижает накладные расходы на обработку множества мелких запросов, особенно эффективно при работе с последовательными потоками данных (видеостриминг, резервные копии баз данных).

  • Задержки (Latency): В то время как большие размеры I/O-запросов могут повысить пропускную способность для больших наборов наборов, они также могут увеличить задержку отдельных операций. Это происходит потому, что более крупные запросы требуют больше времени для завершения. Поэтому необходим баланс между улучшением производительности и допустимым уровнем задержек, особенно в чувствительных к задержкам интерактивных или real-time приложениях. В таких случаях предпочтительнее меньшие размеры запросов.

2. Использование CPU:

  • Увеличение размера запросов уменьшает нагрузку на CPU, поскольку снижается число переключений контекста и прерываний, связанных с обработкой отдельных запросов ввода-вывода.

3. Использование памяти:

  • Максимальный размер I/O влияет на объём выделяемой памяти под буферы ввода-вывода, что также отражается на общем использовании памяти системой.

Факторы, влияющие на максимальный размер I/O

Есть несколько факторов, которые влияют на максимальный размер запросов в Linux:

  • Аппаратные ограничения: Значение max_sectors_kb не должно превышать аппаратные возможности накопителя (значение параметра max_hw_sectors_kb). Превышение аппаратного лимита может привести к ошибкам или снижению производительности.

  • Драйверы устройств: Драйверы контроллеров хранения и накопителей могут задавать свои лимиты на размер запросов.

  • Ограничения файловых систем: У разных файловых систем разные лимиты на размер запроса ввода-вывода.

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

Бенчмаркинг и мониторинг

Для определения оптимального размера I/O-запросов необходимо проводить тестирование (бенчмарки) и мониторить показатели производительности (например, с помощью утилиты iostat).

Рекомендуется учитывать:

  • Red Hat советует, чтобы значение max_sectors_kb было кратно оптимальному размеру I/O и внутреннему размеру блока стирания устройства. Если таких данных нет, рекомендуется выставить значение, совпадающее с логическим размером блока устройства.

  • Характеристики рабочей нагрузки: разные приложения выигрывают от разных размеров I/O.

  • Особенности накопителя: HDD и SSD имеют разные оптимальные диапазоны размеров I/O.

  • Ресурсы системы: доступная память и мощность CPU влияют на выбор оптимального размера I/O.

Практические аспекты настройки

Для настройки max_sectors_kb используется команда:

/sys/block/{device}/queue/max_sectors_kb

Например:

echo 256 | sudo tee /sys/block/sda/queue/max_sectors_kb

Данная команда устанавливает максимальный размер запроса в 256 КБ для диска /dev/sda. Перед изменениями желательно протестировать настройки на тестовой системе во избежание негативного влияния на производительность или стабильность системы.

Изменения параметра действуют только до перезагрузки системы. Чтобы изменения сохранялись, добавьте команду в rc.local или настройте сервис для применения параметров при загрузке.

Практическое исследование

Рассмотрим практический сценарий. Создадим лабораторную среду на Linux-сервере и проверим производительность диска. Нагрузку (IOPS) будем генерировать с помощью инструмента fio, а мониторинг производительности проводить с помощью утилиты iostat. Наша задача — оценить влияние параметра max_sectors_kb на производительность системы.

Среда для тестирования:

  • Тип EC2-инстанса: c5.12xlarge

  • EBS-том:

  • тип: GP3

  • размер: 20 GiB

  • IOPS: 3000

  • пропускная способность: 750 MB/s

  • Операционная система: Amazon Linux 2

Проверка дисков и установка fio

Для начала проверим доступные диски:

Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост

Мы будем создавать нагрузку на диск nvme1n1 при помощи утилиты fio и параллельно мониторить производительность диска, в частности показатель IOPS. Если fio не установлен, используйте команды ниже:

Для Amazon Linux:

sudo yum install -y fio

Для Ubuntu:

sudo apt-get install -y fio

Запуск теста

Откройте два терминала одновременно:

Терминал 1: Генерируем нагрузку:

sudo fio --filename=/dev/nvme1n1 --rw=read --bs=256K --ioengine=libaio --direct=1 --name=volume-initialize

Терминал 2: Мониторим диск:

iostat 1 -d /dev/nvme1n1

Обратите внимание, что в команде fio мы задали размер запроса 256 KiB.

Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост
Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост

Наблюдения

На первом скриншоте видно, что утилита fio генерирует 1082 IOPS, однако утилита iostat показывает примерно 2164 IOPS (то есть в два раза больше).

Причина различий

Чтобы выяснить причину этого несоответствия, проверим значение параметра max_sectors_kb:

cat /sys/block/nvme1n1/queue/max_sectors_kb

Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост

Объяснение:

Инструмент fio создавал IOPS с размером 256 KiB, а max_sectors_kb был установлен на значение 128 KiB. В результате ядро Linux разбивало каждый запрос на два меньших запроса по 128 KiB каждый (256 KiB = 128 KiB × 2). Именно поэтому количество операций, регистрируемых iostat, было в два раза больше, чем указывал fio (1082 × 2 = 2164).

Важно: Увеличение числа запросов из-за неправильно настроенного max_sectors_kb может негативно повлиять на производительность сервера и привести к троттлингу производительности диска (например, EBS-тома), если число операций превышает базовый уровень IOPS.

Проверка максимального аппаратного лимита max_hw_sectors_kb

Проверим максимальное значение I/O, которое поддерживает наш сервер:

cat /sys/block/nvme1n1/queue/max_hw_sectors_kb

Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост

Результат: наш сервер поддерживает максимальный размер I/O-запроса в 256 KiB.

Попытка увеличения max_sectors_kb

Попробуем увеличить значение до 512 KiB:

echo 512 | sudo tee /sys/block/nvme1n1/queue/max_sectors_kb

Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост

Результат: Мы получили ошибку «Invalid argument» («Недопустимый аргумент»), так как указали значение, превышающее аппаратный лимит max_hw_sectors_kb.

Теперь установим допустимое значение 256 KiB:

echo 256 | sudo tee /sys/block/nvme1n1/queue/max_sectors_kb

Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост

Результат: Значение успешно изменено на 256 KiB.

Повторный запуск теста fio

Повторим тест командой:

sudo fio --filename=/dev/nvme1n1 --rw=read --bs=256K --ioengine=libaio --direct=1 --name=volume-initialize

Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост
Влияние максимального размера I/O-запросов на производительность систем Linux Системное администрирование, Компьютерное железо, Linux, Исследования, Производительность, Сервер, Длиннопост

Результат: После изменения параметра max_sectors_kb количество операций IOPS, отображаемое fio и iostat, совпало.

Заключение:

Максимальный размер I/O-запроса (max_sectors_kb) является мощным инструментом для тонкой настройки производительности дисковой подсистемы в Linux. Правильно подобранное значение позволяет оптимизировать производительность ввода-вывода и снизить нагрузку на CPU, однако следует учитывать возможное увеличение задержек и аппаратные ограничения. Любые изменения параметров производительности следует предварительно тестировать и внимательно анализировать перед внедрением в продуктивную среду. Это гарантирует стабильность работы системы и её оптимальную производительность в различных сценариях.

Показать полностью 9
Системное администрирование Компьютерное железо Linux Исследования Производительность Сервер Длиннопост
1
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии