Колбасова Любовь Сергеевна

Группа 22126
Руководитель: Углянский Иван Евгеньевич

Текст ВКР

Аннотация

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

В ходе выполнения работы были проанализированы существующие подходы к легковесному профилированию и реализован прототип адаптивной системы в виртуальной машине Huawei. В рамках прототипа выполнено физическое разделение локальных и глобальной куч, добавлены механизмы эвакуации объектов и неявные барьеры на доступ, необходимые для обеспечения корректности работы системы. Разработана система обнаружения локальных точек выделения памяти, в которых создаются объекты, которые с высокой вероятностью становятся доступными более чем одному потоку-мутатору. Корректная классификация таких точек позволила заранее разместить соответствующие объекты в глобальной куче, что сократило число срабатываний барьеров глобализации и связанных с ними барьеров на доступ. При этом накладные расходы на профилирование в среднем составили 3,88%.

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

Проведенные эксперименты, включая оценку на промышленном бенчмарке SPECjbb2000, подтвердили эффективность предложенных решений. Для приложений, работающих в условиях потоково-локальной сборки мусора, достигнуто повышение пропускной способности в среднем на 138% без существенного ухудшения характеристик времени отклика. Кроме того, реализованный механизм борьбы с фрагментацией позволил повысить устойчивость системы при ограниченном объеме памяти. При этом увеличение размера генерируемого кода оказалось незначительным и составило 2,59%.