Korzystam z dwóch serwerów Dell R410 w tej samej szafie centrum danych (za modułem równoważenia obciążenia). Oba mają tę samą konfigurację sprzętową, uruchamiają Ubuntu 10.4, mają te same pakiety zainstalowane i działają na tych samych serwerach Java (bez innych obciążeń) i widzę znaczną różnicę wydajności między nimi.
Różnica w wydajności jest najbardziej widoczna w średnich czasach odpowiedzi obu serwerów (mierzonych w samej aplikacji Java, bez opóźnień sieciowych): jeden z nich jest o 20-30% szybszy niż drugi, bardzo konsekwentnie.
Kiedyś dstat
zastanawiałem się, czy jest więcej przełączników kontekstu, IO, swapów itp., Ale nie widzę powodu, by to robić. Przy takim samym obciążeniu (bez zamiany, praktycznie bez operacji we / wy) użycie procesora i obciążenie jest wyższe na jednym serwerze.
Tak więc różnica wydaje się być związana głównie z procesorem, ale chociaż prosty test porównawczy procesora przy użyciu sysbench
(przy wyłączonym całym obciążeniu) dał różnicę, wynosił tylko 6%. Może więc nie tylko wydajność procesora, ale także pamięci.
Do tej pory sprawdziłem:
- Wersje oprogramowania układowego wszystkich komponentów (identyczne)
- Ustawienia systemu BIOS (zrobiłem zrzut przy użyciu
dmidecode
, i to nie wykazało różnic) - Porównałem
/proc/cpuinfo
, bez różnicy. - Porównałem wydajność
cpufreq-info
, bez różnicy. - Parametry Java / JVM (ta sama wersja i parametry w obu systemach)
Poza tym całkowicie wymieniłem RAM kilka miesięcy temu, bez żadnego efektu.
Zgubiłem się. Co mogę zrobić, aby dowiedzieć się, co się dzieje?
AKTUALIZACJA : Tak! Oba serwery działają teraz równo. Były to ustawienia „power CRAP”, jak jim_m_som, jak je nazwano w komentarzach. Opcje BIOS dla „zarządzania energią” były w „Maksymalna wydajność” na szybkim serwerze, a w „Active Power Controller” (ustawienie domyślne od Dell) na drugim. Oczywiście zapomniałem, że ustawiłem to dwa lata temu i nie zrobiłem tego na wszystkich serwerach. Dziękujemy wszystkim za bardzo pomocny wkład!
źródło
Odpowiedzi:
Dwa pomysły, w zależności od tego, jak daleko chcesz się posunąć:
Zamień dyski obu serwerów i sprawdź, czy wydajność pozostaje na sprzęcie, czy porusza się wraz z oprogramowaniem.
Porównaj dane wyjściowe,
/opt/dell/toolkit/bin/syscfg -o complete-bios-config.out
jeśli możesz w jakiś sposób oszukać ten pakiet do zainstalowania.źródło
Więcej możliwości wyświetlania i różnicowania:
źródło
Wygląda na to, że może to być związane ze mną moduł równoważenia obciążenia. Kiedy mówisz „to samo obciążenie”, jak to mierzysz?
Czy bezpośrednio testujesz każdy serwer, stosując obciążenie testowe w izolacji?
lub Czy przykładasz jakieś obciążenie do modułu równoważenia obciążenia i patrzysz na wyniki na obu serwerach?
Jeśli robisz to drugie (mierząc obciążenie na obu serwerach za pomocą modułu równoważenia obciążenia), moduł równoważenia obciążenia może nie dzielić obciążenia dokładnie równomiernie między serwery (20% odchylenie dla pary serwerów nie jest rzadkością w zależności od tego, w jaki sposób moduł równoważenia obciążenia decyduje o tym, kto otrzymuje które żądania), co powoduje, że jeden serwer przyjmuje większe obciążenie, a tym samym działa słabo.
(Jeśli bezpośrednio testujesz każdy serwer osobno, bez korzystania z modułu równoważenia obciążenia jako pośrednika, i upewniłeś się, że każdy komponent jest identyczny (w zależności od wersji producenta) między obydwoma systemami, to jestem ze stratą - Nie mogę wymyślić żadnego innego mierzalnego powodu tego rodzaju różnicy wydajności między identycznymi serwerami)
źródło
Wypróbuj niektóre narzędzia do profilowania, albo profilowanie systemowe, jak perf, lub Java, takie jak VisualVM .
Z perf możesz profilować działający proces Java przez PID lub profilować test porównawczy. Spójrz na oba systemy, zobacz, gdzie wolny system spędza swój czas.
Następnie coś takiego:
lub
następnie
Kilka pomysłów, jak systemy mogą działać inaczej:
Środowisko: Czy temperatura powietrza lub przepływ powietrza są różne? Czy są w szafach? Widziałem, jak systemy działają inaczej w różnych pozycjach szafy, spowodowane przez wibracje. W każdym stojaku występują różne poziomy wibracji. Jest to mało prawdopodobne, biorąc pod uwagę, że powiedziałeś, że prawie nie używa się wejść / wyjść. Ale widziałem, że dyski zwalniają do 2 MB / s sekwencyjnego zapisu z powodu wibracji w częściach szafy.
Błędy sprzętowe: dowolny sprzęt może być wadliwy. Użyj profilowania, aby zobaczyć, co jest wolne. Może to być zły procesor lub mikroukład, źle podłączony radiator, niezrównoważone wentylatory powodujące wibracje, uszkodzone wentylatory, a nawet zły zasilacz. Spróbuj zamienić rzeczy łatwe do zamiany.
źródło
Dlaczego nikt nie sugerował „sysprof” ..?
Do tego został zaprojektowany.
A może druga myśl ... spróbuj wprowadzić ograniczenia w /etc/security/limits.conf
Spróbuj obu.
Jeśli nic nie dostaniesz ... najprawdopodobniej masz problem z bezpieczeństwem lub wadę fizyczną.
zobacz także: Mój serwer linux „Liczba utworzonych procesów” i „Przełączniki kontekstu” rosną niesamowicie szybko
źródło