Форум FAQ О команде
Поиск по сайту:
 
Sybase
Sybase ASA  
Sybase ASE  
Sybase IQ  
Sybase PowerDesigner  
Sybase PowerBuilder  

Продукты
Наши продукты  
Продукты партнеров портала  

Сообщества
Alef community  

Меню
Регистрация  
Почта  

Вход

Рассылка
Рассылка 'РСУБД Sybase ASA 9 - мощность, легкость и надежность'
Почтовая рассылка
"Технологии обработки данных компании Sybase"


Статистика
Яндекс цитирования

Rambler's Top100
Находится в каталоге Апорт

Главная -> Статьи
Стратегия кэша 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 phpMS. Все права защищены.
hosted on pets-tree