Dlaczego migawki maszyn wirtualnych wpływają na wydajność?

27

Przeczytałem w jednym z artykułów KB VMware, że migawki będą miały bezpośredni wpływ na wydajność VM.

Ale mój zespół wciąż pyta mnie, w jaki sposób migawki mogą wpływać na wydajność.

Chciałbym podać im solidne uzasadnienie stwierdzenia, że ​​migawki są zabójcami wydajności.

Czy ktoś może wyjaśnić trochę teorii o tym, jak migawki faktycznie wpływają na wydajność? Czy to tylko dlatego, że szybkość operacji we / wy dysku twardego byłaby niska?

Samselvaprabu
źródło
2
Nie jestem pewien, czy to jest artykuł z bazy wiedzy, który czytasz. Myślałem, że dodam to jako odniesienie.
Aaron Copley,

Odpowiedzi:

28

Kiedy tworzysz migawkę, oryginalny obraz dysku jest „zamrożony” w spójnym stanie, a wszystkie dostępy do zapisu od tej pory przejdą do nowego obrazu różnicowego. Co gorsza, jak wyjaśniono tu i tutaj , obraz różnicowy ma postać dziennika zmian, który rejestruje każdą zmianę wprowadzoną do pliku od momentu wykonania migawki. Oznacza to, że dostęp do odczytu musiałby odczytać nie tylko jeden plik, ale także wszystkie dane różnic (oryginalne dane plus każda zmiana wprowadzona do oryginalnych danych). Liczba rośnie jeszcze bardziej, gdy kaskadowo robisz migawki.

Ansgar Wiechers
źródło
2
Najlepsze wytłumaczenie. Nie tylko podwajasz IOPS, ale obliczanie różnicy na poziomie bloków powoduje obciążenie procesora.
Aaron Copley,
3
Po przeczytaniu tego artykułu, do którego prowadzi Aaron Copley ( kb.vmware.com/selfservice/microsites/… ), wydaje się gorzej. Migawka nie jest obrazem różnicowym, jest dziennikiem zmian, więc jeśli napiszesz te same dane w tym samym miejscu 10 razy, migawka zwiększy swój rozmiar o 10 pomnożonych przez rozmiar zapisanych danych. Zamiast tego obraz różnicowy powinien być bardziej wydajny, ponieważ powinien nadpisywać dane przepisane w tym samym miejscu.
Maks.
1
@zespri Problem dotyczy wszystkich platform wirtualizacji korzystających z tego rodzaju technologii migawek, w tym Hyper-V.
Ansgar Wiechers
1
To jest po prostu źle. Prawidłowa odpowiedź znajduje się w komentarzu @Falcon Momot. Nawet połączony artykuł stwierdza po prostu, że na dysku „może zabraknąć miejsca”, co jest jasne, gdy miejsce pozostałe przed zrobieniem migawki jest mniejsze niż dysk migawki, a deltadisk nie ma wystarczającej ilości miejsca do rozwinięcia.
Daniel
2
@AnsgarWiechers Ta odpowiedź jest zdecydowanie błędna. Artykuł powiązany ( kb.vmware.com/s/article/1015180 ) stwierdza; „Dysk podrzędny, który jest tworzony za pomocą migawki, jest dyskiem rzadkim. Dyski rzadkie wykorzystują mechanizm kopiowania przy zapisie (COW), w którym dysk wirtualny nie zawiera żadnych danych w miejscach, dopóki nie zostanie skopiowany przez zapis”. Śledzony przez; „Jeśli maszyna wirtualna wykonuje migawkę, wprowadza zmiany na dysku potomnym lub dysku rzadkim. Im więcej operacji zapisu na tym dysku, tym większy rośnie, do górnej granicy rozmiaru dysku podstawowego plus niewielka ilość kosztów ogólnych ”.
Steve365,
5

Kiedy tworzysz migawkę na maszynie wirtualnej, tworzy ona dysk Delta, a system operacyjny zapisuje ten plik zamiast oryginalnego VMDK. Ten plik nazywa się VM_Name-Delta.VMDK, ale jeśli system musi odwoływać się do pliku przed migawką, będzie odwoływał się do VM_Name.VMDK, zwiększając ilość operacji we / wy. Jeśli wykonujesz wiele migawek, odnosisz się do ostatniego pliku delta ostatniej migawki, a nie do oryginalnego VMDK, zwiększając w ten sposób operacje wejścia / wyjścia.

Przykład.

OS ---> Snapshot (utworzono plik A) ---> (utworzono plik migawki B)

Jeśli muszę odwołać się do pliku A, przejrzę 3 VMDK, aby to znaleźć.

Również jeśli uwzględnisz stan pamięci maszyny Wirtualnej podczas migawki, spowoduje to utworzenie pliku delta i w razie potrzeby odwołuje się do oryginalnych plików pamięci.

Tworzony jest plik, który zawiera listę wszystkich plików utworzonych podczas procesu tworzenia migawki

Zapto
źródło
2

O ile wiem, VMWare używa logiki kopiowania przy zapisie do implementacji swoich migawek. Dlatego po utworzeniu jednego każda operacja wykonana na maszynie wirtualnej (np. Prawie wszystko w środowisku wykonawczym) spowodowałaby skopiowanie odrobiny maszyny wirtualnej, dopóki cała rzecz nie zostanie zasadniczo sklonowana.

Innym problemem związanym z wydajnością jest to, że odczyty musiałyby być kaskadowane do oryginalnej kopii, jeśli kopia robocza nie ma jeszcze danych (ponieważ nic się nie zmieniło, aby spowodować kopię).

Jeśli chcesz mieć migawki jako kopię zapasową, ale nie tolerujesz niewielkiego spadku wydajności, rozważ klonowanie maszyny wirtualnej.

Falcon Momot
źródło
-2

Z wartości High co-stop (% CSTP) obserwowanych podczas wykonywania migawek maszyny wirtualnej :

Wraz ze wzrostem wielkości i liczby migawek na maszynie wirtualnej rośnie liczba operacji poleceń magazynu w vmkernel. Dla każdego polecenia pamięci wydanego przez system operacyjny gościa maszyny wirtualnej może być konieczne wykonanie wielu operacji polecenia pamięci, aby przejść przez cały łańcuch migawek i odczytać najbardziej odpowiedni blok danych.

Shahnawaz Usmani
źródło