Дипломная работа: Балансировка нагрузки высокопроизводительного кластера

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Остаётся вопрос о практическом подсчёте PWS и статистике page fault'ов. С этим нам поможет виртуальная файловая система /proc, которая содержит информацию о процессах системы. Особый интерес представляет файл /proc/meminfo c общей информацией об использовании памяти и файл /proc/[pid]/statm. Эта информация нам и даёт нам резидентные страницы памяти (т.е. страницы, находящиеся в pws) (см. Приложение).

Соответственные замеры памяти для контейнеров дают нам

Так же была определена статистика страничных исключений

Заключение

В современной IT индустрии важнейшее место занимают так называемые облачные вычисления, то есть те, в которых основная часть бизнес-логики реализуется на стороне сервера. Как следствие, имеет место значительная загруженность облачных серверов, которую экономически нецелесообразно решать простым наращиванием мощностей.

Одним из наиболее действенных решений является переход от реального железа к виртуальному. Такой подход позволяет эффективно перераспределять вычислительные мощности и "на лету" изменять архитектуру системы. В ходе исследования были изучены разнообразные технологии виртуализации, их преимущества и недостатки, а так же применение на практике.

Анализ большинства "честных" методов виртуализации показал их избыточность. Мы полагаем, что методы эмуляции и паравиртуализации влекут большие накладные расходы, которых можно было бы избежать. Было продемонстрировано, что значительная часть ресурсов отдана под виртуализацию аппаратного обеспечения.

В качестве альтернативы мы предлагаем использовать сравнительно молодую технологию контейнерной виртуализации. Были рассмотрены её особенности и способы реализации в системе GNU/Linux на основе механизма ядра cgroups.

Как уже выло отмечено, преимуществом виртуализации серверов является возможность лёгкого изменения их архитектуры за счёт перемещения виртуальных машин. В работе было теоретически обосновано, что контейнеры позволяют более гибко реализовывать это преимущество путём механизма миграции.

Было проделано основательное изучение работы основной памяти ЭВМ, как на аппаратном уровне, так и на уровне ядра операционной системы. Были выведены метрики загруженности кластера, главной из которых является рабочие множества процессов.

Под рабочим множеством надо понимать минимальный набор активно используемых страниц памяти данного процесса. В работе предъявлено формальное определение и способы измерения этой величины.

На основе проведённого теоретического и практического анализа были предложены способы оценки загрузки контейнерного сервера и его балансировки. В перспективе планируется внедрение этих идей в промышленные приложения и технологии Open Source.

Список публикаций автора

1. Петров Д.И., Тихомиров П.О. Разработка прототипа программно-аппаратной системы быстрого реагирования автоматизированного сбора и публикации информации от разнообразных датчиков в Internet и децентрализованных сетей ZigBee для последующего резервирования данных // Труд 54-й научной конференции МФТИ «Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе». Управление и прикладная математика. Т. 2. 2011. С. 68.

2. Петров Д.И. Обеспечение масштабируемости и отказоустойчивости программной системы хранения данных на сверхбольших объёмах данных // Труды 55-й научной конференции МФТИ «Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе». Управление и прикладная математика. 2012. Т. 2. С. 130-131.

3. Петров Д.И. Распределённое управление ресурсами высокопроизводительных систем // Труды 56-й научной конференции МФТИ «Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе». Управление и прикладная математика. 2013. Т. 2. С. 160.

Список литературы

1. Э. Танненбаум. Современные операционные системы. 3-е изд.// Спб.: Питер, 2010. - 1120 с.

2. В.Е. Карпов, К.А. Коньков. Основы операционных систем. Курс лекций. Учебное пособие. 2-е изд.// М.: ИНТУИТ.РУ, 2011. - 536 с.

3. VMWare, Inc. «Software and Hardware Techniques for x86 Virtualization», 2009

4. «Virtualization», Wikipedia: The Free Encyclopedia

5. Петров Д.И. Распределённое управление ресурсами высокопроизводительных систем // Труды 56-й научной конференции МФТИ «Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе». Управление и прикладная математика. 2013. Т. 2. С. 160.

6. Нил Макалистер. Виртуализация серверов // InfoWorld, 2007

7. Advanced Micro Devices, Inc. «AMD-VTM Nested Paging», July, 2008

8. Intel®, «Intel® 64 and IA-32 Architectures Software Developer's Manual»

9. «Буфер ассоциативной трансляции», Wikipedia: The Free Encyclopedia

10. “Virtualize Your IT Infrastructure”. VMWare. 2011.

11. М. Тим Джонс, «Виртуальный Linux. Обзор методов виртуализации, архитектур и реализаций», 2007

12. Петров Д.И. Обеспечение масштабируемости и отказоустойчивости программной системы хранения данных на сверхбольших объёмах данных // Труды 55-й научной конференции МФТИ «Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе». Управление и прикладная математика. 2012. Т. 2. С. 130-131.

13. Tatu Yl onen, «Shadow Paging Is Feasible», 1994

14. «CPU Cache», Wikipedia: The Free Encyclopedia

15. «Parallels Virtuozzo Containers» http://www.parallels.com/ru/products/pvc/

16. Тихомиров П.О. Live-миграция приложений в CRIU // Труды 56-й научной конференции МФТИ «Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе». Управление и прикладная математика. 2012. Т. 2.

17. Плотник Н.С. Динамическое планирование ресурсов // Труды 56-й научной конференции МФТИ «Проблемы фундаментальных и прикладных естественных и технических наук в современном информационном обществе». Управление и прикладная математика.

Приложение. Вычисление PWS

#include <unistd.h>

#include <sys/resource.h>

#include <stdio.h>

/**

* Returns the peak (maximum so far) resident set size (physical

* memory use) measured in bytes

*/

size_t getPeakRSS( )

{

struct rusage rusage;

getrusage( RUSAGE_SELF, &rusage );

}

/**

* Returns the current resident set size (physical memory use) measured

* in bytes, or zero if the value cannot be determined on this OS.

*/

size_t getCurrentRSS( )

{long rss = 0L;

FILE* fp = NULL;

if ( (fp = fopen( "/proc/self/statm", "r" )) == NULL )

return (size_t)0L;/* Can't open? */

if ( fscanf( fp, "%*s%ld", &rss ) != 1 )

{

fclose( fp );

return (size_t)0L;/* Can't read? */

}

fclose( fp );

return (size_t)rss * (size_t)sysconf( _SC_PAGESIZE);

}