| Termin | Definicja |
|---|---|
| Monitoring czasu wykonania | Monitoring czasu wykonania to śledzenie, jak długo trwają poszczególne zapytania, w celu wykrycia regresji wydajności. Co obejmuje monitoring czasu wykonaniaMonitoring czasu wykonania to pomiar, jak długo aplikacja, polecenie albo zapytanie realizuje określoną operację. W przypadku programu korzystającego z bazy danych mierzy się zwykle czas od wysłania zapytania do otrzymania kompletnego wyniku, a także czas poszczególnych etapów pośrednich. Można rozdzielić czas oczekiwania na rozpoczęcie pracy, czas obliczeń procesora, czas odczytu danych z pamięci masowej oraz czas przesyłania wyniku między procesami lub urządzeniami. Takie rozróżnienie jest ważne, ponieważ identyczny długi czas całkowity może wynikać z przeciążenia procesora, wolnego dysku, blokady zasobu albo opóźnienia sieciowego. Sam pojedynczy pomiar nie opisuje jeszcze wydajności całego systemu. Wynik zależy między innymi od liczby zwracanych rekordów, rozmiaru danych, aktualnego obciążenia komputera, zawartości pamięci podręcznej i równoległego wykonywania innych operacji. Dlatego monitoring powinien rejestrować serię pomiarów oraz ich kontekst. Przydatne są: znacznik czasu rozpoczęcia i zakończenia, identyfikator operacji, liczba przetwarzanych elementów, kod zakończenia oraz informacja o wystąpieniu błędu. W praktyce analizuje się nie tylko średnią, ale również medianę, wartości maksymalne i percentyle, na przykład czas, poniżej którego kończy się 95 procent operacji. Jak rozpoznać regresję wydajnościRegresja wydajności występuje wtedy, gdy ta sama operacja zaczyna trwać dłużej niż wcześniej przy porównywalnych warunkach. Przyczyną może być zmiana programu, aktualizacja sterownika, rozrost zbioru danych, usunięcie lub pominięcie indeksu, zmiana planu wykonania, fragmentacja plików albo zmniejszenie ilości dostępnej pamięci. W aplikacji uruchamianej na laptopie znaczenie może mieć także przełączenie zasilania sieciowego na akumulator, aktywne skanowanie antywirusowe lub ograniczenie częstotliwości procesora z powodu wysokiej temperatury. Porównanie powinno opierać się na tej samej operacji i jasno określonym punkcie odniesienia. Jeżeli zapytanie wcześniej trwało zwykle 200 milisekund, a po zmianie regularnie przekracza 2 sekundy, różnica jest sygnałem do dalszej diagnostyki. Nie należy jednak uznawać za regresję każdego pojedynczego skoku. Krótkotrwałe opóźnienie może być skutkiem jednorazowego obciążenia lub oczekiwania na zasób. Wiarygodniejszy obraz daje obserwacja rozkładu wyników w czasie oraz porównanie okresów o podobnej liczbie użytkowników, podobnym rozmiarze danych i zbliżonym obciążeniu sprzętu. Znaczniki czasu i korelacja pomiarówAby znaleźć etap powodujący opóźnienie, operację dzieli się na mierzalne odcinki. Osobno można zmierzyć przygotowanie parametrów, wysłanie zapytania, oczekiwanie na pierwszy fragment odpowiedzi, pobranie całego wyniku i jego przetworzenie przez aplikację. Różnica między czasem do pierwszego wyniku a czasem całkowitym pomaga odróżnić wolne rozpoczęcie pracy od dużego kosztu odczytu wszystkich danych. Jeżeli pierwszy wynik pojawia się szybko, lecz kompletna odpowiedź jest opóźniona, podejrzenie pada na wielkość wyniku lub sposób jego przetwarzania po stronie klienta. Ważna jest spójność zegarów i jednolity sposób zapisu czasu. Pomiar powinien korzystać z zegara przeznaczonego do mierzenia odstępów, a nie z czasu systemowego używanego wyłącznie do oznaczania daty. Zegar systemowy może zostać przestawiony, natomiast zegar monotoniczny zachowuje prawidłową kolejność pomiaru trwania operacji. Logi powinny zawierać wspólny identyfikator żądania, dzięki któremu można połączyć wpis aplikacji z wpisem biblioteki, sterownika lub komponentu wykonującego zapytanie. Bez takiej korelacji łatwo przypisać opóźnienie niewłaściwemu etapowi. Wykorzystanie pomiarów podczas serwisowania komputeraPrzed wyciągnięciem wniosków warto ustalić, czy problem dotyczy samego zapytania, aplikacji czy komputera. Należy sprawdzić obciążenie procesora, zajętość pamięci operacyjnej, aktywność dysku i temperatury podzespołów w czasie występowania opóźnienia. Jeżeli czas wykonania rośnie razem z użyciem procesora, ograniczeniem może być obliczeniowa część programu. Wysoka aktywność dysku przy małym obciążeniu procesora wskazuje raczej na operacje wejścia i wyjścia. Z kolei opóźnienie przed rozpoczęciem pracy może wynikać z blokady, komunikacji sieciowej albo oczekiwania na zwolnienie zasobu. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC, w których analiza czasu wykonania pomaga powiązać objawy programowe ze stanem podzespołów. W ramach diagnostyki można porównać zachowanie aplikacji przed i po uruchomieniu testu obciążeniowego, sprawdzić temperatury, stan dysku oraz wpływ pamięci operacyjnej na działanie systemu. Sam monitoring nie naprawia usterki, ale dostarcza powtarzalnych danych potrzebnych do odróżnienia problemu z oprogramowaniem od ograniczenia sprzętowego. Wyniki pomiarów powinny być zapisywane razem z informacją o konfiguracji komputera, wersji używanego programu i warunkach testu. Dzięki temu można zweryfikować, czy po wykonaniu czynności serwisowych czas operacji rzeczywiście się skrócił. Rzetelna ocena nie opiera się na wrażeniu, że program działa szybciej, lecz na porównaniu tych samych scenariuszy, wykonanych w podobnych warunkach i opisanych konkretnymi wartościami. |