Анализ входящего трафика к СХД
Одним из способов улучшения производительности и уменьшения латентности в системах хранения данных (СХД) является использование алгоритмов, анализирующих входящих трафик.
С одной стороны кажется, что запросы к СХД сильно зависят от пользователя и, соответственно, малопредсказуемы, но на деле это не так.
Утро практически любого человека одинаково: мы просыпаемся, одеваемся, умываемся, завтракаем, едем на работу. Рабочий день же, в зависимости от профессии, у всех разный. Также и загрузка СХД изо дня в день одинакова, а вот рабочий день зависит от того, где используется СХД, какая у неё типичная нагрузка (workload).
Что же такое запрос к СХД? Это 4 числа со следующими названиями: размер запроса (length), время прихода запроса (start_time), тип запроса (read/write), адрес запроса (lba).
Запросы к СХД делятся на четыре типа доступа, которые в нашем блоге будут представлять следующие персонажи:
Незнайка
- Случайное чтение (random read, в дальнейшем rr). C Незнайкой никто не хочет иметь дело. Его поведение не поддается логике. Хотя некоторые алгоритмы все-таки пытаются предсказать его поведение — изощренные алгоритмы упреждающей выборки из памяти prefetch типа C-Miner, основанные на поиске корреляций между адресами последовательно запрашиваемых блоков данных. Это алгоритмы Data Mining, значит, они требуют ресурсов от СХД и не всегда успешны, но в связи с колоссальным развитием вычислительных мощностей процессоров в дальнейшем будут использоваться все больше и больше. Если в СХД приходят одни Незнайки, то лучшим решением будет СХД на базе SSD (All-Flash Storage).
Знайка
- Последовательное чтение (sequential read, в дальнейшем sr). Лучший друг для СХД — его поведение предсказуемо. Существуют алгоритмы упреждающего чтения (read ahead), которые умеют работать со Знайкой, они заранее помещают нужные данные в оперативную память, сводя латентность запроса к минимуму.
Пончик
3. Последовательная запись (sequential write, в дальнейшем sw). СХД тоже любит Пончика, так как писать большими блоками для нее выгодно и удобно.
Гунька
4. Случайная запись (random write, в дальнейшем rw). Гунька — лучший друг Незнайки. Его хулиганское поведение может изрядно подпортить СХД жизнь. Но есть способ усмирить Гуньку — это лог-структурированная запись.
В данном блоге мы поговорим о каждом персонаже отдельно, а также о тех паттернах поведения, которые они образуют вместе.
Часть 1. Гунька или Лог-структурированная запись