DragonFly - Масштабируемая инфраструктура кэширования

Обзор инфраструктуры кэширования

Оригинал: DragonFly - A Scaleable Caching Infrastructure
Перевод: Валерий Винник, 05.01.16

Мы хотим создать гибкую инфраструктуру кэширования двойного назначения, аналогичную широко известной и хорошо разработанной системе MESI для широкого диапазона конфигураций. Первым назначением этой инфраструктуры будет защита операций ввода-вывода и преобразования содержимого оперативной памяти. Например, модель MESI для некоторого диапазона позволит нескольким процессам одновременно осуществлять чтение и запись в разных участках одного и того же файла. При удачном внедрении данной инфраструктуры мы сможем распространить её на сетевое кластерное окружение, что позволит нам сделать большой шаг вперёд к достижению эффекта цельной системы.

Такая инфраструктура кэширования позволит, к примеру, защитить операцию write() от конфликта с ftruncate(), а также сохранить атомарность операций read() и write(). Та же инфраструктура будет эффективно объявлять недействительным либо обновлять содержимое памяти, став полноценной заменой блокировки VNODE для большинства случаев.

Рассматриваемая инфраструктура будет использовать приём и передачу сообщений, более сосредотачиваясь на объекте виртуальной памяти, нежели на VNODE в роли главного менеджера кэшированных данных. Такие операции, как read() и write(), будут соответствующим образом блокироваться в нужном диапазоне объектов виртуальной памяти, осуществлять свой ввод и вывод, после чего блокировка будет сниматься. Долгосрочные операции кэширования смогут объединять свои диапазоны с целью ограничения количества осуществляемых блокировок, что позволит инфраструктуре поддерживать блокировки между операциями в масштабируемом режиме. Тогда такие операции кэширования, как объявление недействительным, либо - например - преобразование Исключительный->Совместно используемый (Exclusive->Shared transitions), будут генерировать запрос управляющему объекту на переход в предыдущее состояние или снятие блокировки диапазона. Другими словами, рассматриваемая система кэширования - это система с активным управлением.


Примечания переводчика:
MESI - протокол для взаимодействия многопроцессорного вичислительного комплекса с кэш-памятью (предусматривает возможность изменения, монопольного и коллективного использования и установки признаков недействительности данных кэш-памяти).
VNODE - internal representation of a file or directory (букв. внутреннее представление файла или каталога) - система присвоения определённых параметров каждому активному файлу, текущему каталогу, подмонтированному файлу, текстовому файлу и корню в Unix-подобных ОС; подробности см.: http://www.gsp.com/cgi-bin/man.cgi?section=9&topic=vnode.

Обновлено: 12.03.2015