Використання твердотільних накопичувачів ssd для підвищення продуктивності схд, журнал мережевих

НАПОВНЕННЯ КЕШ-ПАМ'ЯТІ

Кеш, як і основна ємність зберігання, розбивається на групи секторів рівного розміру. Кожна група називається кеш-блоком, а кожен блок складається з подблоков. Розмір кеш-блоку можна налаштовувати під конкретне додаток, наприклад СУБД або Web-сервер.

Зчитування даних з HDD і їх запис в SSD називають наповненням кеш-пам'яті. Ця фонова операція зазвичай виконується слідом за основною операцією читання або запису. Оскільки призначення кеша - зберігання часто використовуваних даних, до його наповнення повинна приводити не кожна операція введення-виведення, а тільки та, для якої порогове значення лічильника виявляється перевищеним. Зазвичай лічильники наповнення застосовуються при читанні і при запису.

Що відбувається з вмістом кешу після його «розігріву»? Якщо на SSD є вільне місце, кеш продовжує заповнюватися «гарячими» даними. Коли ємність SSD вичерпується, застосовується алгоритм перезапису найменш використовуваних даних (Least Recently Used, LRU), тобто на місце останніх в кеш-пам'яті записуються нові «гарячі» дані.

Якщо обсяг «гарячих» даних перевищує ємність SSD, відсоток зчитувальних з кеш-пам'яті даних зменшується, відповідно, знижується і продуктивність. Крім того, чим менше ємність SSD (і чим більший об'єм гарячих даних), тим інтенсивніше обмін «гарячих» даних. В результаті SSD буде зношуватися швидше.

Фахівці Qsan рекомендують використовувати накопичувачі Intel SSD DC S3500. Так, у SSD ємністю 480 Гбайт напрацювання на відмову (MTBF) складає 2 млн ч. Що стосується продуктивності, то типова затримка у цих накопичувачів дорівнює 50 мс, максимальна затримка при читанні - 500 мс (99,9% часу), а продуктивність при довільному читанні блоками по 4 Кбайт досягає 75 тис. IOPS, під час запису - 11 тис. IOPS. Це хороший варіант для SSD-кешування.

КЕШУВАННЯ ПРИ ЧИТАННІ-ЗАПИСИ

Операція читання при відсутності даних в кеш-пам'яті відбувається наступним чином:

  1. Додаток подає запит на читання даних.
  2. Дані зчитуються з HDD.
  3. Запитані дані повертаються з додатком.
  4. Виконується операція наповнення SSD.

Операція читання при наявності даних в кеш-пам'яті:

  1. Додаток подає запит на читання даних.
  2. Дані зчитуються з SSD.
  3. Запитані дані повертаються з додатком.
  4. При збої SSD дані зчитуються з HDD.

Дії додатки під час запису даних:

  1. Додаток подає запит на запис даних.
  2. Дані записуються на HDD.
  3. Додатком повертається статус операції.
  4. Виконується операція наповнення кеш-пам'яті на SSD.

НАСТРОЙКА КЕШ-ПАМ'ЯТІ SSD

Щоб додаток використовувало кеш-пам'ять на SSD максимально ефективно, її можна налаштувати. Основні параметри - розмір блоку кеш-пам'яті, порогові значення наповнення при читанні і при запису.

Розмір блоку. Великий розмір блоку кеш-пам'яті підходить для додатків, часто звертаються до сусідніх (з фізичного розташуванню) даними. Це називається високою локальностью звернень. Збільшення розміру блоку також прискорює наповнення кеш-пам'яті на SSD - прискорюється «розігрів» кешу, після якого додатка з високою локальностью звернень демонструватимуть вельми високу продуктивність. Однак збільшення розміру блоку тягне за собою генерування надлишкового трафіку введення-виведення і збільшення часу відгуку, особливо для відсутніх в кеші даних.

Менший розмір блоку хороший для додатків з менш локалізованими даними, тобто коли доступ до даних здійснюється в основному випадковим чином. Кеш-пам'ять на SSD буде «розігріватися» повільніше, але чим більше блоків, тим більша ймовірність попадання в кеш потрібних даних, особливо даних з низькою локальностью звернень. При невеликих блоках коефіцієнт використання кеш-пам'яті нижче, але менше будуть і супутні втрати, так що при «промаху», коли потрібних даних немає в кеш-пам'яті, продуктивність страждає менше.

Граничне значення наповнення. Поріг наповнення кеша - це число звернень до даних, після якого відповідний блок копіюється в SSD-кеш. При великому значенні кешуються тільки часто використовувані дані і зменшується обмін даних в кеші, але збільшується час «розігріву» кеш-пам'яті і зростає ефективність її використання. При меншому значенні кеш-пам'ять розігрівається швидше, але можливо її надмірне наповнення. Для більшості додатків цілком достатньо порогового значення, рівного 2. Наповнення при записи корисно в тому випадку, коли записуються дані незабаром знову зчитуються. Подібне нерідко трапляється в файлових системах. Інші додатки, наприклад бази даних, не мають такої особливості, тому наповнення при записи для них іноді краще зовсім відключити.

Як можна бачити, збільшення або зменшення кожного параметра має свої позитивні і негативні наслідки. Дуже важливо розуміти «локальність» додатка. Крім того, корисно протестувати систему на реальних навантаженнях і подивитися, за яких параметрах вона показує кращі результати.

Використання твердотільних накопичувачів ssd для підвищення продуктивності схд, журнал мережевих

Зростання продуктивності (в IOPS) в залежності від часу «прогріву» кеша (в годинах)