|
Sybase
|
|
|
|
|
Продукты
|
|
|
|
|
Сообщества
|
|
|
|
|
Меню
|
|
|
|
|
Вход
|
|
|
|
|
Рассылка
|
|
|
|
|
Статистика
|
|
|
|
|
Стратегия кэша Relaxed LRU
|
Стратегия кэша Relaxed LRUКак работает политика кэша Relaxed LRU.
(Будем в дальнейшем называть Relaxed LRU просто "Relaxed" для краткости.)
Организация кэша, работающего по принципу Relaxed LRU
Relaxed LRU кэш организован по револьверному принципу (round-robin):
сам кэш представляет собой закольцованный связный список буферов кэша,
каждый из буферов имеет два признака :
- признак недавнего использования ("recently used")
- признак "грязного буфера" ("dirty"), который устанавливается, если данные в буфере
изменились и требуется сохранить их на диск.
и два указателя :
- Указатель "жертвы". Он указывает на буфер, в который будет помещен
следующий читаемый блок данных.
- Указатель смыва (wash marker). Он указывает на буфер, который будет
проверяться на "грязность".
Эти два указателя перемещаются по закольцованному списку буферов по кругу в одну сторону
(скажем, по часовой стрелке), но так, что расстояние между двумя указателями в количестве
буферов всегда сохраняется постоянным, и указатель смыва движется "впереди" указателя жертвы.
Буфера, попадающие между указателем смыва и указателем жертвы называются областью смыва.
Работа Relaxed кэша
- 0) Когда надо прочитать новую страницу, указатели одновременно перемещаются на один буфер по кругу.
- 1) Буфер, на который указывает указатель смыва, сбрасывается на диск (путем асинхронного ввода-вывода),
если он грязный, и признак недавнего использования этого буфера сбрасывается.
- 2) Буфер, на который указывает указатель жертвы, проверяется на признак недавнего использования.
- 3) Если буфер не был недавно использован, новая страница читается в этот буфер, замещая его.
- 4) Если буфер, на который указывает указатель жертвы, был недавно использован или он еще грязный,
указатели перемещаются дальше (возврат к пункту 0).
Замечание :
Здесь в пункте 4 я немного домыслил, поскольку не очень понятно, как под указателем жертвы может появиться
недавно использованный буфер, если впереди идущий указатель смыва этот признак сбрасывает, и как синхронизируется
окончание ввода-вывода, сбрасывающего грязный буфер.
Недостатки Relaxed кэша
- Relaxed кэш не различает часто используемые и редко используемые страницы, у него есть только
один признак - только что использовалось или давно использовалось. Поэтому часто используемые страницы
могут вытесняться из кэша и, если они еще и изменялись, это будет приводить к лишнему вводу-выводу
при записи, помимо последующего чтения. Поэтому Relaxed кэш должен применяться только когда
вытеснение из кэша очень редкое.
- Как правило, Relaxed кэш медленнее обычного для большинства нормального использования кэша
(когда оборот кэша не низкий)
Преимущества Relaxed кэша
- Список буферов кэша не должен переорганизовываться для поддержания порядка MRU-LRU. Это особенно
полезно, когда вытеснение из кэша очень редкое - в переорганизации списка просто нет большой нужды.
- Во многом из-за того, что не нужно поддерживать MRU-LRU-порядок, Relaxed кэш позволяет в меньшем
объеме сбрасывать кэши процессоров при переходе процессов (потоков) ASE с одного процессора на другой
в среде SMP. Поэтому использование Relaxed кэш повышает масштабируемость ASE в SMP.
Пояснение:
При переорганизации обычного кэша для сортировки списка в MRU-LRU-порядке происходит
перелинковка буферов - указалели на следующий и предыдущий буфера меняются как минимум у двух буферов.
Это изменяет страници памяти, которые лежат в кеше процессора, и поэтому позже, когда происходит переключение
контекста на выполнение другого процесса (или потока) процессор обязан сбросить эти страницы обратно
в обычную память (при write through кэше процессора это должно быть сделано тут же при изменении буфера).
В итоге оборот кэша процессора увеличивается при переликовке буферов. А в Relaxed кэше этого не происходит,
и страницы буферов кэша меняются только когда данные читаются в кэш или изменяются в кэше - этого уже
никак не избежать.
Когда использовать Relaxed кэш
- Для именованных кэши для объектов, которые полностью влезают в кэш
- В базах данных с универсальным кэшем, когда вытеснение из кэша очень мало.
- Для кеширования лога (log only cache), кроме случаев, когда лог данных читается парралельно
с записью в лог. Это есть в реплицируемых базах данных (из которых идет репликация) или в базах данных,
где много отложенных UPDATE-ов (deferred updates) или очень много откатов транзакций.
- Relaxed кэш приспособлен специально для работы в SMP, поэтому он более полезен при большом количестве
процессоров и менее полезен при наличии только одного или нескольких процессоров.
В завершении хочется напомнить основные принципы Performance & Tuning
- прежде, чем изменять конфигурацию, проведите тщательный мониторинг
- произведите изменения настроек и проведите мониторинг еще раз
- сравните результаты "ДО" и "ПОСЛЕ" и сделайте выводы о нужности изменения конфигурации. Если изменения не дали положительного эффекта - верните конфигурацию обратно.
Сообщение подготовлено с использованием материалов курса Sybase "Performance & Tuning: Configuring ASE". Разрешите считать это небольшой рекламой этому курсу - он действительно этого стоит.
|
Дата публикации: Wednesday 29 March 2006 12:38:48 Материал прочитан: 11272 раз(а) [ Назад ] |
|
|
|
|
|
|
Copyright©2005 . Все права защищены.
|