CCoW: оптимизация копирования при записи с учетом пространственной локальности в рабочих нагрузках, часть 6
Apr 03, 2024
Оптимальный размер региона и пороговое значение варьируются в зависимости от характеристик рабочей нагрузки. Чтобы оценить влияние рабочей нагрузки, мы измеряем производительность CCoW на рабочих нагрузках в различных местах. В частности, мы изменили параметр Zipfdistribution, определяющий степень локальности.
Существует тесная связь между человеческой памятью и рабочей нагрузкой. Когда нам необходимо обработать большие объемы информации или выполнить сложные задачи, наш мозг должен сохранять бдительность, чтобы гарантировать, что вся необходимая информация обрабатывается и сохраняется правильно. Нейроны мозга постоянно соединяются и общаются, что сильно влияет на то, как мы думаем и запоминаем.
Хотя обработка больших объемов информации и выполнение сложных задач могут бросить вызов нашей памяти и когнитивным способностям, исследования показывают, что при правильном обучении и практике мы можем значительно улучшить нашу память и производительность. Например, с помощью экспериментов ученые обнаружили, что благодаря обширной тренировке памяти и практике люди могут значительно улучшить свою память и эффективность работы.
С этой точки зрения можно сделать вывод, что постоянная практика и обучение очень важны для тех, кто хочет улучшить свою память и эффективность работы. Кроме того, сохраняйте позитивный настрой, поскольку стресс может ухудшить память и производительность.
Таким образом, существует сильная корреляция между рабочей нагрузкой и памятью. Если мы остаемся сосредоточенными, регулярно тренируемся и практикуемся, а также сохраняем позитивный настрой, мы можем значительно улучшить нашу память и эффективность работы. Cistanche Deserticola также может регулировать баланс нейротрансмиттеров, например, повышать уровень ацетилхолина и факторов роста, которые важны для памяти и обучения. Кроме того, Cistanche Deserticola также может улучшить кровоток и способствовать доставке кислорода, что может гарантировать, что мозг получает достаточное количество питательных веществ и энергии, тем самым повышая жизнеспособность и выносливость мозга.

Нажмите «Узнайте способы улучшить свою память».
Доступы распределяются равномерно, если равно {{0}}, и чем выше значение , тем выше уровень локальности рабочей нагрузки. Когда значение равно 1,0, примерно 80% операций задействуют 20% данных.
Как гласит принцип Парето, такая степень локальности обычно встречается в нескольких реальных рабочих нагрузках. Мы измеряем три разных значения: 1.0, 0.9 и 1,1, где 1.0 — базовый уровень, а 0.9 и 1,1 представляют собой рабочая нагрузка с низкой и высокой локальностью соответственно.
Исходная производительность CoW варьируется в зависимости от рабочих нагрузок, поэтому период разветвления для рабочей нагрузки был установлен в соответствии со временем, измеренным с помощью исходной настройки CoW. Например, если исходной конфигурации CoW требуется 10 секунд для восстановления нормальной производительности после разветвления, другие конфигурации CCoW также разветвляют дочерние процессы каждые 10 с.
На рис. 5 показаны средние показатели пропускной способности и использования памяти CCoW при различных локальных рабочих нагрузках. Для рабочей нагрузки с низкой локальностью конфигурации с порогами smallCCoW демонстрируют лучшую производительность, чем конфигурации с большими порогами. «CCoW-all» даже превосходит исходный CoW на 15% в рабочей нагрузке с низкой локальностью. Это связано с эффективностью предварительной копии. При рабочей нагрузке с низкой локальностью большая часть памяти должна реплицироваться, поскольку доступы распределяются по всему адресному пространству процесса. По сути, копирование целых регионов приводит к предварительному копированию необходимой памяти с минимальными издержками.

Таким образом, чем меньше порог, тем выше производительность программы при низколокальной рабочей нагрузке. Однако эта тенденция имеет противоположный эффект при работе с высоколокальными рабочими нагрузками. При высоколокальных рабочих нагрузках многие обращения сосредоточены на нескольких страницах.
Это означает, что при копировании-записи необходимо реплицировать лишь небольшую часть памяти. Копирование всей области при ошибке страницы приводит к копированию страниц, к которым вообще нет доступа.
Это приводит лишь к временным издержкам, снижающим производительность при выполнении рабочих нагрузок с более высокой локальностью. В результате CCoW-all демонстрирует худшую производительность при высоколокальной рабочей нагрузке. В других конфигурациях наблюдаются аналогичные закономерности базовых рабочих нагрузок: пик производительности достигается при пороговом значении 80 % и снижается при меньших пороговых значениях.

Использование памяти в тесте показывает устойчивую тенденцию независимо от степени локальности рабочих нагрузок. «CCoW-all» всегда представляет собой максимальное использование памяти, поскольку после разветвления всегда копирует все страницы в памяти. Кроме того, объем памяти обратно пропорционален пороговому значению; чем меньше пороговое значение, тем больше памяти использует тест.
Усиление памяти увеличено всего на 10% по сравнению с исходной конфигурацией CoW, которая считается разумной. Помимо анализа производительности CCoW, мы сравниваем производительность CCoW с производительностью прозрачной огромной страницы (THP). схема линукса.
THP в чем-то похож на CCoW, поскольку его цель — снизить накладные расходы, возникающие при работе с небольшими страницами. «CoW-THP» на рисунке 5 представляет производительность конфигурации с поддержкой THP. Обратите внимание, что система с поддержкой THP обрабатывает CoW, разбивая огромные страницы на базовые перед копированием ошибочной страницы, как и другие схемы, оптимизирующие THP [12–15,17].
Мы можем заметить, что THP демонстрирует лучшую производительность, чем конфигурация по умолчанию «только CoW». Мы связываем прирост производительности с повышением эффективности трансляции адресов огромных страниц.
В частности, согласно схеме THP, «горячая» часть адресного пространства процесса, скорее всего, будет разбита на базовые страницы, тем самым обеспечивая ту же производительность, что и в конфигурации «только CoW». Однако холодная часть адресного пространства процесса не разделена и поддерживается огромными страницами. Таким образом, это может в некоторой степени повысить производительность приложения.
Однако THP не обеспечивает такого значительного улучшения производительности, как CCoW. На рис. 6 показано совокупное распределение пропускной способности во время оценки. Ось X представляет пропускную способность в операциях в секунду, а ось Y представляет совокупное соотношение производительности к производительности. значение пропускной способности. За исключением CCoW-all, мы можем обнаружить три часто наблюдаемых диапазона пропускной способности независимо от конфигураций.
Первая группа в совокупном соотношении от {{0}} до 0.1 указывает период, в течение которого производительность эталонного теста снижается сразу после форка. Затем производительность восстанавливается со временем, как и во второй группе с совокупным коэффициентом от 0.1 до 0,7.
Остальные совокупные коэффициенты в диапазоне от {{0}},7 до 1,0 относятся к доступам, которые не вызывают ошибок страниц. В целом, конфигурации CCoW, как правило, имеют более серьезные падения производительности, чем исходный CoW. В частности, при высокой локальной рабочей нагрузке исходной схемы CoW пропускная способность падает примерно до 1900 тыс. операций в секунду сразу после разветвления.

Затем он медленно увеличивается до диапазона 2500 тыс. операций в секунду. С CCoW производительность упала еще сильнее, до диапазона 1700 тыс. операций в секунду. Однако производительность восстанавливалась быстрее, большую часть времени демонстрируя лучшую производительность, чем исходный CoW (т. е. в основном в правой части совокупного графика). Мы можем наблюдать аналогичную тенденцию и для других рабочих нагрузок: конфигурация CCoW-all демонстрирует экстремальное поведение; сразу после форка производительность значительно падает и остается низкой, в то время как большая часть адресного пространства копируется при распределенном доступе.
Однако после этого момента возникает лишь несколько ошибок страниц, поэтому большинство обращений обрабатываются без ошибок страниц. Таким образом, пропускная способность имеет бимодальное распределение в CCoW. В результате этой оценки мы подтвердили, что CCoW обеспечивает оптимальную производительность за счет оптимизации общего случая.
Однако падение производительности следует устранить, чтобы получить лучшие характеристики производительности. С этой целью в настоящее время мы работаем над регулированием объема копируемых данных сразу после форка.

4.2. Производительность CCoW при реалистичной рабочей нагрузке
Чтобы оценить предлагаемый CCoW при реальной рабочей нагрузке, мы использовали Redis и YCSB. Redis — это база данных «ключ-значение» в памяти, широко используемая для ускорения приложений масштаба Интернета.
Мы использовали YCSB Benchmark для заполнения пар ключ-значение в экземпляре Redis и выполнения над ними операций. В частности, экземпляр Redis инициализируется с использованием 10 ГБ пар ключ-значение с конфигурацией YCSB по умолчанию.
Все ключи и значения имеют размер 23 и 100 байт соответственно, и каждый ключ содержит 10 полей значений. После заполнения экземпляра Redis мы настроили его для создания снимков, а затем выполнили операции обновления с помощью YCSB.
Чтобы включить временную локальность в доступы по ключам, мы настроили рабочую нагрузку YCSB для выбора целевых ключей в соответствии с распределением Zip, используя значение параметра 1.0.
Делая 100 ГБ обновлений, мы собирали данные о пропускной способности за каждую секунду отчета теста YCSB. На рис. 7 показаны средние значения пропускной способности и использования памяти экземпляра Redis, когда система настроена на использование исходного CoW или CCoW. Обратите внимание, что мы использовали размер региона 2 МБ, и все значения результатов были нормализованы до значений CoW.

В целом все конфигурации CCoW превзошли исходную CoW, независимо от порога покрытия. Аналогичным образом, как мы анализировали выше, производительность определялась компромиссом между приростом производительности от уменьшения копирования при записи и накладными расходами на копирование дополнительных страниц. Когда пороговое значение велико, копируются только несколько регионов, что делает как возможность оптимизации, так и накладные расходы памяти небольшими.
Когда пороговое значение снижается ниже 85 %, объем памяти увеличивается, что приводит к увеличению накладных расходов. В результате средняя пропускная способность CCoW варьируется в зависимости от порога покрытия, но демонстрирует улучшение производительности до 5% по сравнению с исходным CoW.
При рабочей нагрузке Redis и YCSB мы наблюдали лишь незначительное улучшение производительности при использовании THP. Это связано с тем, что в рабочей нагрузке доступы на запись разбросаны по всему адресному пространству процесса, а огромные страницы эффективно разбиваются на базовые при обработке CoW.
Поскольку процесс Redis может иметь только несколько огромных страниц, его производительность аналогична базовой конфигурации. Этот результат показывает, что подход на основе THP менее эффективен при рабочих нагрузках с интенсивным объемом записи, а CCoW превосходит THP.
Чтобы оценить точность механизма определения регионов с высокой локализацией, мы классифицировали причину механизма создания копий для каждой скопированной страницы. В частности, мы собрали долю скопированных страниц среди всех скопированных страниц. Когда коэффициент предварительного копирования равен x%, увеличивая общий объем памяти на y%, мы можем вычислить коэффициент ненужного предварительного копирования, разделив y на x.
Например, в конфигурации CCoW-80 копируется 26,9% скопированных страниц, что увеличивает объем используемой памяти на 6,7%. Это означает, что 24,9% страниц предварительного копирования не упоминаются. В таблице 1 суммированы расчеты. Коэффициент ненужной предварительной копии колеблется от 23,4% до 35,6%, и по результату оценки можно сделать вывод, что предложенная схема точно захватывает высоколокальные регионы.

5. Выводы
В этом исследовании мы предложили CCoW — оптимизированную схему копирования при записи для рабочих нагрузок с высокой пространственной локальностью. CCoW делит адресное пространство процесса на регионы и оценивает их локальность с учетом покрытия.
Запись в регион с высокой локальностью приводит к тому, что обработчик ошибок страниц выполняет предварительное копирование близлежащих страниц. Чтобы правильно отслеживать покрытие после предварительного копирования, CCoW использует грязный бит в таблице страниц. Оценка с помощью эталонных тестов подтвердила, что предложенная схема может идентифицировать регионы с высокой локализацией с небольшими накладными расходами, обеспечивая повышение производительности приложений без изменений.
Как мы уже упоминали, производительность значительно падает сразу после форка из-за огромного количества копируемых данных. В настоящее время мы работаем над управлением снижением производительности, регулируя скорость предварительного копирования и выполняя предварительное копирование асинхронно. Мы также планируем включить адаптивный механизм, который настраивает параметры конфигурации в соответствии с характеристиками текущей рабочей нагрузки.
Вклад авторов: Концептуализация, М.Х. и С.-Х.К.; методология, МЗ; программное обеспечение, МХ; валидация, МХ и С.-ХК; формальный анализ, М.Х. и С.-Х.К.; расследование, М.Х. и С.-ГК; ресурсы, С.-ГК; курирование данных, MH; письменно-оригинальная подготовка черновика, МЗ; написание-рецензирование и редактирование, М.Х. и С.-Х.К.; визуализация, МГ; надзор, С.-Х.К.; администрация проекта,С.-ХК; приобретение финансирования, С.-Х.К. Все авторы прочитали и согласились с опубликованной версией рукописи.

Финансирование: Это исследование было поддержано грантом Научно-исследовательского института электроники и телекоммуникаций (ETRI), финансируемым правительством Кореи (20ZS1310), и программой BK21 FOUR Национального исследовательского фонда Кореи, финансируемой Министерством образования (NRF5199991014091).
Заявление Институционального наблюдательного совета: Неприменимо.
Заявление об информированном согласии: Не применимо.
Заявление о доступности данных: Не применимо.
Конфликты интересов: Авторы заявляют об отсутствии конфликта интересов.
Рекомендации
1. Горман, М. Понимание диспетчера виртуальной памяти Linux; Прентис-Холл: Аппер-Сэддл-Ривер, Нью-Джерси, США, 2007 г.
2. Бовет, Д.П.; Чезати, М. Понимание ядра Linux; О'Рейли: Ньютон, Массачусетс, США, 2001 г.
3. Лав, Р. Разработка ядра Linux, 3-е изд.; Аддисон Уэсли: Бостон, Массачусетс, США, 2010 г.
4. Лабс, Р. Редис. Доступно онлайн: https://github.com/redis/redis (по состоянию на 7 июня 2021 г.).
5. Зильбершац А.; Гэлвин, П.Б.; Ганье, Г. Концепции операционной системы; Addison-Wesley Longman Publishing Co., Inc.: Бостон, Массачусетс, США, 2018 г.
6. Харрис, С.Л.; Харрис, Д. Цифровой дизайн и компьютерная архитектура; Морган Кауфманн: Берлингтон, Массачусетс, США, 2022 г.
7. Аби-Чахла, Ф. Intel Core i7 (Nehalem): архитектура AMD? Доступно в Интернете: https://www.tomshardware.com/reviews/Intel-i7-nehalem-cpu,2041.html (по состоянию на 18 октября 2021 г.).
8. Фам, Б.; Бхаттачарджи, А.; Экерт, Ю.; Лох, Г.Х. Увеличение охвата TLB за счет использования кластеризации при переводе страниц. В материалах 20-го Международного симпозиума IEEE по высокопроизводительной компьютерной архитектуре (HPCA'14) 2014 г., Орландо, Флорида, США, 15–19 февраля 2014 г.; стр. 558–567.
For more information:1950477648nn@gmail.com






