niezależnie od tego, czy używasz serwera dla aplikacji, czy tylko lokalnej maszyny, chcesz, aby Twój komputer działał jak najlepiej. Dlatego należy upewnić się, aby monitorować procesor komputera, dysk i zużycie pamięci. Monitorowanie takich rzeczy, jak zużycie pamięci i użycie dysku, jest w rzeczywistości dość łatwe. Ile miejsca na dysku zostało? Czy twój dysk jest pofragmentowany? Czy masz wystarczająco dużo pamięci RAM dla aplikacji, których używasz? Czy regularnie wymieniasz pamięć?
To proste pytania, na które należy odpowiedzieć., Ale niektóre pytania są bardziej skomplikowane, zwłaszcza jeśli chodzi o metryki procesora. Oczywiście, istnieją proste metryki, takie jak ogólne zużycie procesora. Ale jeśli używasz Linuksa, masz więcej ezoterycznych (a czasem bardziej użytecznych) wskaźników, takich jak obciążenie procesora. W tym poście porozmawiamy o tym, co tak naprawdę oznacza wskaźnik obciążenia procesora i jak można go wykorzystać do optymalizacji serwerów.
obciążenie procesora a użycie procesora
pierwszą rzeczą do zrozumienia jest to, że obciążenie procesora nie jest tym samym, co użycie procesora., Choć mogą brzmieć podobnie, są zupełnie inne. Użycie procesora jest miarą, w procentach, tego, ile czasu procesor spędza aktywnie przetwarzając coś. Na przykład, jeśli masz program, który wymagał nieprzerwanej mocy obliczeniowej przez 54 z ostatnich 60 sekund, zużycie procesora na jednym rdzeniu wyniosłoby 90%. Zamiast tego, jeśli program wymagał tylko sześciu sekund czasu przetwarzania na jednym rdzeniu, użycie byłoby 10%.
większość firm stara się utrzymać wykorzystanie procesora swoich serwerów tak blisko 100%, jak to możliwe., Większość serwerów jest sprzedawana według ogólnej mocy obliczeniowej, a jeśli twój serwer ma tylko 30% zużycia procesora, płacisz za zbyt dużą moc procesora. Możesz obniżyć procesor do niższej warstwy, zaoszczędzić pieniądze i nie zobaczyć obniżenia jakości wydajności serwera.
obciążenie CPU
obciążenie CPU jest inne. Zamiast mierzyć procent czasu pracy procesora, obciążenie procesora mierzy liczbę programów korzystających lub oczekujących na rdzeń PROCESORA w tym samym czasie. Całkowicie bezczynny procesor miałby wartość obciążenia równą 0., W naszym poprzednim przykładzie mielibyśmy jednominutowe czasy ładowania .9 i .Odpowiednio 1. To dość intuicyjne. Jednak nieintuicyjne w obciążeniu procesora jest to, że wartość 1 niekoniecznie jest w pełni załadowanym pomiarem.
zamiast tego, co stanowi „pełne” obciążenie CPU zależy od tego, ile wątków systemu operacyjnego może pochwalić się twój procesor. Większość procesorów w dzisiejszych czasach stanowi więcej niż tylko jeden rdzeń PROCESORA, obsługujący więcej niż tylko jeden wątek procesora. Jeśli procesor ma cztery rdzenie, obciążenie procesora wynoszące 1 nie jest w pełni obciążonym procesorem. Zamiast tego będzie to tylko jedna czwarta załadowana., Zamiast tego obciążenie procesora będzie uważane za pełne dla procesora, jeśli wartość obciążenia wyniesie 4, a nie 1.
rozszyfrowanie obciążeń procesora pod Linuksem
Uruchamianie programu, który wyświetla sumy obciążenia procesora pod Linuksem, może być początkowo nieco mylące. Jeśli uruchomisz polecenie takie jak uptime lub top, możesz zobaczyć wartość obciążenia procesora, która wygląda jak 1.68 0.55 5.91. Jeśli nie wiesz, czego szukasz, to wygląda jak hałas. Na szczęście jest to dość łatwe do rozszyfrowania. Są tu trzy wartości i przyjrzymy się im kolejno.
pierwsza wartość to 1.68. Jest to wartość obciążenia procesora w ostatniej chwili., Jak wspomnieliśmy wcześniej, jest to miara tego, ile programów używało czasu procesora w ostatniej chwili. Tak więc w ostatniej chwili na tej maszynie było średnio 1.68 programów albo wykorzystujących czas przetwarzania procesora, albo czekających na czas przetwarzania procesora. Jeśli jest to procesor jednowątkowy, oznacza to, że komputer jest przeciążony. Użytkownicy czekają na uruchomienie swoich programów na procesorze i doświadczają pogorszenia wydajności. Jeśli zamiast tego jest to komputer dwurdzeniowy lub czterordzeniowy, użytkownicy są w stanie uzyskać czas procesora tak szybko, jak tego potrzebowali, w ostatniej chwili.,
druga wartość to 0.55. To pomiar z ostatnich 5 minut. Jak już wcześniej omówiliśmy, pomiar poniżej 1 oznacza, że procesor spędził część czasu w tym oknie całkowicie bezczynnie. W tym przypadku procesor był bezczynny przez prawie połowę czasu. Jeśli optymalizujemy procesor tak, aby stale coś robił, to nie jest to dobry znak.
ostatnia liczba, 5.91, jest miarą ostatnich 15 minut. Jeśli używasz ośmiordzeniowego procesora, ta liczba nie jest szczególnie szokująca. Jeśli używasz dwurdzeniowego procesora, liczba taka jak 5.91 oznacza, że procesor jest bardzo przeciążony., Użytkownicy regularnie czekają na czas procesora i prawdopodobnie doświadczają znacznie obniżonej wydajności.
Unix vs.Linux CPU Loades
Jeśli jesteś przyzwyczajony do pomiaru obciążenia procesora w Unixie, niektóre z tych liczb mogą wydawać ci się wysokie. Dzieje się tak dlatego, że Unix i Linux mierzą obciążenie procesora inaczej. Unix mierzy obciążenie CPU wyraźnie jako miara programów, które aktywnie używają lub oczekują na przetwarzanie CPU. Linux mierzy rzeczy nieco inaczej, a zrozumienie, jak jest kluczem do dobrej administracji systemem.,
Linux mierzy obciążenie procesora, patrząc zarówno na programy, które obecnie używają lub oczekują na czas procesora, jak i na programy, które są w stanie oczekiwania. Na przykład program, który czeka na żądanie sieciowe lub ładuje coś z dysku, nie liczyłby na obciążenie procesora w systemie Unix. Na Linuksie tak. To, czy jest to lepsze czy gorsze podejście, zależy od Twojego przypadku użycia. Jeśli chcesz zmierzyć tylko ogólne zużycie procesora, Unix zapewnia lepszy interfejs., Ale jeśli masz program, który jest zablokowany na 30 sekund czekając na żądanie sieciowe, Linux ci to powie. Unix w ogóle nie ujawniłby tych danych.
Optymalizacja obciążenia procesora
nie ma srebrnego pocisku do optymalizacji obciążenia procesora. To proces, do którego trzeba podejść całościowo. Podobnie jak zużycie procesora, gdy jesteś na serwerze, chcesz być blisko 100%, ale nie ponad. Czasami proces optymalizacji obciążeń procesora jest dość łatwy. Być może twój serwer będzie używał tylko dwóch wątków w tym samym czasie., W takim przypadku optymalizacja obciążenia serwera nie jest bardziej skomplikowana niż posiadanie dwurdzeniowego procesora. Możesz potrzebować szybszego procesora, aby upewnić się, że programy zostaną ukończone na czas, ale nigdy nie będziesz potrzebować więcej niż dwóch rdzeni.
większość systemów nie ogranicza się jednak do dokładnie dwóch aktywnych wątków. Większość serwerów jest znacznie bardziej skomplikowana. Jednym z realnych wyzwań jest utrzymanie jak najniższej liczby rdzeni, ponieważ pozwala to zaoszczędzić pieniądze, bez zbyt niskiego poziomu i pogarszania doświadczenia użytkownika. Może być tak, że musisz zoptymalizować kod, który uruchamia Twój serwer., Czasami musisz określić, ile czasu program pochłania czekanie na takie rzeczy, jak zapytania do bazy danych. Może być tak, że naprawdę musisz zwiększyć liczbę rdzeni na procesorze. Serwery o wąskim gardle mogą mieć wiele przyczyn i mogą być naprawiane na wiele sposobów.
jak obciążenie procesora?
monitorowanie i optymalizacja obciążenia procesora jest ważną częścią uzyskiwania jak najwięcej dla pamięci serwera. Niestety jest to również czasochłonny, ręczny proces. Jak wspomniano, większość poleceń Linuksa zapewnia obciążenie procesora tylko dla okien 15-minutowych., To dobrze, nie chciałbyś, żeby okna były szersze. Miałbyś trudności z wyciągnięciem z nich użytecznych informacji. Jednak pilnowanie obciążenia procesora przez 15-minutowe okresy to rodzaj bólu głowy.
na szczęście istnieją dobre narzędzia do monitorowania tego rodzaju rzeczy. Na przykład Scaleyr może monitorować obciążenie CPU tylko przez spożycie niektórych dzienników. Nie dostaniesz tylko prostego wydruku numerycznego., Zamiast tego otrzymasz ładny obraz, który pokazuje całkowite obciążenie procesora w czasie. Może to być szczególnie przydatne, ponieważ pomaga wskazać określone okna, które są najbardziej wymagające na procesorze. Optymalizacja wydajności serwera oznacza zrozumienie jej szczegółowo, a nie tylko na wysokim poziomie.
część bycia dobrym administratorem systemów oznacza zrozumienie serwera z każdego kierunku. Wiedza, jak interpretować obciążenie CPU i jak je optymalizować, jest kluczowym elementem maksymalizacji inwestycji w Serwery Twojej firmy., Zanim to zrobisz, musisz zrozumieć, jakie jest obciążenie procesora twojego serwera. Nie ma lepszego dnia niż dzisiaj, aby rozpocząć monitorowanie obciążenia procesora serwera. Możesz zacząć formułować plan optymalizacji już dziś.
This post was written by Eric Boersma. Eric jest programistą i menedżerem ds. rozwoju, który zrobił wszystko, od bezpieczeństwa IT w farmaceutykach, przez pisanie oprogramowania wywiadowczego dla rządu USA, po budowanie międzynarodowych zespołów programistycznych dla organizacji non-profit., Uwielbia mówić o rzeczach, których nauczył się po drodze, a także lubi słuchać i uczyć się od innych.