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

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

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

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

Вход

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


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

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

Главная -> ПО Sybase -> Sybase PowerBuilder -> Статьи
Стратегия кэша 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
Материал прочитан: 10703 раз(а)
[ Назад ]



Продвижение сайтов
Биржа ссылок

Copyright©2005 phpMS. Все права защищены.
hosted on pets-tree