CCoW: Optymalizacja kopiowania przy zapisie z uwzględnieniem lokalizacji przestrzennej w obciążeniach Część 1

Apr 02, 2024

Abstrakcyjny:

Kopiowanie przy zapisie (CoW) to podstawowa technika zarządzania pamięcią, która umożliwia wydajne udostępnianie stron między procesami. W szczególności, w połączeniu z CoW z wywołaniem systemowym fork, aplikacje, nawet przy ogromnym zużyciu pamięci, mogą wykonać migawkę bieżących danych w pamięci przy niewielkim obciążeniu.

Dane pamięciowe oznaczają dane przechowywane w pamięci komputera. Chociaż różni się ona od ludzkiej pamięci, istnieje między nimi pewien związek.

Po pierwsze, dane pamięciowe mogą sprzyjać rozwojowi ludzkiej pamięci. Na przykład możemy używać funkcji komputerów do nagrywania, przechowywania i wyszukiwania, aby pomóc nam uczyć się, zapamiętywać i rozumieć wiedzę. Nowoczesna technologia zapewnia nam skuteczniejsze sposoby zapamiętywania i uczenia się, co sprawia, że ​​możemy lepiej doskonalić wiedzę i umiejętności.

Po drugie, dane dotyczące pamięci mogą również pomóc ludziom lepiej zarządzać wspomnieniami. Starannie organizując i klasyfikując dane, możemy szybciej znajdować i przywoływać potrzebne informacje, co jest bardzo ważne w naszym życiu, pracy i nauce.

Co najważniejsze, dane przechowywane w pamięci zapobiegają utracie pamięci przez człowieka. Ludzka pamięć stopniowo słabnie z biegiem czasu, jest to proces zwany „zapominaniem”. Jednakże przechowując dane na dysku twardym komputera, możemy mieć pewność, że potrzebne informacje i wspomnienia będą mogły zostać zachowane i odzyskane w dowolnym momencie.

Można zatem powiedzieć, że związek pomiędzy danymi pamięciowymi a pamięcią człowieka jest dodatni. Chociaż nie powinniśmy zbytnio polegać na technologii, rozsądne wykorzystanie danych pamięciowych może poprawić naszą efektywność pracy i wyniki w nauce, pomóc nam lepiej zarządzać pamięcią i zapobiec zapominaniu. Widać, że musimy poprawić pamięć, a Cistanche desericola może znacznie poprawić pamięć, ponieważ Cistanche desericola to tradycyjny chiński materiał leczniczy, który ma wiele unikalnych efektów, z których jednym jest poprawa pamięci. Skuteczność Cistanche Deserticola wynika z wielu zawartych w niej składników aktywnych, w tym kwasu garbnikowego, polisacharydów, glikozydów flawonoidowych itp. Składniki te mogą promować zdrowie mózgu na różne sposoby.

improve memory

Kliknij Poznaj 10 sposobów na poprawę pamięci

Jednakże, ponieważ CoW odbywa się na każdej stronie w procedurze obsługi błędów strony, za każdym razem, gdy wystąpi błąd strony, powinien zostać zaangażowany system operacyjny. Prowadzi to do znacznego pogorszenia wydajności w przypadku obciążeń wymagających intensywnego zapisu.

W artykule zaproponowano oparty na pokryciu zapis kopiowy (CCoW), zoptymalizowany schemat CoW uwzględniający lokalizację dostępu do pamięci w celu złagodzenia problemu CoW. CCoW mierzy lokalność przestrzenną w przestrzeniach adresowych procesów za pomocą koncepcji pokrycia.

Podczas przetwarzania CoW, CCoW kopiuje z wyprzedzeniem wiele stron dla obszarów pamięci o dużej lokalizacji, minimalizując w ten sposób zaangażowanie systemu operacyjnego w przypadku obciążeń wymagających intensywnego zapisu. Wyjaśniamy wyzwania związane z pomiarem lokalizacji i zapewniamy optymalizację w celu wdrożenia koncepcji.

Ocena prototypu pokazuje, że takie podejście może poprawić ogólną wydajność aplikacji nawet o 10% przy niewielkim obciążeniu pamięci.

Słowa kluczowe: kopiowanie przy zapisie; system pamięci wirtualnej; widelec; Redis; wina strony.

1. Wstęp

Podstawową rolą systemu operacyjnego (OS) jest zarządzanie cennymi zasobami systemowymi, a kopiowanie przy zapisie (CoW) to jedna z najbardziej podstawowych technik zarządzania pamięcią, stosowana w większości współczesnych systemów operacyjnych.

Gdy dwa lub więcej procesów musi mieć te same dane, schemat CoW umożliwia procesom współdzielenie tych samych stron zamiast natychmiastowego ich duplikowania. Udostępnione strony są duplikowane na żądanie tylko wtedy, gdy jeden z procesów zapisuje dane na udostępnionych stronach.

Systemy pamięci wirtualnej mogą skutecznie zapewniać współdzielenie danych pomiędzy procesami, a różne funkcje pamięci wirtualnej, takie jak powielanie przestrzeni adresowej podczas forków procesów, deduplikacja tych samych stron i współdzielenie zerowej strony, są realizowane w oparciu o kopiowanie przy zapisie [1–3]. Dzięki tym funkcjom aplikacje mogą tworzyć kopie siebie przy niewielkim nakładzie przestrzeni i odpowiednio wykorzystywać klon.

Na przykład Redis, jeden z popularnych systemów przechowywania wartości kluczy w pamięci [4], wykorzystuje funkcję kopiowania przy zapisie w połączeniu z systemem fork w celu wywołania do pamięci danych znajdujących się w pamięci. Podczas obsługi żądań przychodzących proces główny Redis okresowo tworzy proces potomny za pomocą rozwidlenia. Proces potomny rozpoczyna się od migawki pamięci identycznej z procesem głównym, mającym na celu zapisanie danych znajdujących się w pamięci w magazynie.

short term memory how to improve

Ponieważ migawka jest odizolowana od przestrzeni adresowej procesu głównego, ale zarządzana jest metodą kopiowania przy zapisie, procesy główne i podrzędne nie wymagają żadnego skomplikowanego mechanizmu, aby zachować spójność pomiędzy bieżącymi danymi a migawką.

Zatem możemy uznać, że kopiowanie przy zapisie jest niezbędne w systemie pamięci wirtualnej. Jednakże bieżące kopiowanie przy zapisie jest problematyczne w aplikacjach intensywnie korzystających z pamięci i przy obciążeniach wymagających intensywnego zapisu. W szczególności duplikacja danych zwykle występuje w procedurze obsługi błędów stronicowania w systemie operacyjnym. Ponieważ duplikacja danych jest przetwarzana na stronę i wymaga kilku zapisów, proces może powodować znaczną liczbę błędów stron.

System operacyjny jest odpowiedzialny za błąd każdej strony, co powoduje częste przełączanie trybu jądra użytkownika. Biorąc pod uwagę ogromną ilość pamięci w aplikacjach intensywnie korzystających z pamięci, liczba przełączników trybów jest duża.

Ponadto tablica stron jest modyfikowana podczas duplikacji, co prowadzi do zniszczenia bufora translacji (TLB) wszystkich rdzeni w systemie. Wszystkie te czynniki powodują znaczne koszty ogólne i pogarszają wydajność aplikacji.

W artykule zaproponowano oparty na pokryciu system kopiowania przy zapisie (CCoW), nowatorski schemat optymalizacji kopiowania przy zapisie. Kiedy strona jest dostępna w celu zapisu, prawdopodobnie wkrótce będzie można uzyskać dostęp do sąsiednich stron w celu zapisu ze względu na przestrzenną lokalizację dostępu do pamięci. CCoW wykorzystuje lokalizację przestrzenną, aby zmniejszyć liczbę błędów stron podczas kopiowania przy zapisie. W szczególności CCoW przetwarza kopiowanie przy zapisie z dużą szczegółowością (zwaną regionem).

Kopiując wiele stron w procedurze obsługi błędów stron, CCoW może zmniejszyć znaczną liczbę błędów stron związanych z kopiowaniem przy zapisie i towarzyszącymi temu kosztami ogólnymi. Jednakże stopień lokalności przestrzennej różni się znacznie w zależności od lokalizacji w przestrzeni adresowej procesu, a powielanie części pamięci o niskiej lokalizacji wiąże się jedynie z narzutami czasowymi i przestrzennymi.

Aby przezwyciężyć tę wadę, proponujemy precyzyjny mechanizm o niskim narzucie do oceny lokalizacji przestrzennej w przestrzeni adresowej procesu. CCoW zlicza liczbę kopii przy zapisie i zapisów w każdym regionie.

Przenosząc informacje o lokalizacji przez forki, możemy oszacować stopień lokalizacji przestrzennej, a CCoW skutecznie wykonuje precopy tylko dla regionów o dużej lokalizacji. Zaproponowany schemat CCoW zaimplementowaliśmy w jądrze Linuksa.

Dzięki integracji z systemem pamięci wirtualnej systemu operacyjnego aplikacje mogą korzystać z CCoW bez modyfikacji. Przeanalizowaliśmy charakterystykę wydajności za pomocą mikrobenchmarku, a ocena przy użyciu testu porównawczego z realistycznymi obciążeniami pokazuje, że CCoW może poprawić wydajność aplikacji nawet o 10% przy rozsądnym obciążeniu pamięci.

ways to improve memory

Pozostała część tego artykułu jest zorganizowana w następujący sposób. W części 2 dokonujemy przeglądu tła i powiązanych prac artykułu, w tym pamięci wirtualnej i forka. Wyjaśniamy szczegóły projektu CCoW i jego wdrożenia w Części 3. Sekcja 4 przedstawia wyniki oceny CCoW. Na koniec zakończmy ten artykuł w rozdziale 5.

2. Tło i prace pokrewne

2.1. Stronicowanie i pamięć wirtualna

Prawie wszystkie współczesne komputery i systemy operacyjne wykorzystują stronicowanie i pamięć wirtualną jako podstawowy schemat zarządzania pamięcią [5]. Pamięć główna jest podzielona na strony o tym samym rozmiarze, a systemy operacyjne przydzielają lub zwalniają pamięć z procesów użytkownika w jednostce stronicowania.

Systemy operacyjne utrzymują również mapowanie przestrzeni adresowych procesów na fizyczną lokalizację w systemie. Każda logiczna strona w przestrzeni adresowej procesu jest odwzorowywana na jej fizyczną lokalizację, a to mapowanie jest przechowywane w formie tablicy stron.

Aby obsłużyć odniesienie do pamięci procesu, jednostka zarządzania pamięcią (MMU), komponent sprzętowy procesora, tłumaczy żądany adres na jego adres fizyczny, odwołując się do tablicy stronicowania. Tabela stron zawiera wpisy tablicy stron (PTE). Każde PTE zawiera informacje o mapowaniu i może posiadać dodatkowe pola do opisu statusu odpowiedniej strony i mapowania.

Rozmiar strony, choć zależny od architektury, w większości architektur wynosi zwykle 4 KB. Oznacza to, że każde 4 KB w przestrzeni adresowej procesu powinno mieć jedno PTE. Biorąc pod uwagę ogromny rozmiar przestrzeni adresowej procesu, rozmiar tablicy stron, nawet dla pojedynczego procesu, może być ogromny.

Na przykład tabela stron procesu w architekturze 64-bitowej z 4 KB stron i 8-bajtowym PTE będzie miała rozmiar 32 PB (264/212 × 8=255 bajtów). Jednakże przestrzeń adresowa jest zwykle słabo zapełniona i większość przestrzeni adresowej nie jest wymagana.

To wyjaśnia hierarchiczną organizację tabeli stron. Cała tabela stron jest podzielona na części tabeli stron, które mieszczą się na stronie. Fragmenty tablicy stron nie są przydzielane do nieprzydzielonych regionów adresów.

memory enhancement

Wypełnione fragmenty tabeli stron można podsumować jako fragmenty tabeli stron wyższego poziomu. To pośrednie działanie jest powtarzane, aż na jednej stronie będą istniały tylko fragmenty, co pozwala na zwartą formę tabel stron.


For more information:1950477648nn@gmail.com

Może ci się spodobać również