tło
Mieliśmy incydent, w którym klaster pracy awaryjnej systemu Windows doznał przerwy. Sekcja zwłok wykazała, że węzeł został „usunięty”, jak opisano w tym artykule .
Dopiero niedawno przeprowadziliśmy pełną migrację tego klastra do naszego środowiska VMware i wygląda na to, że opisane powyżej zdarzenie mogło być przyczyną awarii.
Powiązany artykuł VMware KB na ten temat mówi o zwiększeniu Small Rx Buffers
i Rx Ring #1
ustawieniach, ale ostrzega, że zbyt duże zwiększenie tych wartości może drastycznie zwiększyć obciążenie pamięci na hoście.
Po audycie Network Interface\Packets Received Discarded
liczników wydajności naszych ~ 150 maszyn wirtualnych z systemem Windows, 22 vNIC na 16 gości miało kilka odrzuconych pakietów.
Wystarczająco mała kwota, że nie martwię się o opodatkowanie hostów dodatkowym użyciem pamięci, ale chcę zrozumieć, w jaki sposób pamięć jest wykorzystywana dla tych ustawień i skąd ta pamięć pochodzi.
pytania
- Jaki jest związek między liczbą buforów a rozmiarem pierścienia?
- Jak obliczyć ilość pamięci używanej dla danych wartości tych ustawień?
- Ponieważ te ustawienia dotyczą samej karty sieciowej w systemie-gościu, zakładam, że są to ustawienia sterownika. To sprawia, że myślę, że używana pamięć RAM może być pulą stronicowaną lub niestronicowaną.
- Czy to jest poprawne?
- Jeśli tak, czy powinienem się tym martwić?
- Czy są jakieś obawy, których tutaj nie biorę pod uwagę?
Staramy się ustalić, czy wady tych maszyn wirtualnych są inne niż wykorzystanie pamięci hosta VMware. Jeśli na przykład zwiększamy ryzyko wyczerpania pamięci puli u gościa, jesteśmy bardziej skłonni zacząć od małego.
Niektóre (być może wszystkie) z tych pytań mogą nie być specyficzne dla VMware lub wirtualizacji.
źródło
Odpowiedzi:
Są spokrewnieni, ale niezależni. „Pierścień” rx odnosi się do zestawu buforów w pamięci, które są używane jako kolejka do przekazywania przychodzących pakietów sieciowych od hosta (hiperwizora) do gościa (VM systemu Windows). Pamięć zostaje zarezerwowana w sterowniku przez gościa i zamapowana w pamięci hosta.
Gdy na hoście przychodzą nowe pakiety sieciowe, są one umieszczane w następnym dostępnym buforze w ringu. Następnie host wyzwala IRQ w gościu, na które odpowiada sterownik gościa, zdejmując pakiet z pierścienia i wysyłając go do stosu sieciowego systemu gościa, który prawdopodobnie wysyła go do aplikacji gościa, aby go odebrać. Zakładając, że pakiety nadchodzą wystarczająco wolno, a sterownik gościa przetwarza je wystarczająco szybko, zawsze powinno być wolne miejsce na ringu. Jeśli jednak pakiety przychodzą zbyt szybko lub gość przetwarza je zbyt wolno, pierścień może się zapełnić, a pakiety mogą zostać odrzucone (jak widzieliśmy w twojej sytuacji).
Zwiększenie rozmiaru pierścienia może pomóc w złagodzeniu tego problemu. Jeśli go zwiększysz, na ringu będzie dostępnych więcej miejsc na raz. Pokazuje to drugie ustawienie, „Small Rx Buffers”, czyli całkowita liczba dostępnych buforów, które można wykorzystać do wypełnienia szczelin w pierścieniu. Musi być co najmniej tyle buforów, ile miejsc w ringu. Zazwyczaj chcesz więcej. Gdy gość zdejmuje bufor z pierścienia, aby przekazać go stosowi sieci gościowi, nie zawsze może on zostać natychmiast zwrócony z powrotem do sterownika. Jeśli tak się stanie, posiadanie zapasowych buforów do wypełnienia pierścienia oznacza, że możesz pracować dłużej bez upuszczania pakietów.
Rx Ring # 1 / Small Rx Buffers są używane do ramek innych niż jumbo. Jeśli masz domyślną konfigurację karty sieciowej, będzie to jedyny używany pierścień.
Zakładając, że mówisz o ramkach innych niż jumbo, każdy bufor musi być wystarczająco duży, aby pomieścić cały pakiet sieciowy, około 1,5 KB. Więc jeśli masz 8192 dostępnych buforów, to zużyłoby 12 MB. Większy pierścień zużyje również więcej pamięci, ale deskryptory są małe (bajty), więc tak naprawdę to bufory, o które musisz się martwić.
Tak, to pula niestronicowana. Gdyby bufory pierścieniowe były stronicowane, prawdopodobnie spowodowałoby to odrzucenie pakietów podczas buforowania z powrotem stronicowania.
Nie jestem pewien, czy ma to związek z twoją sytuacją, ale warto zauważyć, że większy pierścień zwiększy rozmiar pamięci podręcznej ścieżki rx sieci. W mikrodrukach zobaczysz, że większy pierścień zwykle szkodzi wydajności. To powiedziawszy, w rzeczywistych aplikacjach, jeśli pakiet zostanie upuszczony, zwykle jest to większa sprawa niż niewielki wzrost wydajności w szybkich seriach.
Źródło: Pracowałem w VMware.
źródło
Nie mam odpowiedzi na punkt 1-2-3, ale możesz sprawdzić u swojego wirtualnego inżyniera konfigurację hosta Vmware. Jeśli jest VCP, zrozumie rzeczy :)
Naprawdę musisz sprawdzić hosta, ponieważ problemy z systemem Windows mogą występować na hoście, a nie w gościu.
Istnieje wiele funkcji sprzętowych, które mogą wyjaśnić problemy, directpath io, rss, vcpu, schemat zarządzania energią ...
Mogę podać link, który pomoże Twojemu wirtualnemu zespołowi lub Tobie :)
Ten link dotyczy tuningu hosta http://buildvirtual.net/tuning-esxi-host-networking-configuration/
I ten gruby pdf:
http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf
A ten dotyczy rss:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008925
źródło
Nie jestem w stanie w pełni wyszukać i skierować Cię na właściwe strony: więc proszę, abyś sam szukał szczegółów ... (przepraszam)
W trybie Fail over Cluster dostępne są 4 ustawienia, które można modyfikować; i nie będą miały wpływu na bufory, stronicowane lub niestronicowane ... Zmienia to sposób, w jaki Failover Cluster decyduje o uznaniu węzła za „usunięty”. Te ustawienia to:
SameSubnetDelay SameSubnetThreshold CrossSubnetDelay CrossSubnetThreshold
Mogą nie rozwiązać twojego problemu, ale ich ulepszenie może w tej chwili wydostać się z kłopotów ...
Kiedy wrócę w poniedziałek, wrócę do tego postu, jeśli masz dodatkowe pytania
HTH, Edwin.
źródło