19 октября 2012

Essbase on RAM Disk

Ни раз задавался вопросом, как можно улучшить производительность Essbase. В том числе, с его использованием на RAM Disk. Идея проста - создать виртуальный диск в памяти достаточного объема, благо планочки нынче не дороги, и закинуть на этот диск файлы кубов Essbase.

Один из наших соратников - Макс Кудряшов - поделился тестами такой реализации на промышленной базе:
Cравнили производительность RAM-диска и обычной дисковой полки. Результаты очень положительные: пересчет модели упал с 4.5 - 6 часов (в зависимости от нагрузки) до 2 часов ровно (причем буквально с точностью до пары секунд каждый раз). Даже учитывая, что практически весь пересчет идет в один поток, количество потребляемых IOPS доходило до 10K (но в основном 2-5K). Так что совсем не удивительно, что обычная полка не справляется - она в пике выдавала только под 400.
Есть конечно расчеты, которые слабо зависят от диска (в основном с использованием CREATENONMISSINGBLK ON), но агрегации и копирования данных просто летают.
Приложен график (в центре провал - было не оптимально написано правило).

Софт для создания RAM Disk - Primo Ramdisk
Параметры куба Essbase: BSO, Buffered I/O Access Mode, RLE Data Compression
Объем данных в кубе - 70 ГБ, индексный файл - 3ГБ

5 комментариев:

  1. Антон,
    Не забывайте учесть что «RAM Drive» в ОЗУ - это ЭНЕРГОЗАВИСИМАЯ память. Поэтому при его использовании даже плановая перезагрузка сервера превращается из штатной операции в приключения. А при нештатной ситуации (зависла ОС, случайно перегрузили, уборщица/админ в серверной задели кабель питания, короткое замыкание в автомате, в здании выключили электричество, а в ИБП батареи не менялись 5 лет и через 10 мин сдохли т.д. – тысячи их) потеряются данные. Т.о. чтобы использовать это решение в промышленной среде нужны очень крепкие нервы и регулярный бэкап.

    Виктор

    П.С. Был бы пересчет не в один поток полка показала бы совсем другие цифры.

    ОтветитьУдалить
  2. Виктор, если Менеджмент требует "скорости" и готов доплатить за память и нормальный ИБП, а ИТ департамент может это реализовать, почему - нет? Естественно, требования к бесперебойности питания сервера должны быть ужесточены. К тому же, современный софт для создания RAM Disk-ов позволяет регулярно сваливать данные на винчестер, а также привязываться к действиям ОС. При выключении потребуется прервать все расчеты, свалить данные (образ) на винчестер, а при загрузке - вернуть все на место.
    Безусловно, от реализации правил в модели многое зависит. В данном случае была возможность провести эксперимент на ПРОМЫШЛЕННОЙ базе с такой реализацией.
    Или у Вас есть доступ к EXALYTICS?

    ОтветитьУдалить
    Ответы
    1. Антон, добрый день!
      Есть интерес провести тестирование на Exalytics, что бы иметь практический пример ее применения. Не хотите объединить усилия? Наше железо..ваши кейсы))
      Сергей
      buterin@yandex.ru

      Удалить
  3. Если памяти много, почему не использовать для тех же целей стандартный функционал Essbase, а именно data file cache?

    Ярослав

    ОтветитьУдалить
    Ответы
    1. Data file cache требует direct I/O. В 7-й версии у меня были с этой опцией проблемы. С тех пор я ее не испытывал на продакшнах. Про это уже много написано, например: http://goo.gl/CCXBC

      Удалить