CCoW: Оптимізація копіювання під час запису з урахуванням просторової локальності в робочих навантаженнях, частина 1
Apr 02, 2024
Анотація:
Copy-on-write (CoW) — це важлива техніка керування пам’яттю, яка забезпечує ефективний обмін сторінками між процесами. Зокрема, у поєднанні CoW із fork systemcall програми, навіть із величезним обсягом пам’яті, можуть робити знімок поточних даних у пам’яті з низькими витратами.
Дані пам’яті – це дані, що зберігаються в пам’яті комп’ютера. Хоча вона відрізняється від людської пам’яті, між ними існує певний зв’язок.
По-перше, дані пам'яті можуть сприяти розвитку пам'яті людини. Наприклад, ми можемо використовувати функції запису, зберігання та пошуку комп’ютерів, щоб допомогти нам вивчати, запам’ятовувати та розуміти знання. Сучасні технології надають нам більш ефективні способи запам’ятовування та навчання, що гарантує краще оволодіння знаннями та навичками.
По-друге, дані про пам’ять також можуть допомогти людям краще керувати своїми спогадами. Акуратно організовуючи та класифікуючи дані, ми можемо швидше знаходити та згадувати потрібну інформацію, яка є дуже важливою для нашого життя, роботи та навчання.
Найважливіше те, що дані в пам’яті запобігають втраті людської пам’яті. Пам’ять людини з часом поступово слабшає, цей процес називається «забування». Однак, зберігаючи дані на жорсткому диску комп’ютера, ми можемо гарантувати, що потрібну інформацію та спогади можна буде зберегти та отримати в будь-який час.
Тому зв’язок між даними пам’яті та пам’яттю людини можна назвати позитивним. Хоча ми не повинні надто покладатися на технології, розумне використання даних пам’яті може підвищити ефективність нашої роботи та результати навчання, допомогти нам краще керувати пам’яттю та запобігти забування. Можна побачити, що нам потрібно покращити пам’ять, і Cistanche deserticola може значно покращити пам’ять, оскільки Cistanche deserticola є традиційним китайським лікарським матеріалом, який має багато унікальних ефектів, одним із яких є покращення пам’яті. Ефективність Cistanche deserticola пояснюється багатьма активними інгредієнтами, які він містить, включаючи дубильну кислоту, полісахариди, флавоноїдні глікозиди тощо. Ці інгредієнти можуть сприяти здоров’ю мозку різними шляхами.

Натисніть «Знай 10 способів покращити пам’ять».
Однак, оскільки CoW відбувається на кожній сторінці в обробнику помилок сторінки, щоразу, коли виникає помилка сторінки, операційна система повинна включатися. Це призводить до значного зниження продуктивності для робочих навантажень із інтенсивним записом.
У цьому документі пропонується копіювання-запис на основі покриття (CCoW), оптимізована схема CoW, яка враховує локальність доступу до пам’яті для пом’якшення проблеми CoW. CCoW вимірює просторову локалізацію в адресних просторах процесів за допомогою концепції покриття.
Під час обробки CoW CCoW заздалегідь копіює кілька сторінок для високолокальних регіонів пам’яті, таким чином зводячи до мінімуму залучення ОС до інтенсивного запису. Ми пояснюємо проблеми вимірювання місцевості та пропонуємо оптимізацію для реалізації концепції.
Оцінка за допомогою прототипу демонструє, що цей підхід може підвищити загальну продуктивність додатків до 10% з невеликим обсягом накладних витрат пам’яті.
Ключові слова: копіювання на запис; система віртуальної пам'яті; вилка; Redis; помилка сторінки.
1. Введення
Основна роль операційної системи (ОС) полягає в управлінні дорогоцінними системними ресурсами, а копіювання під час запису (CoW) є одним із найфундаментальніших методів керування пам’яттю, прийнятих у більшості сучасних операційних систем.
Коли двом або більше процесам потрібно мати однакові дані, схема CoW дозволяє процесам спільно використовувати ті самі сторінки, а не дублювати сторінки відразу. Спільні сторінки дублюються на вимогу лише тоді, коли один із процесів записує на спільні сторінки.
Системи віртуальної пам’яті можуть ефективно забезпечувати обмін даними між процесами, а різні функції віртуальної пам’яті, такі як дублювання адресного простору під час розгалуження процесів, дедуплікація однакових сторінок і нульовий спільний доступ до сторінок, реалізуються на основі копіювання під час запису [1–3]. Завдяки цим функціям програми можуть створювати свої копії з невеликим накладним простором і належним чином використовувати клон.
Наприклад, Redis, одна з популярних систем зберігання ключів у пам’яті [4], використовує копіювання під час запису разом із системою fork для виклику збереження даних у пам’яті до сховища. Під час обслуговування вхідних запитів основний процес Redis періодично породжує дочірній процес із форком. Дочірній процес починається зі знімка пам’яті, ідентичного основному процесу, щоб зберегти дані в пам’яті в пам’яті.

Оскільки знімок ізольований від адресного простору основного процесу, але керується функцією копіювання під час запису, основний і дочірній процеси не вимагають жодного складного механізму для підтримки узгодженості між поточними даними та знімком.
Таким чином, ми можемо вважати, що копіювання під час запису має важливе значення в системі віртуальної пам’яті. Однак поточне копіювання під час запису є проблематичним у додатках, що потребують інтенсивного запису. Зокрема, дублювання даних зазвичай відбувається в обробнику pagefault в ОС. Оскільки дублювання даних обробляється на сторінку, з кількома записами, процес може спричинити значну кількість помилок сторінки.
ОС бере участь у помилці кожної сторінки, що призводить до частих перемикань режиму ядра користувача. Враховуючи величезний обсяг пам’яті додатками, які потребують пам’яті, кількість перемикачів режимів велика.
Крім того, таблиця сторінок змінюється під час дублювання, що призводить до збиття буфера перегляду перекладу (TLB) усіх ядер у системі. Усе це призводить до незначних накладних витрат і погіршує продуктивність програм.
У цьому документі пропонується нова схема оптимізації копіювання при записі (CCoW) на основі покриття. Коли до сторінки звертаються для запису, найближчі сторінки, ймовірно, також незабаром будуть доступні для запису через просторову локалізацію доступу до пам’яті. CCoW використовує просторову локалізацію, щоб зменшити кількість помилок сторінки для копіювання під час запису. Зокрема, CCoW обробляє копіювання під час запису з великою деталізацією (так званою областю).
Копіюючи кілька сторінок у обробнику помилок сторінок, CCoW може зменшити значну кількість помилок сторінок для копіювання під час запису та супутніх накладних витрат. Однак ступінь просторової локальності значно змінюється залежно від розташування в адресному просторі процесу, і дублювання низьколокальних частин пам’яті викликає лише накладні витрати з точки зору часу та простору.
Щоб подолати цей недолік, ми пропонуємо точний механізм з низькими накладними витратами для оцінки просторової локалізації в адресному просторі процесу. CCoW підраховує кількість копіювання при записі та записів у кожному регіоні.
Переносячи інформацію про місцевість через розгалуження, ми можемо оцінити ступінь просторової локальності, а CCoW ефективно виконує попереднє копіювання лише для регіонів із високою локальністю. Ми реалізували запропоновану схему CCoW у ядрі Linux.
Будучи інтегрованими у систему віртуальної пам’яті операційної системи, програми можуть використовувати CCoW без змін. Ми проаналізували характеристики продуктивності за допомогою мікротесту, і оцінка за допомогою еталонного тесту з реалістичними робочими навантаженнями показує, що CCoW може підвищити продуктивність програми до 10% за розумного обсягу накладних витрат пам’яті.

Решта цього документа організована таким чином. У Розділі 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 байт). Однак адресний простір зазвичай малозаповнений, і більша частина адресного простору не потрібна.
Це пояснює ієрархічну організацію таблиці сторінок. Вся таблиця сторінок розділена на частини таблиці сторінок, які вміщуються на сторінці. Фрагменти таблиці сторінок не розподіляються на нерозподілені адресні області.

Заповнені частини таблиці сторінок можна узагальнити як частини таблиці сторінок вищого рівня. Цей напрямок повторюється до тих пір, поки на одній сторінці не залишаться лише частини, таким чином дозволяючи компактну форму таблиць сторінок.
For more information:1950477648nn@gmail.com






