SlideShare a Scribd company logo
1 of 38
Download to read offline
Презентация магистерской диссертации
на тему: «Оптимизация кэширования
сетевой файловой системы»
	 	 	 	 	 	 Музафаров Максим Ринатович
научный руководитель:		 Игумнов Александр Станиславович
Министерство образования и науки Российской Федерации
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
«Уральский федеральный университет имени первого Президента России Б.Н. Ельцина»
Институт математики и компьютерных наук
Кафедра алгебры и дискретной математики
Екатеринбург 2014
Как все начиналось?
Одного мало
Сетевые файловые системы
Развитие сетей
Сетевые ФС
NFS
GlusterFS
AFP
Производительность
Производительность
Производительность
Cache
Кэш
Cache
Актуальность
Cache
Кэш ограничен
Cache
Кэш — список
Проблема выбора
?
Random
FIFO
LRU
MRU
LFU
1
2 4 10 3 6 2 8
0
LFU hash-table
1
1
1
2
2
3
3
3
4 5
5
Оптимальный
Сетевые ФС
NFS
GlusterFS
AFP
dht
io-cache io-cache io-cache
server server server
POSIX POSIX POSIX
TCP/IP
client client client
io-cache new
LRU
FIFO
MRU
LFU
io-cache
Результаты
6 MB
128 kBPage
Cache
50 файлов
1000 обращений
Выводы
• Последовательное чтение
• Случайное чтение
• Одновременное чтение и запись
• Последовательное чтение

с повторами
Выводы
• Последовательное чтение
• Случайное чтение
• Одновременное чтение и запись
• Последовательное чтение

с повторами
MRU
Выводы
• Последовательное чтение
• Случайное чтение
• Одновременное чтение и запись
• Последовательное чтение

с повторами
MRU
LFU
Выводы
• Последовательное чтение
• Случайное чтение
• Одновременное чтение и запись
• Последовательное чтение

с повторами
MRU
LFU
LFU
Выводы
• Последовательное чтение
• Случайное чтение
• Одновременное чтение и запись
• Последовательное чтение

с повторами
MRU
LFU
LFU
LRU FIFO
https://github.com/m-messiah/glusterfs
СПАСИБО ЗА ВНИМАНИЕ
Вопросы?

More Related Content

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

Оптимизация кэширования GlusterFS

Editor's Notes

  1. о себе
  2. Первоначально компьютеры были большие и обществе царило предубеждение, что чем больше техника, тем она мощнее. И чем она мощнее - тем лучше для производительности. Именно поэтому прогресс в технологиях и уменьшении форм-фактора использовался лишь для возможности количественно усилить мощность одного компьютера - мэйнфрэйма. Со временем компьютеры снова доросли до размеров больших комнат, а необходимые мощности так и не были достигнуты. Тогда возникла резонная мысль:
  3. ОДНОГО МАЛО! Необходимо научиться связывать несколько компьютеров в общую сеть и заставлять их заниматься общей работой. Так возникли вычислительные кластеры. Но оставалась проблема общего доступа к данным, которую нужно было как-то решать. К счастью, возник еще один реонный вопрос: если удается отправлять данные и управлять компьютерами по сети, почему нельзя сделать файловую систему, которая будет работать по сети?
  4. Идея оказалась выигрышной и уже в 1976 году была релизована первая сетевая файловая система FileAccessListener, идеи которой впоследствии были перенесены на протокол IP в реализации NFS, сетевой файловой системы, используемой и по сей день. Вкратце, смысл сетевой файловой системы в предоставлении по сети доступа к физическому носителю, желательно таким образом, что приложениям на клиенте будет совершенно незаметно, работают они с сетевой файловой системой или с локальной.
  5. С течением времени развивались сетевые коммуникации, что привело к неизбежному развитию сетевых файловых систем. Клиентов становилось все больше и первоначальная связь клиент-сервер отошла на второй план, уступив место гибридам, в которых и сервер в некоторых случаях становится клиентом, и в которых клиент становится одновременно и сервером.
  6. Так возникло множество других файловых систем, многие из которых совершенно непохожи по архитектуре на NFS, но тем не менее, обеспечивают сетевой доступ к общим хранилищам данных. Но как бы ни развивались протоколы, дамоклов меч всех компьютерных технологий давал о себе знать.
  7. Это производительность. Рассмотрим на простом примере: у нас есть сервер, предоставляющий какую-то сетевую ФС и клиент, желающий получить к ней доступ. В общем случае, запрос на чтение файла выглядит как два соединения: собственно запрос и получение данных. Но что если взглянуть поглубже?
  8. Запрос на чтение файла разбивается на три запроса: поиск файла на сервере, получение его уникального адреса, запрос на открытие и чтение этого уникального адреса. Можно проводить декомпозицию и дальше, вплоть до того, что каждое TCP соединение разбивать на те же три-четыре пакета. Понятно, что в развитии сетевых файловых систем, узким местом остается не мощность сервера, а ширина канала и количество одновременных соединений.
  9. Одним, наиболее очевидным решением проблемы сетевого взаимодействия является клиентское кэширование. Кэш в данном случае становится некоторой промежуточной точкой между клиентом и сетью. Но плюс его в том, что доступ к кэшу во много раз быстрее сети.
  10. Таким образом, этап запроса файла дополняется еще одной проверкой - проверкой наличия данных в локальном кэше. Со стороны может показаться, что схема только усложнилась, но во-первых, время доступа к кэшу пренебрежительно мало, по сравнению с сетевыми запросами, что делает изменения схемы незаметными, а во-вторых, при наличии данных в кэше - вообще убирает из схемы сетевые запросы, значительно ускоряя полуение клиентом запрашиваемых данных.
  11. Но не всё так радужно и у кэша есть две проблемы. Первая - его согласованность, то есть актуальность данных, хранящихся в нем. Необходимы дополнительные механизмы проверки, не обновились ли данные на сервере или клиенте, и обеспечивать их постоянную синхронизацию.
  12. Вторая проблема - кэш ограничен, поэтому нельзя в него поместить все данные сервера и работать уже только локально. Постоянно необходимо решать, какие данные поместить в кэш, а какие из него убрать, чтобы освободить место. Для уменьшения числа проблем есть договоренность, что данные всегда помещаются в кэш, если к ним запрашивается доступ. Таким образом остается одна проблема - какие данные вытеснять.
  13. Чаще всего, кэш это список одинаковых структур данных. Тогда добавление новых данных - это лишь запись в этот список еще одного элемента, с тем лишь ограничением, что количество элементов не превышает некоторого числа - объема кэша.
  14. Когда список заполнен - и возникает описанная проблема: добавлять некуда, следовательно требуется удалить какой-то из элементов. Какой? Для решения этой проблемы придумано несколько алгоритмов. Рассмотрим основные:
  15. Вытеснение случайного элемента. Или алгоритм рэндом. Вытесняемый элемент выбирается совершенно случайно, например с помощью генератора случайных чисел. Несмотря на кажущуюся простоту и бесполезность алгоритма, статистика показывает, что в среднем такой алгоритм работает довольно неплохо, обеспечивая высокую вероятность наличия запрашиваемого элемента в кэше.
  16. Очередь. Второй из простых алгоритмов - представляет кэш в виде очереди элементов, всегда добавляя в конец, а вытесняя с начала. Несложен в исполнении, приемлем для определенных задач.
  17. Следующие три алгоритма сложнее в исполнении, но и производительнее. LRU - Least Recently Used. Алгоритм вытесняет тот элемент, который дольше всего неиспользовался. Требует подсчета времени для каждого элемента и обнуления таймера при обращении к элементу. Доказано, что наиболее производителен в математической модели обновляемой очереди - кэш представляет из себя обычную очередь, но при обращении к элементу он убирается из того места где находился ранее и добавляется снова в конец. Таким образом, в данной модели проблема таймеров заменена на логику очереди.
  18. Противоположность LRU - стратегия Most Recently Used. Вытесняет тот элемент, который только что использовался. Соответствующая математическая модель как у LRU, но с заменой очереди на стек.
  19. Особняком стоит алгоритм Least Frequently Used - алгоритм вытеснения того элемента, который использовался наиболее редко. Требует постоянного подсчета частоты использования элементов. В простейшем случае к каждому элементу просто добавляется поле - счетчик, увеличиваемый при обращении. А при поиске вытесняемого элемента кэш просматривается на поиск минимального значения счетчика. Очевидно, что такая модель неоптимальна, потому что каждое удаление требует просмотра всего кэша - сложность алгоритма О(n). К счастью, существует возможность свести алгоритм поиска к O(1), изменив структуру кэша.
  20. Можно представить кэш как хэш таблицу, в которой стобцами - значением хэша будет значение счетчика, а строками - элементы с этой частотой обращений. Тогда вытеснение элемента сводится лишь к взятию нужного столбца и удалению из него произвольного элемента.
  21. Особняком стоит Оптимальный алгоритм кэширования. Фактически, его описание гласит, что в каждый момент времени система знает, какие данные ей понадобятся в будущем и в каком порядке, и согласно этому может вытеснять и помещать в кэш данные наилучшим образом. В своем идеалистическом определении алгоритм нереален, однако есть множество способов к нему приблизиться. Например, проанализировав поведение кэша при работе с данными, выбирать нужную стратегию из ранее описанных.
  22. Ранее я уже упоминал обилие сетевых файловых систем. Для конкретики анализа алгоритмов кэширования, а также из-за необходимости адаптации под задачи, выполняемые на кластере ИММ УрО РАН, в качестве исследуемой системы была выбрана GlusterFS
  23. GlusterFS не просто сетевая файловая система - это распределенная файловая система, что означает наличие большого числа серверов - узлов кластера и, возможно, большого числа клиентов. При этом серверные узлы не взаимодействуют между собой, а клиенты могут не знать о существовании друг-друга. Кроме этого, архитектура GlusterFS основана на трансляторах - небольших блоках, реализующих определенный функционал.
  24. Таким образом, архитектура GlusterFS - это дерево из взаимосвязанных трансляторов. Например, рассмотрим дерево стандартного кластера GlusterFS из одного клиента и трех серверных узлов. В корне дерева находится транслятор кластеризации dht, распределяющий данные по узлам в зависимости от значения хэша файла. У него три потомка - три транслятора клиентского кэширования, у каждого из которых по одному транслятору типа client - позволяющему соединяться с сервером посредством сети. В данном случае, это TCP/IP, но может быть и FibreChannel, и сокеты, и так далее. Каждый клиент соединяется с одним транслятором типа сервер, предоставляющим сетевой доступ и запущенном каждый на своем узле. В этом простом примере серверная часть состоит всего из двух трансляторов - публикующего server, и транслирующего команды в POSIX-совместимую файловую систему, однако их может быть больше. Особое внимание здесь заслуживает транслятор io-cache, который и обеспечивает необходимый нам функционал и который я и модифицировал.
  25. Обновленная версия транслятора io-cache - это фактически транслятор четыре в одном: с помощью одного параметра в конфигурационном файле можно изменить структуру кэша и алгоритм вытеснения данных в нем. Транслятор поддерживает LRU в неизменном виде. Интересен был вариант с FIFO, для понимания, оправданны ли затраты LRU на постоянное перестроение очереди. А также MRU и LFU как самостоятельные стратегии совершенно иного, нежели LRU подхода к заполнению кэша. После того, как были достигнуты оптимальные значения производительности реализации стратегий я стал проводить замеры времени доступа в одних и тех же сценариях при различных стратегиях кэширования.
  26. На стенде был один сервер и один компьютер клиент, где различные клиенты были разными процессами (не больше числа процессорных ядер в компьютере). Настройки кэша были выбраны такими для того, чтобы уже на небольших размерах файлов увидеть картину, которая должна произойти в реальности. Общий размер кэша 6 мегабайт, а размер каждой страницы 128 килобайт. Каждым клиентом на сервере создавалось 50 файлов одинакового размера и случайного содержания, после чего проводился тест на чтение этих файлов по 1000 раз. Графики времени каждой попытки приведены в приложении к работе, здесь же будем оценивать лишь среднее арифметическое по всем попыткам.
  27. Первый тест на 10-ти Килобайтных файлах. Названия столбцов означают сценарий, при котором проводились замеры: цифра означает количество конкурентных клиентов, s - последовательный доступ, то есть циклически файл за файлом, r - случайный. w - означает тесты, в которых один клиент записывал файл, а другой параллельно его читал. Высота столбцов - среднее время доступа к файлу. Видно, что на таких малых размерах файлов не особо важен выбор стратегии кэширования, скорее важна производительность самой структуры данных. Так как LRU был нативно разработан и внедрен в эту платформу, а LFU был реализован с помощью быстрой хэш-таблицы - видно их преимущество во времени доступа к файлу.
  28. Так как файлы 100Кб по прежнему меньше размера страницы кэша - картина точно такая же, как и в предыдущем случае. Рассмотрим выход за границы страницы.
  29. 200Килобайт - заметно преобладание LRU. Более интересен случай файлов 1МБ. При таком размере кэш должен заполняться уже спустя 6 файлов, что покажет бОльшую нагрузку на алгоритм вытеснения и его оптимальность.
  30. И правда, в таком случае картина меняется, в некоторых случаях отодвигая LRU далеко на второй план, отдавая предпочтение MRU при последовательном доступе и LFU при случайном конкурентном. Также интересны столбцы с буквой m - это сценарии работы, в котором каждый файл читался по четыре раза подряд перед тем как перейти к следующему. Стоит отметить, что в таких случаях на первое место выходят LFU и как ни странно, FIFO, видимо за счет того, что в отличие от LRU, нет необходимости перестраивать очередь.
  31. И напоследок, файлы размера больше, чем кэш. Ситуация не видится интересной, так как в любом случае происходит вытеснение, а это - только скорость работы структуры данных - LRU, либо LFU, как было в случае с 10Килобайтными файлами. Стоит отметить также, что во всех представленных графиках, в сценарии одновременной записи и чтения выигрывает LFU.
  32. В ходе работы был поставлен эксперимент и проанализированы результаты. Можно с достаточно большой уверенностью сказать, что при использовании транслятора io-cache в инфраструктуре сетевой файловой системы GlusterFS, в различных сценариях работы требуются разные алгоритмы кэширования. В расчет не берутся случаи сильно маленьких файлов, в которых кэш не может реализоваться полностью и случаи больших файлов, в которых алгоритм кэширования снова не важен. В среднем, для случая последовательного чтения файлов, вне зависимости от числа клиентов, оптимальной стратегией является вытеснение только что использованного - MRU.
  33. В случае же случайного чтения наилучшие показатели у стратегии кэширования, основанной на частоте использования - LFU
  34. LFU также является абсолютным лидером в сценариях одновременного чтения и записи файлов.
  35. А так популярный в локальных файловых системах LRU и его упрощенная версия FIFO хороши лишь при последовательном чтении с повторами, что не так часто можно встретить в сетевой асинхронной модели файловых систем.
  36. Таким образом, поставленная задача поиска оптимальной стратегии и возможность ее выбора при настройке клиента имеет такой ответ, для инфраструктуры GlusterFS. Реализация же самого транслятора и параметров тестов доступны в моем репозитории на GitHub.
  37. Вот по этой ссылке.