Dokładnie trendująca wydajność losowych operacji we / wy do planowania wydajności

11

Tam, gdzie pracuję, mamy wiele „dużych żelaznych” serwerów, które są używane do hostowania wielu maszyn wirtualnych za pomocą Xen Hypervisor. Zazwyczaj są one skonfigurowane z 32 GB pamięci RAM, procesorami Dual Quad Core i szybkimi dyskami z dużą ilością operacji we / wy.

Jesteśmy w momencie, gdy istniejąca konfiguracja sprzętowa staje się coraz dłuższa w zębie i nadszedł czas, aby pozyskać większy, szybszy i bardziej błyszczący nowy sprzęt.

Jak wspomniano powyżej, istniejący zestaw został wdrożony z 32 GB pamięci RAM, co skutecznie ograniczyło liczbę maszyn wirtualnych, które możemy wdrożyć na hoście.

Przy badaniu nowszego sprzętu widać jednak, że można uzyskać coraz więcej pamięci RAM na jednym komputerze z 64, 72, a nawet 96 GB w jednej obudowie. Oczywiście pozwoli nam to uzyskać więcej maszyn na danym hoście, co zawsze jest zwycięstwem. Dotychczasowa analiza sugeruje, że czynnik ograniczający zostanie teraz przesunięty na podsystem dyskowy.

Problem polega na tym, że próbujemy dowiedzieć się, gdzie jesteśmy ... Dzięki wykorzystaniu wiemy, że nie jesteśmy ograniczeni pod względem przepustowości we / wy, a tym bardziej liczby losowych I Operacje / O, które można wykonać. Wiemy anegdotycznie, że kiedy osiągniemy ten punkt, iowait poleci do nieba, a cała wydajność maszyny trafi do psów.

To jest sedno pytania, które zadaję: czy ktoś jest świadomy sposobu dokładnego śledzenia / trendowania istniejącej wydajności I / O, w szczególności w odniesieniu do liczby losowych operacji I / O, które są wykonywane?

To, co tak naprawdę próbuję uzyskać, to „ta konfiguracja może z powodzeniem obsłużyć liczbę losowych żądań We / Wy X, a obecnie (średnio) wykonujemy operacje Y ze szczytem operacji Z”.

Z góry dziękuję!

Keiran Holloway
źródło

Odpowiedzi:

5

sardobrze tu wykonuje pracę; zbierze liczbę transakcji, a także sektory odczytywane / zapisywane na sekundę, których można następnie użyć do odtworzenia obciążenia IO ze względnie przyzwoitą dokładnością (pod względem współczynników odczytu / zapisu, a także wielkości transakcji, która jest czynnik decydujący o tym, jak „losowy” jest Twój IO). To nie jest idealne, ale z mojego doświadczenia robi wystarczająco dobrą robotę, aby dokonać oszacowania, na które patrzysz.

womble
źródło
2

Wygląda to na problem z monitorowaniem i raportowaniem wydajności. Jeśli zamierzasz zacząć mierzyć statystyki trendów, przejdę na drugą stronę, abyś mógł porównać, skorelować itp.

Jeśli chodzi o narzędzia, masz ganglię, zenoss, nagios itp. W świecie open source i wiele innych produktów sprzedawców.

Możesz je skonfigurować tak, aby śledziły, mierzyły i zapisywały kluczowe wskaźniki wydajności, a następnie okresowo je raportowały.

Biorąc pod uwagę zapytania dotyczące wykorzystania pamięci RAM, warto uwzględnić statystyki pamięci, wykorzystanie wymiany i procesora, abyś mógł je porównać w całym okresie dla tego samego okresu i zobaczyć, który limit jest ograniczony itp.

Po przechwyceniu danych możesz zapisać je w ładnej, dużej bazie danych do raportowania, być może racjonalizując dane historyczne, np. przechowuj co 5 sekund dane przez 6 miesięcy, a następnie minuty, potem 5, a następnie co godzinę, w miarę cofania się. Tego rodzaju rzeczy można skryptować i uruchamiać przez crona, autosys itp.

Te raporty dadzą Ci to, czego chce zarząd - tj. coś z ładnymi wykresami.

A do codziennego zarządzania możesz przeglądać informacje w czasie rzeczywistym na wykresie / liczbach za pośrednictwem konsoli, aby zobaczyć, jak sobie radzisz w danym momencie.

Alex
źródło
Dzięki za twoją odpowiedź. Największym problemem, jaki znajduję, jest dokładne śledzenie liczby operacji. Tj. Wszystko, na co natknąłem się, raporty na temat ilości przenoszonych danych, iowait itp. Nie wydaje się, aby pasowało to do rachunku.
Keiran Holloway,
2

Używamy funkcji kolekcjonowania, ponieważ możemy zebrać wszystkie niezbędne informacje w jednym pliku i odtworzyć statystyki w razie potrzeby. To pozwoli ci zobaczyć liczbę IOPS na interwał nagrywania, przełączniki kontekstu, statystyki pamięci. Możesz to rozbić na dysk lub po prostu spojrzeć na system. Collectl obsługuje również połysk.

To doskonałe narzędzie do uzyskania przeglądu ogólnej wydajności systemu. Powodzenia, z obserwacji Dyski SATA zwykle osiągają od 200 do 300 IOPS podczas losowego dostępu.


źródło
Czy ktoś miał duże doświadczenie z dyskami SAS o prędkości 15 000 obr./min?
Keiran Holloway
2

Rejestrujemy i wykresujemy dyskowe operacje we / wy w ten sam sposób, w jaki robimy wszystkie inne parametry

  • Dane są pobierane z hostów za pomocą SNMP. Nasze urządzenia NAS / SAN robią to natywnie. Używamy net-snmp na wszystkich hostach Linuksa, które dostarczają te informacje z USB-DISKIO-MIB .

  • Dane są przechowywane (w formacie RRD) i wykreślane za pomocą kaktusów . Niektóre szablony We / Wy dysku podają nam liczbę i rozmiar transakcji, wyświetlane w zwykłym formacie bieżącym, średnim i szczytowym.

Te parametry niekoniecznie są tak ograniczone, jak użycie iostat/ dstat/ sarna hoście. Ale to ogień i zapomnienie, które konfiguruje się automatycznie, gdy nowa maszyna jest uruchamiana, przechowywana centralnie i pozostaje dostępna do wykorzystania w przyszłości.

Korzystamy z tych danych, aby ostrzec nas o nietypowych trendach operacyjnych i zawsze patrzeć na nie za każdym razem, gdy planujemy wydajność.

To, co naprawdę próbuję uzyskać, to „ta konfiguracja może z powodzeniem obsłużyć X losowych żądań We / Wy [..]”.

Jest z tym kilka problemów:

  • Trudno jest oddzielić i skwantyfikować losowe operacje we / wy od sekwencyjnych operacji we / wy. Ponieważ podstawową różnicą między nimi jest fizyczna lokalizacja bloków przechowywanych na talerzu dyskowym. Na podstawie wielkości transakcji można zgadywać, że wiele małych transakcji prawdopodobnie dotyczy małych plików rozsianych na dysku. Ale nie ma gwarancji. Może to być sekwencyjne odczytywanie niewielkich ilości danych z jednego pliku lub sąsiednich bloków na dysku.

  • Rejestrowanie wskaźników daje bardzo dobry obraz tego, jakie są twoje dzisiejsze zobowiązania, jak zmieniają się one w czasie, a tym samym, jak będą się zmieniać w przyszłości. Nie powie ci, jaki jest sufit. Przynajmniej nie, zanim będzie za późno. Aby to ustalić, musisz wykonać matematykę (na podstawie specyfikacji sprzętu), testy porównawcze (lubię bonnie++siebie) i dobrze jest mieć logistyczne wyobrażenie o tym, do czego te domU robią / są używane.

Dan Carley
źródło
1

W zależności od zaplecza pamięci (IBM SVC / DS8000) możesz bezpośrednio pobierać z niego statystyki dotyczące losowych operacji IOPS.

Aby pobrać statystyki z serwera, możesz użyć polecenia nmon . To nic nie kosztuje (jak w piwie). Pierwotnie opracowany przez IBM dla systemu AIX, działa również w systemie Linux.

MikeyB
źródło
Cała pamięć jest podłączona bezpośrednio, działa na hostach Debiana. Wszystko, co FOSS jest dobre.
Keiran Holloway
1

Jeśli ludzie używają SAR, mam przynajmniej nadzieję, że próbujesz dane co kilka sekund. Kiedy używam Collectl, próbkuję raz / sekundę. Jeśli chodzi o pomiar, jak dobrze sobie radzisz z przypadkowymi operacjami we / wy, użyj narzędzia takiego jak Robin Miller dt (google it) i możesz łatwo wygenerować dużo losowych operacji we / wy, a następnie po prostu zmierzyć za pomocą metody zbierania, aby zobaczyć, ile może zrobić na sekundę. Typowy dysk zwykle wykonuje maksymalnie 200-300 operacji we / wy / s, w oparciu o opóźnienie obrotowe. Rozmiar bloku miał minimalny wpływ, ponieważ oczekiwanie 1/2 obrotu na umieszczenie dysku we właściwej lokalizacji przytłacza wszystko inne.

btw - iowait jest jednym z najbardziej niezrozumianych pomiarów. Nie ma to nic wspólnego z ładowaniem procesora, to po prostu oznacza, że ​​procesor nie robił nic innego, gdy występowało we / wy. W rzeczywistości, jeśli masz 100% oczekiwania, to w zasadzie oznacza to, że jesteś w 100% bezczynny!

-znak


źródło