| Termin | Definicja |
|---|---|
| Użycie CPU w trybie batch | Użycie CPU w trybie batch jest efektywniejsze niż przetwarzanie wiersz po wierszu przy dużych wolumenach danych. Na czym polega użycie CPU w trybie batchUżycie CPU w trybie batch oznacza wykonywanie pracy procesora na przygotowanym zestawie danych lub zadań, bez konieczności obsługi każdego elementu jako osobnej operacji inicjowanej przez użytkownika. Zadania są zwykle gromadzone w kolejce, a następnie przekazywane procesorowi w większych porcjach. Przykładem może być przetwarzanie wielu plików, obliczanie wartości dla całej tabeli albo wykonywanie tej samej instrukcji dla dużej liczby rekordów. W przetwarzaniu wiersz po wierszu program pobiera jeden element, wykonuje operację, zapisuje wynik i dopiero wtedy przechodzi do następnego elementu. Każdy taki etap może wiązać się z dodatkowymi wywołaniami funkcji, sprawdzaniem warunków, przełączaniem kontekstu albo komunikacją z pamięcią masową. Tryb batch ogranicza część tego narzutu, ponieważ algorytm może operować na większym buforze danych i wykonywać powtarzalne instrukcje w bardziej uporządkowany sposób. Dlaczego większa partia danych zmniejsza narzut obliczeńProcesor wykonuje instrukcje bardzo szybko, ale rzeczywisty czas operacji zależy nie tylko od liczby instrukcji arytmetycznych. Znaczenie mają również odwołania do pamięci RAM, wykorzystanie pamięci podręcznej CPU, przewidywanie skoków, synchronizacja wątków oraz przekazywanie danych pomiędzy programem a systemem operacyjnym. Jeżeli program dla każdego wiersza osobno wywołuje tę samą funkcję i wykonuje te same czynności organizacyjne, część czasu procesora nie służy właściwemu obliczeniu. Przetwarzanie batch może poprawić lokalność odwołań do danych. Gdy kolejne elementy znajdują się w sąsiadujących obszarach pamięci, procesor i system pamięci mogą efektywniej korzystać z pamięci podręcznej. W zadaniach wektorowych jedna instrukcja może obejmować kilka wartości jednocześnie, jeżeli algorytm, kompilator i sprzęt pozwalają na zastosowanie odpowiednich rozszerzeń instrukcji, takich jak SSE lub AVX. Nie oznacza to jednak automatycznego przyspieszenia każdego programu. Zysk zależy od struktury danych, rodzaju obliczeń, sposobu implementacji oraz tego, czy operacja nie jest ograniczona przez dysk lub inne urządzenie wejścia-wyjścia. Batch a obciążenie procesora, pamięci i dyskuWysokie użycie CPU nie jest samo w sobie oznaką błędu. Podczas długiego zadania batch procesor może być celowo wykorzystywany przez wiele minut, ponieważ program ma do wykonania dużą liczbę obliczeń. Ważne jest rozróżnienie pomiędzy użyciem CPU wynikającym z pracy właściwej a użyciem powodowanym przez nieefektywną pętlę, niekończące się ponawianie operacji lub błędną synchronizację. Do oceny potrzebne są między innymi czas wykonania, liczba przetworzonych elementów, zużycie pamięci oraz aktywność dysku. Zbyt duża partia danych również może powodować problemy. Jeżeli program ładuje cały zbiór do pamięci RAM, może doprowadzić do intensywnego użycia pliku stronicowania. Wtedy monitor systemu może pokazywać jednocześnie obciążenie CPU, pamięci i dysku, ale dalsze zwiększanie rozmiaru partii nie musi poprawiać wydajności. Przydatne jest stopniowe dobranie wielkości bufora: mała partia ogranicza zużycie pamięci, natomiast zbyt mała zwiększa narzut operacyjny. Optymalny zakres zależy od rozmiaru rekordów, liczby operacji i dostępnej pamięci. W trybie batch warto także kontrolować wpływ zadania na inne programy. Proces działający z wysokim priorytetem może ograniczać responsywność systemu, zwłaszcza na komputerze z niewielką liczbą rdzeni lub podczas równoczesnej pracy aplikacji biurowych. Ograniczenie liczby wątków albo uruchomienie zadania z niższym priorytetem może zmniejszyć chwilowe obciążenie użytkowe, lecz zwykle wydłuży całkowity czas zakończenia. Jest to kompromis pomiędzy przepustowością a płynnością pracy komputera. Diagnostyka powolnego przetwarzania batch na komputerzeAnalizę należy rozpocząć od ustalenia, co dokładnie jest mierzone. Sam procent użycia CPU nie wskazuje, czy problemem jest procesor, pamięć, dysk czy oczekiwanie na zewnętrzne źródło danych. Przydatne jest porównanie czasu przetwarzania jednej partii z liczbą elementów, które zostały faktycznie ukończone. Jeżeli liczba elementów rośnie proporcjonalnie do czasu, program może być ograniczony przez koszt operacji. Jeżeli czas nagle wzrasta po przekroczeniu określonego rozmiaru partii, należy sprawdzić pamięć RAM, plik stronicowania i rozmiar buforów. W praktyce można obserwować proces odpowiedzialny za zadanie w Monitorze zasobów lub Menedżerze zadań systemu Windows. Istotne są także temperatury procesora i częstotliwość taktowania. Przy długotrwałym obciążeniu układ może obniżyć częstotliwość wskutek ograniczeń termicznych albo energetycznych. W takiej sytuacji przyczyną wolnego batchu nie musi być sama metoda przetwarzania, lecz niewystarczające chłodzenie, zabrudzony układ chłodzenia, niesprawny wentylator lub nieprawidłowa praca systemu zasilania. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów, komputerów PC i ich podzespołów, gdy diagnostyka wskazuje na sprzętową przyczynę niestabilnego działania. Przy porównywaniu dwóch sposobów przetwarzania trzeba używać tych samych danych wejściowych i mierzyć pełny czas operacji, a nie tylko fragment pętli. Należy również uwzględnić zapis wyników, odczyt plików, uruchomienie programu oraz ewentualne ponowienia po błędach. Dopiero takie pomiary pozwalają ocenić, czy tryb batch rzeczywiście zmniejsza narzut CPU i poprawia przepustowość konkretnego zadania. |