Przejdź do głównej zawartości

Linux RH442 - Czym jest tuning wydajności ? Określenie poziomów wydajnościowych. Wyłączenie nieużywanych usług. Monitorowanie i profilowanie systemu.

Tuning wydajności czasami nazywany też "black art" jest to wiedza umożliwiająca efektywne podniesienie wydajności systemu operacyjnego. By to osiągnąć konieczne jest zrozumienie działania nie tylko samego systemu operacyjnego ale także części sprzętowej, na której ten system działa jak i tego w jaki sposób te dwa elementy ze sobą współpracują. Proces poprawiania wydajności obejmuje takie skonfigurowanie systemu lub też systemów, aby działające na nim aplikacje działały jak najszybciej i posiadały możliwie najkrótszy czas odpowiedzi. 

Pierwszym krokiem jest ustalenie celów jakie chcemy osiągnąć. Jako administratorzy możemy zostać poproszeni przez szefów o poprawę wydajności systemu względem obecnego stanu. Sercem systemu jest procesor i nie ważne czy w danej chwili działa na 5 czy 95 procent swoich możliwości, ale zawsze można określić jaka wartość jest najlepsza dla danej sytuacji. Zazwyczaj poprawa wydajności polega na usunięciu przeszkód powodujących wolny przepływ danych. Odpowiedni rozkład obciążenia sprzętu w danym czacie lub porze dnia gdy obciążenie jest największe może zaoszczędzić część zasobów sprzętowych tym samym sprawić , że system będzie działał wydajniej. 

Tak więc proces zarządzania wydajnością są to określone działania dające pewność, że dany sprzęt jest dostępny i wydajnie działający dla wszystkich pracujących na nim użytkowników przez cały czas. Elementem procesu zarządzania wydajnością jest określenie jakie parametry dotyczące obciążenia sprzętu są w danym systemie akceptowalne. Często oczekiwania użytkowników mogą być dużo wyższe niż możliwości zainstalowanego sprzętu w danym systemie. 

Określenie poziomów dotyczących wydajności. 

Zanim rozpoczniemy tuningować nasze systemy, dobrze jest rozpocząć ten proces od określenia i zapisania parametrów wydajnościowych jakie chcemy osiągnąć. Aby tego dokonać należy się przyjrzeć następującym elementom: 

  • Ustalenie konkretnych i realnych do osiągnięcia celów.
  • Określenie mierzalnych kryteriów oraz standardowych zmian
  • Określenie minimalnych akceptowalnych parametrów 
  • Ustalenie okien operacyjnych
  • Określenie procedur powiadamiania


Kiedy wiemy już jakie poziomy wydajności ma prezentować nasz system musimy jeszcze rozpoznać i pozbyć się występujących trudności  w momencie projektowania całego procesu poprawy wydajności. W tym miejscu pojawia się wiele pytań takich jak " Jakie są cele biznesowe, które ma spełniać dane środowisko ?" , "W jaki sposób zminimalizować zużycie procesora ?" itd. 

Jedną z najważniejszych rzeczy jakie należy wziąć pod uwagę gdy chcemy poprawić wydajność systemu jest określenie w jaki sposób wykonamy pomiary wszystkich istotnych parametrów. W jakiś sposób trzeba określić aktualne stany by odnieść się do nich w późniejszym czasie mogąc zmierzyć czy nasze działania konfiguracyjne odniosły jakikolwiek skutek. Sprawdzenie aktualnych parametrów systemu musi zostać wykonane przed przystąpieniem do jakichkolwiek zmian konfiguracyjnych. Dobrą drogą jest też wyszukanie wskaźników, które mogą zostać zmierzone lub które zostały już zgłoszone przez użytkowników aplikacji. Proste metryki pomogą na ich podstawie wymyślić wprowadzenie bardziej użytecznych zmian. Odniesienie się do istniejących wskaźników jest bardzo istotnym elementem o jakim nie należy zapominać. Dla przykładu  jeżeli posiadamy wskaźniki utylizacji procesora oraz jeżeli celem do osiągnięcia jest zmniejszenie wykorzystywania procesora przez aplikacje to możliwym rozwiązaniem może być użycie wolniejszego zasobu dyskowego, co zmniejszy zużycie procesora ale nie jest to rozwiązanie z jakiego będą zadowoleni końcowi użytkownicy aplikacji. 

Tak więc tuning wydajności musi przede wszystkim odnieść skutek widoczny dla końcowego użytkownika, co nie zawsze idzie w parzę z osiąganiem pojedynczo ustalonych celów. Dobrze jest więc wykonać mały rekonesans  i odpytać klientów o ich cele biznesowe co przełoży się następnie na określenie właściwych metryk jakie użyjemy do pomiarów wydajności działania aplikacji. Należy użyć prostych jednostek pomiarowych aby uniknąć pomyłek. Warto też odpowiedzieć sobie na poniższe pytania: 

  • Jakie wartości osiągają wybrane parametry podczas działania aplikacji ?
  • Jakie wartości osiągną wskaźniki jeżeli uruchomimy więcej niż jeden proces aplikacji ?
  • Jakie zakresy wartości można uznać za normalne dla danej aplikacji ?

Po przemyśleniu powyższego, i ustaleniu kwestii związanych z oczekiwaniami użytkowników, określeniu jakie parametry będą zmierzone można powiedzieć, że jest to dobry punk wyjściowy do rozpoczęcia działań mających na celu poprawę wydajności działania sytemu i aplikacji. 

Wyłącznie zbędnych usług 

Pierwszym krokiem na drodze do lepszej wydajności systemu jaki można wykonać od razu i bez wykonywania jakichkolwiek pomiarów (chyba, że chcemy się przekonać jaki zysk osiągnęliśmy) to wyłączenie nieużywanych usług działających domyślnie w systemie. Spowoduje to uwolnienie zajmowanych przez te usługi zasobów procesora i pamięci. 

Zatrzymanie danej usługi wykonujemy przy użyciu polecenia : service, a w przypadku gdy chcemy wyłączyć daną usługę w taki sposób by nie była już więcej uruchamiana nawet po restarcie systemu zastosowanie ma polecenie chkconfig

W przypadku maszyn serwerowych nie będziemy raczej używać technologii bluetooth i można się jej pozbyć.

# service bluetooth stop 
# chkconfig bluetooth off

a jeżeli mamy pewność, że dana usługa nie będzie przydatna możemy również usunąć zbędne pakiety 

# yum remove bluez

Monitoring 

Tuning systemu jest blisko powiązany z kwestią prowadzenia starannego monitoringu. Zbieranie i analizowanie danych jest nieodzownym elementem prowadzącym do poprawnego określenia zmian jakie należy wykonać dla poprawy wydajności. Głównymi zadaniami monitoringu są : 
  • Konfigurowanie metryk wydajnościowych 
  • Informowanie w momencie gdy wskaźniki wykraczają poza akceptowalne wartości
Profilowanie 

Profilowanie aplikacji skupione jest na dynamicznie zmieniających się parametrach działania. W miejscu tym istotne jest zrozumienie w jakiej kolejności uruchamiane powinny być programy tak by system działał najlepiej. Należy wiedzieć w jaki sposób uruchamiane programy i usługi współdzielą zasoby i w jakiej kolejności potrzebują do nich dostęp, co ma bezpośredni wpływ na szybkość działania systemu. 

Profilowanie skupia się na : 
  • Określeniu bazowych kryteriów wydajności 
  • Wykrycie "gorących punktów" w czasie działania aplikacji (np. dany okres czasu)
  • Określenie charakterystyki uruchamiania 

Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości