Адаптивная генерация барьеров и точек выделения памяти в условиях потоково-локальной сборки мусора
Колбасова Любовь Сергеевна
Группа 22126
Руководитель:
Углянский Иван Евгеньевич
Аннотация
Дипломная работа посвящена исследованию и разработке методов динамической идентификации неэффективных барьеров и точек выделения памяти, а также применению механизмов многоуровневой перекомпиляции для их оптимизации. Данные подходы рассматривались в системе с потоково-локальной сборкой мусора и разделением памяти на локальные и глобальные кучи.
В ходе выполнения работы были проанализированы существующие подходы к легковесному профилированию и реализован прототип адаптивной системы в виртуальной машине Huawei. В рамках прототипа выполнено физическое разделение локальных и глобальной куч, добавлены механизмы эвакуации объектов и неявные барьеры на доступ, необходимые для обеспечения корректности работы системы. Разработана система обнаружения локальных точек выделения памяти, в которых создаются объекты, которые с высокой вероятностью становятся доступными более чем одному потоку-мутатору. Корректная классификация таких точек позволила заранее разместить соответствующие объекты в глобальной куче, что сократило число срабатываний барьеров глобализации и связанных с ними барьеров на доступ. При этом накладные расходы на профилирование в среднем составили 3,88%.
Также в систему был добавлен механизм профилирования, собирающий информацию о частоте срабатывания барьеров во время исполнения программы. На основе полученных данных принималось решение о целесообразности замены неявного барьера на явную проверку, выполняемую непосредственно в коде программы. Такой подход позволил адаптировать механизм барьеров к реальному профилю приложения и снизить накладные расходы от частой обработки аппаратных исключений.
Проведенные эксперименты, включая оценку на промышленном бенчмарке SPECjbb2000, подтвердили эффективность предложенных решений. Для приложений, работающих в условиях потоково-локальной сборки мусора, достигнуто повышение пропускной способности в среднем на 138% без существенного ухудшения характеристик времени отклика. Кроме того, реализованный механизм борьбы с фрагментацией позволил повысить устойчивость системы при ограниченном объеме памяти. При этом увеличение размера генерируемого кода оказалось незначительным и составило 2,59%.