Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2020-10-10 10:47:43

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Deduplikacja danych w pamięci RAM za sprawą KSM

W kernelu jest mechanizm KSM (Kernel Samepage Merging). To takie ustrojstwo, którego zadaniem jest deduplikacja danych w pamięci RAM, np. przy korzystaniu z maszyn wirtualnych QEMU/KVM, i w efekcie można niby zredukować dość mocno ilość wykorzystywanej pamięci operacyjnej.

Czy ktoś może orientuje się jak dokładnie wyliczyć ile system w danym czasie zaoszczędził pamięci?

Przykładowo, w katalogu /sys/kernel/mm/ksm/ są takie pliki (z prawej strony są ich zmieniające się w czasie wartości):

Kod:

    pages_shared 168067
    pages_sharing 299539
    pages_unshared 482783
    pages_volatile 23884

W dokumentacji kernela piszą, że:

pages_shared     - how many shared pages are being used
pages_sharing    - how many more sites are sharing them i.e. how much saved
pages_unshared   - how many pages unique but repeatedly checked for merging
pages_volatile   - how many pages changing too fast to be placed in a tree

I tu jest właśnie problem, bo z tego co ustaliłem to generalnie dwie teorie interpretacji tych danych — chodzi głównie o pages_shared i  pages_sharing, bo ich nazwy są bardzo podobne, a ten wyżej widoczny opis jakoś nie do końca jest zrozumiały.

Pierwsza teoria mówi, że ilość zaoszczędzonych danych jest określona w pages_sharing (wartość w stronach pamięci, czyli *4096), czyli byłoby to jakieś 1170 MiB. Druga teoria mówi, że od pages_sharing trza odjąć pages_shared i wtedy uzyskuje się faktyczną wartość RAM zaoszczędzoną przez system (też pomnożone przez 4096), czyli jakieś 513 MiB.

To jak to jest w końcu? xD

Ostatnio edytowany przez morfik (2020-10-10 10:48:02)

Offline

 

#2  2020-10-13 20:29:02

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Deduplikacja danych w pamięci RAM za sprawą KSM

Ok metodą prób i błędów wyliczyłem i wyszło, że pierwsza teoria jest prawdziwa, tj. nic się nie odejmuje, a wartość wskazana przez pages_sharing daje zaoszczędzoną ilość pamięci, zatem około 1,2 GiB. Trochę to mało w porównaniu do hostowania 50 wndowsów z 1G RAM na 16 G RAM. xD

Offline

 

#3  2020-10-13 20:31:54

  urbinek - Dzban Naczelny

urbinek
Dzban Naczelny
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: Deduplikacja danych w pamięci RAM za sprawą KSM

Mysle, że to się sprawdza w przypadku operacji na ustrukturyzowanych blokach. Jakieś bazy danych, backup z deduplikacja itp.

Pamieć OSu będzie zawsze inaczej poszatkowana (bez odpowiedniej optymalizacji)


A w wolnym czasie, robię noże :)
http://nginx.urbinek.eu/_photos/signature.png

Online

 

#4  2020-10-14 09:42:19

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Deduplikacja danych w pamięci RAM za sprawą KSM

Z tego co piszą, to działa na poziomie stron pamięci czyli np. 4 KiB. Więc jak dwie strony będą takie same, to je połączy. Ja sobie stworzyłem maszynę wirtualną z ubuntu i drugą taką samą via clone. No i tylko ~1 GiB RAM udało się odzyskać w stosunku do ~4 GiB RAM zajmowanego przez obie maszyny (przydział po 2 GiB). Myślałem może, że ta druga maszyna będzie zajmować ze 100 MiB. I jeszcze procesor zjada 5-10%. Także słabo. xD

Ostatnio edytowany przez morfik (2020-10-14 09:42:41)

Offline

 

#5  2020-10-14 13:46:29

  urbinek - Dzban Naczelny

urbinek
Dzban Naczelny
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: Deduplikacja danych w pamięci RAM za sprawą KSM

4KiB to nie jest dużo ale wystarczy aby 1 bit był inny i blok jest już unikatowy w ramach KSM'a. Duży wpływ na to może może mieć domyślnie włączony ASLR przez co mapa pamięci dwóch identycznych systemów będzie różna.

Możesz spróbować wyłączyć to na poziomie sysctl

Kod:

kernel.randomize_va_space = 0

Myślę, ze ~25% odzysk pamięci to nie jest zły wynik, chociaż jest szansa, że spora część tego miejsca to 0^4096 czy jak się to tam wylicza :D


Ale rozumiem zawód, spodziewałeś się czegoś a'la AuFS w Docker ale dla pamięci RAM


A w wolnym czasie, robię noże :)
http://nginx.urbinek.eu/_photos/signature.png

Online

 

#6  2020-10-14 17:45:06

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Deduplikacja danych w pamięci RAM za sprawą KSM

Ten kernel.randomize_va_space na nic nie wpływa -- bardzo zbliżone wartości są.

Offline

 

#7  2020-10-14 18:55:59

  urbinek - Dzban Naczelny

urbinek
Dzban Naczelny
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: Deduplikacja danych w pamięci RAM za sprawą KSM

W takim razie dalej podtrzymuje moją teorię, że to jest Ficner bardziej dla aplikacji typu bazy danych trzymanych w pamięci.

Możesz w nich zoptymalizować rozmiar bloków danych do rozmiary idealnego dla bloku pamięci i wtedy mieć korzysci


A w wolnym czasie, robię noże :)
http://nginx.urbinek.eu/_photos/signature.png

Online

 

#8  2020-10-18 11:16:42

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Deduplikacja danych w pamięci RAM za sprawą KSM

Naskrobałem trochę tekstu na temat tego całego KSM i wykorzystania go na linux do optymalizacji zużycia RAM ale wygląda na to, że coś im ten mechanizm nie wyszedł albo linux jest z nim słabo kompatybilny. xD

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)