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

Apr 03, 2024

3.3. Śledzenie dostępu do wcześniej skopiowanych stron

CCoW ma amortyzować koszty związane z częstą obsługą błędów stron. Jednakże kopiowanie stron z wyprzedzeniem prowadzi do innego problemu: śledzenia dostępu do stron po skopiowaniu.

Istnieje silny związek pomiędzy przetwarzaniem błędów a pamięcią. Większość ludzi uważa błędy za coś złego, ale mogą być dla nas okazją do nauki i rozwoju. Prawidłowo radząc sobie z błędami, możemy poprawić naszą pamięć i pomóc nam lepiej rozumieć podobne sytuacje i reagować na nie.

Jednym ze sposobów radzenia sobie z błędami jest refleksja i analiza. Kiedy popełnimy błąd, powinniśmy poświęcić trochę czasu na zastanowienie się nad tym, jak do niego doszło i co możemy zrobić, aby zapobiec powtórzeniu się podobnego błędu. Dzięki refleksji możemy zidentyfikować pierwotne przyczyny problemów i opracować środki zaradcze, aby je rozwiązać. Tego rodzaju analiza nie dotyczy tylko błędów, może pomóc nam podejmować lepsze decyzje w innych sytuacjach życiowych i pomóc nam ulepszyć nasze umiejętności i zdolności.

Innym sposobem radzenia sobie z błędami jest zaakceptowanie ich i przejście dalej. Nie powinniśmy pozwalać, aby błędy nas spowalniały lub frustrowały. Zamiast tego powinniśmy postrzegać je jako szansę na rozwój, pozwalając sobie na uczenie się na błędach i ciągłe doskonalenie. Jeśli potrafimy zaakceptować błędy i poradzić sobie z nimi z pozytywnym nastawieniem, możemy zbudować silne nastawienie i wiarę w siebie, co jest bardzo ważne dla utrzymania dobrej pamięci.

Wreszcie możemy wzmocnić naszą pamięć, dzieląc się naszymi błędami. Kiedy mówimy innym o popełnionych przez nas błędach, zwykle zapamiętujemy te wydarzenia głębiej. Dzieje się tak dlatego, że kiedy mówimy innym, musimy wszystko wyjaśnić i przypomnieć sobie każdy szczegół błędu. W ten sposób możemy lepiej zrozumieć te błędy i zapobiec ich ponownemu wystąpieniu.

Podsumowując, istnieje silny związek pomiędzy przetwarzaniem błędów a pamięcią. Prawidłowo radząc sobie z błędami, możemy wzmocnić naszą pamięć, udoskonalić nasze umiejętności i zdolności oraz stać się lepszymi ludźmi. Powinniśmy postrzegać błędy jako szansę, aktywnie stawiać czoła trudnościom oraz uczyć się i rozwijać na nich. 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.

10 ways to improve memory

Kliknij Poznaj pamięć krótkotrwałą, jak ją ulepszyć

W oryginalnym schemacie kopiowania przy zapisie pierwszy zapis na każdej stronie jest przechwytywany przez procedurę obsługi błędów strony.

Kopiowana jest tylko wadliwa strona, a system może precyzyjnie śledzić dostęp do każdej strony za pomocą modułu obsługi błędów strony. Z drugiej strony, gdy system kopiuje cały region, wszystkie strony w regionie są mapowane do procesu za pisemną zgodą.

Dzięki temu kolejne zapisy na skopiowanych stronach mogą odbywać się bez uruchamiania mechanizmu obsługi błędów stron, przez co system nie może śledzić dostępu do skopiowanych stron. Może to być problematyczne, gdy proces wielokrotnie wykonuje forki. Załóżmy, że region ma dużą lokalizację przestrzenną, a epokę definiuje się jako okres pomiędzy dwoma rozwidleniami.

Wysoką lokalizację można określić, zliczając błędy stron, które miały miejsce w regionie. Następnie załóżmy, że proces tworzy nowy proces za pomocą rozwidlenia. Kiedy za pomocą forka rozpocznie się nowa epoka, pierwszy dostęp do zapisu na jednej ze stron w regionie zainicjuje CCoW, kopiując wszystkie strony w regionie. Teraz proces ma wszystkie strony z uprawnieniami do zapisu i aż do końca epoki nie są generowane żadne dalsze błędy stron z regionu.

Kiedy ponownie rozpoczyna się nowa epoka, uważa się, że obszar w tej epoce jest słabo pokryty, biorąc pod uwagę, że region ma tylko jedną stronę z możliwością kopiowania przy zapisie. Zatem każdy zapis w regionie jest przetwarzany przez oryginalny mechanizm kopiowania przy zapisie na stronę, co ogranicza możliwości optymalizacji wydajności, nawet jeśli region ma dużą lokalizację.

Należy pamiętać, że w następnej epoce ponownie uznaje się, że region ma dużą lokalizację, a proces jest powtarzany w celu zmiany sytuacji. Aby rozwiązać ten problem, potrzebujemy mechanizmu śledzącego dostęp do strony po skopiowaniu.

W tym badaniu zaproponowano wykorzystanie brudnego bitu we wpisie tablicy stron (PTE). Ogólnie rzecz biorąc, modernarchitectures przechowuje różne informacje w PTE dla każdej strony, a brudny bit jest jednym z pól obsługiwanych przez większość architektur.

Kiedy MMU przetwarza dostęp do pamięci zapisu, automatycznie ustawia brudny bit odpowiedniej strony. To odwrotnie oznacza, że ​​gdy ustawiony jest bit brudny dla strony, strona została zaktualizowana o dostępy do zapisu.

W oparciu o ten pomysł zmodyfikowaliśmy mechanizm obliczania zasięgu. Początkowo wszystkie regiony są uważane za normalne regiony. Podczas forku pokrycie normalnych regionów jest obliczane na podstawie liczby kopii przy zapisie przy użyciu równania (1).

ways to improve memory

Podczas obsługi błędu strony w regionie o dużej lokalizacji wszystkie strony w regionie są kopiowane z wyczyszczonym bitem. Ponadto region ten jest oznaczony jako region wstępnie skopiowany. Podczas forku pokrycie skopiowanego obszaru jest obliczane na podstawie liczby zanieczyszczonych stron w regionie w następujący sposób:

improve memory

Obliczone pokrycie dla każdego regionu jest przenoszone przez rozwidlenie i wykorzystywane jako metryka lokalizacji przestrzennej regionu. Kiedy w regionie wystąpi błąd zapisu strony, system sprawdza pokrycie regionu i może wstępnie skopiować strony dla regionów o większej lokalizacji.

Rysunek 2 ilustruje sytuację, w której zasięg jest obliczany po przedpremierach. Załóżmy, że oba regiony zostały skopiowane (zacienione na czerwono), a strony 0, 2, 3, 4 i 11 mają ustawiony bit brudu.

Aby obliczyć pokrycie podczas przetwarzania rozwidlenia, system używa brudnego bitu zamiast zliczania kopii przy zapisie, ponieważ regiony są kopiowane w bieżącej epoce. Zatem obszar 0 ma pokrycie 66%.
Natomiast pokrycie regionu 1 wynosi 15%. Aby obsłużyć błąd strony dla strony 3, region 0 jest kopiowany ponownie, podczas gdy błąd strony dla strony 9 jest obsługiwany przy użyciu oryginalnego mechanizmu. W ten sposób możemy zapobiec utracie ostrości regionów położonych w dużych miejscowościach.

boost memory

3.4. Zdobycie miejscowości

Ponieważ procedura obsługi błędów strony znajduje się na ścieżce krytycznej dla wydajności w systemie operacyjnym, powinniśmy zminimalizować obciążenie związane z implementacją proponowanego schematu.
Zasadniczo CCoW wymaga mechanizmu obliczania pokrycia, a najprostszym sposobem wdrożenia tej funkcji jest śledzenie stron powodujących błędy strony za pomocą mapy bitowej, jak opisaliśmy w Sekcji 3.2.

Podczas obsługi błędu strony system ustawia bit odpowiadający błędnej stronie. Podczas forku system skanuje mapę bitową, aby zliczyć liczbę wadliwych stron w każdym regionie i obliczyć pokrycie. Mapa bitowa jest resetowana po obliczeniu.

Podejście to jest proste, ale nakłada duże ograniczenia przestrzenne i czasowe. System powinien zachować jednobitowy wpis mapy bitowej dla każdej strony o rozmiarze 4 KB i sprawdzić całą mapę bitową podczas forka. Biorąc pod uwagę ogromne zużycie pamięci w aplikacjach intensywnie korzystających z pamięci, operacje te będą wiązać się z dużym obciążeniem podczas forku, równoważąc korzyści wydajnościowe CCoW. Optymalizujemy tę implementację, wykorzystując charakterystykę błędu strony.

Jeśli błąd strony wystąpi ze strony, strona nie spowoduje dodatkowych błędów strony, dopóki proces nie utworzy nowego procesu. Zatem każda strona może wywołać co najwyżej błąd jednej strony, a w przypadku regionu z n stronami błędy stron mogą wystąpić tylko n razy. Oznacza to, że do obliczenia pokrycia wystarczy zliczenie liczby błędów stron na region, a nie utrzymywanie mapy bitowej dla poszczególnych stron.

Dlatego zastępujemy bitmapę licznikami błędów. Każdy region jest powiązany z parą liczników w następujący sposób: jeden do zliczania błędów stron w ostatniej epoce, a drugi do zliczania błędów stron w bieżącej epoce.

Pierwsza służy do określenia lokalizacji przestrzennej regionów, druga natomiast służy do monitorowania lokalizacji przestrzennej bieżącej epoki. Podczas fork bieżący licznik błędów jest kopiowany do poprzedniego licznika błędów.

Jeśli w tej epoce obszar zostanie skopiowany, liczba zanieczyszczonych stron w regionie zostanie zamiast tego zapisana w poprzednim liczniku błędów. Liczniki są zapełniane podczas tworzenia nowego obszaru pamięci wirtualnej (VMA) i odzyskiwane, gdy odpowiadające im VMA zostaną zmniejszone lub usunięte z mapy. Optymalizacja ta zmniejsza narzut przestrzeni CCoW z jednego bitu na stronę do kilku bajtów na region.

memory enhancement


For more information:1950477648nn@gmail.com

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