Организация эффективного менеджера памяти,...

28
Организация эффективного Организация эффективного менеджера памяти, менеджера памяти, минимизирующего минимизирующего темпоральные ошибки темпоральные ошибки Милославский А. И. Милославский А. И.

description

Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки. Милославский А. И. Термины. Крах . Аварийное завершение работы программы. Атака . Возможность вмешаться в ход выполнения программы злоумышленником. UB . Undefined behavior . Непредсказуемое поведение программы. - PowerPoint PPT Presentation

Transcript of Организация эффективного менеджера памяти,...

Page 1: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Организация Организация эффективного эффективного

менеджера памяти, менеджера памяти, минимизирующего минимизирующего

темпоральные ошибкитемпоральные ошибкиМилославский А. И.Милославский А. И.

Page 2: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

ТерминыТермины КрахКрах. Аварийное завершение работы . Аварийное завершение работы

программы.программы. АтакаАтака. Возможность вмешаться в ход . Возможность вмешаться в ход

выполнения программы выполнения программы злоумышленником.злоумышленником.

UBUB. . Undefined behaviorUndefined behavior. . Непредсказуемое поведение Непредсказуемое поведение программы. программы.

Утечки памятиУтечки памяти. . ОчисткаОчистка. Приведение освобожденной . Приведение освобожденной

памяти в эффективное для повторного памяти в эффективное для повторного выделения состояние.выделения состояние.

Page 3: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Виды темпоральных Виды темпоральных ошибокошибок

1. Многократное освобождение 1. Многократное освобождение блока.блока. Нарушение работы системы Нарушение работы системы

выделения памяти. выделения памяти. Удаление чужих данных.Удаление чужих данных.

Page 4: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

2. Работа с блоком после 2. Работа с блоком после освобождения его памяти.освобождения его памяти. Чтение стертых данных. Чтение стертых данных. Ошибочное чтение чужих данных. Ошибочное чтение чужих данных. Перезапись чужих данных.Перезапись чужих данных.

Виды темпоральных Виды темпоральных ошибокошибок

Page 5: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

3. Удаление неверного блока 3. Удаление неверного блока памяти.памяти.

4. Утечки памяти.4. Утечки памяти.

Виды темпоральных Виды темпоральных ошибокошибок

Page 6: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Постановка задачиПостановка задачи Требования:Требования:

1. Умеренные накладные расходы. 1. Умеренные накладные расходы. 2. Неограниченное время работы.2. Неограниченное время работы. 3. Минимизация всех негативных последствий 3. Минимизация всех негативных последствий

темпоральных ошибок. темпоральных ошибок. 4. Возможность выполнять временную работу, 4. Возможность выполнять временную работу,

связанную с большими затратами связанную с большими затратами вычислительной мощности, в «спокойное вычислительной мощности, в «спокойное время» в фоновом режиме. время» в фоновом режиме.

5. Ранняя очистка.5. Ранняя очистка. 6. Работа системы с кодом, не приспособленным 6. Работа системы с кодом, не приспособленным

для этого специально. для этого специально.

Пожелания:Пожелания: 7. Малые накладные расходы. 7. Малые накладные расходы. 8. Возможность аппаратной поддержки. 8. Возможность аппаратной поддержки. 9. Полное исключение темпоральных ошибок.9. Полное исключение темпоральных ошибок.

Page 7: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

ПредыдущиеПредыдущие работыработы [1] [1] DinakarDhurjati, Vikram AdveDinakarDhurjati, Vikram Adve – –

“Efficiently Detecting All Dangling Pointer “Efficiently Detecting All Dangling Pointer Uses in Production Servers”Uses in Production Servers”

[2] [2] Wei Xu, Daniel C. DuVarney, R. Wei Xu, Daniel C. DuVarney, R. SekarSekar - “An Efficient and Backwards- - “An Efficient and Backwards-Compatible Transformation to Ensure Compatible Transformation to Ensure Memory Safety of C Programs”Memory Safety of C Programs”

[3] [3] Harish Patil, Charles FischerHarish Patil, Charles Fischer - “Low- - “Low-cost, Concurrent Checking of Pointer and cost, Concurrent Checking of Pointer and Array accesses in C ProgramsArray accesses in C Programs””

[4] [4] Emery D.Berger, Benjamin G.ZornEmery D.Berger, Benjamin G.Zorn – – “DieHard: Probabilistic Memory Safety for “DieHard: Probabilistic Memory Safety for Unsafe Languages”Unsafe Languages”

Page 8: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Сбор статистикиСбор статистики

1. Стартовая нагрузка1. Стартовая нагрузка 2. Объем использованного 2. Объем использованного

виртуального пространства в единицу виртуального пространства в единицу временивремени

3. Распределение запросов по 3. Распределение запросов по размеру запрошенного блока памятиразмеру запрошенного блока памяти

4. Типичное время жизни блока4. Типичное время жизни блока 5. Чередование выделения и 5. Чередование выделения и

освобождения блоковосвобождения блоков

Page 9: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки
Page 10: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки
Page 11: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

EVE Online

Page 12: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

EVE Online

Page 13: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

EVE Online

Page 14: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Компилятор из поставки Visual Studio 2003

Page 15: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Компилятор из поставки Visual Studio 2003

Page 16: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Компилятор из поставки Visual Studio 2003

Page 17: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Visual Studio 2003

Page 18: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Visual Studio 2003

Page 19: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Visual Studio 2003

Page 20: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Стартовая нагрузкаСтартовая нагрузка

Пик достигается за несколько Пик достигается за несколько секундсекунд

Часто выполняется до 50% от Часто выполняется до 50% от общего числа запросовобщего числа запросов

В основном короткоживущие блокиВ основном короткоживущие блоки Большое чередованиеБольшое чередование Высокий потенциал фрагментацииВысокий потенциал фрагментации

Page 21: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Объем использованного Объем использованного виртуального виртуального

пространства в единицу пространства в единицу временивремени

2-3Мб в секунду2-3Мб в секунду Можно ожидать 30МбМожно ожидать 30Мб//сс Без очистки адресное Без очистки адресное

пространство исчерпается за 100 пространство исчерпается за 100 днейдней

Page 22: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Распределение запросов Распределение запросов по размеру запрошенного по размеру запрошенного

блока памятиблока памяти

Всегда есть типичные размеры Всегда есть типичные размеры блоковблоков

Возможна оптимизация за счет Возможна оптимизация за счет отдельных менеджеров памятиотдельных менеджеров памяти

Page 23: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Типичное время жизни Типичное время жизни блокаблока

В основном очень малое время В основном очень малое время жизнижизни

С учетом 15000 запросов в С учетом 15000 запросов в секунду, высокий риск секунду, высокий риск возникновения проблем из-за возникновения проблем из-за ошибокошибок

Page 24: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Чередование выделения и Чередование выделения и освобождения блоковосвобождения блоков

Короткоживущие блоки сильно Короткоживущие блоки сильно чередуются с долгоживущимичередуются с долгоживущими

Высокая степень фрагментацииВысокая степень фрагментации Корреляция с размером блокаКорреляция с размером блока

Page 25: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Среднее число блоковСреднее число блоков

Для Для EVE Online – EVE Online – около 3 около 3 миллионовмиллионов

Повышенная сложность учета Повышенная сложность учета блоковблоков

Page 26: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

DieHardDieHard OKOK МногократноеМногократное

освобождение блока.освобождение блока. 99.5%99.5% Работа с блоком послеРабота с блоком после

освобождения его освобождения его памяти.памяти.

99.5%99.5% Удаление неверногоУдаление неверного блока памяти.блока памяти.

XX Утечки памяти.Утечки памяти.

Page 27: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

РезультатыРезультаты работы работы Написана платформа для испытаний Написана платформа для испытаний

менеджера памяти на реальных программахменеджера памяти на реальных программах Написана система сбора статистики Написана система сбора статистики

использования памяти в реальных программахиспользования памяти в реальных программах Написана программа для анализа собранной Написана программа для анализа собранной

статистикистатистики Выполнен анализ собранной статистикиВыполнен анализ собранной статистики Проведены исследования различных способов Проведены исследования различных способов

устройства менеджера памятиустройства менеджера памяти Рассмотрено влияние факторов, выявленных в Рассмотрено влияние факторов, выявленных в

статистике, на исследованные методыстатистике, на исследованные методы Собрана литература по вариантам, Собрана литература по вариантам,

оптимизациям и различным аспектам оптимизациям и различным аспектам реализации консервативных сборщиков реализации консервативных сборщиков мусорамусора

Page 28: Организация эффективного менеджера памяти, минимизирующего темпоральные ошибки

Дальнейшая работаДальнейшая работа Придумать другие методы реализации Придумать другие методы реализации

менеджера памяти для лучшего менеджера памяти для лучшего выполнения требований и пожеланийвыполнения требований и пожеланий

Добавить консервативный сборщик Добавить консервативный сборщик мусора (подчасть 1 пункта)мусора (подчасть 1 пункта)

Реализовать менеджер памяти в кодеРеализовать менеджер памяти в коде Испытать менеджера памяти на Испытать менеджера памяти на

реальных программах с реальных программах с использованием готовой платформыиспользованием готовой платформы

Внедрить готовый менеджер памяти в Внедрить готовый менеджер памяти в ОСОС