Книга: Разработка ядра Linux
Старая хеш-таблица страниц
Старая хеш-таблица страниц
Для ядер до серии 2.6 поиск в страничном кэше не выполнялся с помощью базисных деревьев. Вместо этого поддерживалась глобальная хеш-таблица всех страниц памяти в системе. Специальная хеш-функция возвращала двухсвязный список значений, связанных с одним значением ключа. Если нужная страница находится в кэше, то один из элементов этого списка соответствует этой нужной странице. Если страница в кэше отсутствует, то хеш-функция возвращает значение NULL
.
Использование глобальной хеш-таблицы приводило к четырем основным проблемам.
• Хеш-таблица защищалась одной глобальной блокировкой. Количество конфликтов при захвате этой блокировки было достаточно большим даже для не очень больших машин. В результате страдала производительность.
• Размер хеш-таблицы был большим, потому что в ней содержалась информация обо всех страницах памяти в страничном кэше, в то время как важными являются лишь страницы, связанные с одним конкретным файлом.
• Производительность в случае неудачного обращения в кэш (когда искомая страница памяти не находится в кэше) падала из-за необходимости просматривать все элементы списка, связанного с заданным ключом.
• Хеш-таблица требовала больше памяти, чем другие возможные решения.
Применение в ядрах серии 2.6 страничного кэша на основании базисных деревьев позволило решить эти проблемы.
- Информация заголовочной страницы (Database header)
- Информация страниц данных
- Статистика страниц индексов
- Размер страницы базы данных
- Типы страниц и их использование
- Дополнительные национальные кодовые страницы и порядки сортировки
- Безопасная работа с внешними таблицами
- Когда старая школа молода
- Помогает или мешает продажам ваша домашняя страница?
- Переход по узлу SharePoint и домашней странице
- Страницы веб-частей
- Использование домашней страницы рабочей области для собраний