CCoW: оптимизация копирования при записи с учетом пространственной локальности в рабочих нагрузках, часть 1

Apr 02, 2024

Абстрактный:

Копирование при записи (CoW) — это важный метод управления памятью, который обеспечивает эффективное совместное использование страниц между процессами. В частности, в сочетании CoW с системным вызовом fork приложения, даже с огромным объемом памяти, могут сделать снимок текущих данных в памяти с низкими издержками.

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

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

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

Самое главное, данные в памяти предотвращают потерю памяти человеком. Человеческая память со временем постепенно ослабевает. Этот процесс называется «забыванием». Однако, сохраняя данные на жестком диске компьютера, мы можем гарантировать, что необходимая нам информация и воспоминания могут быть сохранены и доступны в любое время.

Следовательно, связь между данными памяти и человеческой памятью можно назвать положительной. Хотя нам не следует слишком полагаться на технологии, разумное использование данных памяти может повысить эффективность нашей работы и результаты обучения, помочь нам лучше управлять памятью и предотвратить забывание. Видно, что нам необходимо улучшить память, а цистанхе пустынный может значительно улучшить память, потому что цистанхе пустынный — это традиционное китайское лекарственное средство, обладающее множеством уникальных эффектов, одним из которых является улучшение памяти. Эффективность Cistanche Deserticola обусловлена ​​множеством содержащихся в нем активных ингредиентов, включая дубильную кислоту, полисахариды, флавоноидные гликозиды и т. д. Эти ингредиенты могут способствовать здоровью мозга различными путями.

improve memory

Нажмите «Узнай 10 способов улучшить память»

Однако, поскольку CoW выполняется для каждой страницы в обработчике ошибок страницы, каждый раз, когда происходит ошибка страницы, должна вмешиваться операционная система. Это приводит к значительному снижению производительности при рабочих нагрузках с интенсивным объемом записи.

В этом документе предлагается копирование при записи на основе покрытия (CCoW), оптимизированная схема CoW, учитывающая локальность доступа к памяти, чтобы смягчить проблему CoW. CCoW измеряет пространственную локальность в адресных пространствах процесса с помощью концепции покрытия.

При обработке CoW CCoW заранее копирует несколько страниц в высоколокальные области памяти, тем самым сводя к минимуму участие ОС в рабочих нагрузках с интенсивным объемом записи. Мы объясняем проблемы измерения местности и обеспечиваем оптимизацию для реализации концепции.

Оценка с использованием прототипа показывает, что этот подход может улучшить общую производительность приложений до 10% при небольшом объеме памяти.

Ключевые слова: копирование при записи; система виртуальной памяти; вилка; Редис; ошибка страницы.

1. Введение

Основная роль операционной системы (ОС) заключается в управлении ценными системными ресурсами, а копирование при записи (CoW) — это один из наиболее фундаментальных методов управления памятью, принятый в большинстве современных операционных систем.

Когда два или более процессов должны иметь одинаковые данные, схема CoW позволяет процессам совместно использовать одни и те же страницы, а не сразу дублировать страницы. Общие страницы дублируются по требованию только тогда, когда один из процессов записывает данные на общие страницы.

Системы виртуальной памяти могут эффективно обеспечивать совместное использование данных между процессами, а различные функции виртуальной памяти, такие как дублирование адресного пространства во время разветвлений процессов, дедупликация одних и тех же страниц и нулевое совместное использование страниц, реализуются на основе копирования при записи [1–3]. Благодаря этим функциям приложения могут создавать свои копии с небольшими затратами места и использовать клон соответствующим образом.

Например, Redis, одна из популярных систем хранения значений ключей в памяти [4], использует копирование при записи в сочетании с системой fork для вызова сохранения данных в памяти в хранилище. При обслуживании входящих запросов основной процесс Redis периодически порождает дочерний процесс с ветвлением. Дочерний процесс начинается со снимка памяти, идентичного основному процессу, для сохранения данных в памяти в хранилище.

short term memory how to improve

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

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

ОС участвует в каждой ошибке страницы, что приводит к частым переключениям режима пользовательского ядра. Учитывая огромный объем памяти, потребляемый приложениями, интенсивно использующими память, количество переключателей режимов велико.

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

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

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

Чтобы преодолеть этот недостаток, мы предлагаем точный механизм с низкими издержками для оценки пространственной локальности в адресном пространстве процесса. CCoW подсчитывает количество операций копирования и записи в каждом регионе.

Перенося информацию о местонахождении через развилки, мы можем оценить степень пространственной локализации, а CCoW эффективно выполняет предварительное копирование только для регионов с высокой локализацией. Мы реализовали предложенную схему CCoW в ядре Linux.

Приложения, интегрированные в систему виртуальной памяти операционной системы, могут использовать CCoW без изменений. Мы проанализировали характеристики производительности с помощью микротеста, и оценка с использованием теста с реалистичными рабочими нагрузками показала, что CCoW может повысить производительность приложений до 10 % при разумных затратах памяти.

ways to improve memory

Остальная часть этой статьи организована следующим образом. В разделе 2 мы рассмотрим предысторию и связанную с ней работу, включая виртуальную память и форк. Подробности разработки CCoW и его реализации мы объясняем в разделе 3. В разделе 4 представлены результаты оценки CCoW. Наконец, мы завершаем эту статью в разделе 5.

2. Предыстория и сопутствующая работа

2.1. Пейджинг и виртуальная память

Почти все современные компьютеры и операционные системы используют подкачивающую и виртуальную память в качестве основной схемы управления памятью [5]. Основная память разделена на страницы одинакового размера, и операционная система выделяет или освобождает память из пользовательских процессов в страничном модуле.

Операционные системы также поддерживают сопоставление адресных пространств процессов с физическим местоположением в системе. Каждая логическая страница в адресном пространстве процесса отображается в свое физическое местоположение, и это сопоставление сохраняется в форме таблицы страниц.

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

Размер страницы, хотя и зависит от архитектуры, в большинстве архитектур обычно составляет 4 КБ. Это означает, что каждые 4 КБ в адресном пространстве процесса должны иметь один PTE. Учитывая огромный размер адресного пространства процесса, размер таблицы страниц даже для одного процесса может быть огромным.

Например, таблица страниц для процесса в 64-битной архитектуре со страницами по 4 КБ и 8-байтовым PTE будет иметь размер 32 ПБ (264/212 × 8=255 байт). Однако адресное пространство обычно малонаселено, и большая часть адресного пространства не требуется.

Это проясняет иерархическую организацию таблицы страниц. Вся таблица страниц делится на части таблицы страниц, которые помещаются на странице. Части таблицы страниц не распределяются по нераспределенным адресным областям.

memory enhancement

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


For more information:1950477648nn@gmail.com

Вам также может понравиться