| Co sprawdzić? | Jak to zrozumieć? |
|---|---|
| 1. Sprawdź, czy komputer naprawdę "przełącza zadania" zbyt często |
Wyobraź sobie, że Twój komputer to stolarz. Każde zadanie (np. obróbka deski, szlifowanie, malowanie) wymaga innych narzędzi. Jeśli stolarz co chwilę odkłada młotek, by wziąć piłę na sekundę, potem znów młotek itd., marnuje mnóstwo czasu na to "przełączanie". Jeśli komputer musi się przełączać setki czy tysiące razy na sekundę – to normalne. Ale jeśli to są dziesiątki tysięcy razy – to już znak, że coś jest nie tak. Jak to sprawdzić w Linuxie? vmstat 5 Spójrz na kolumnę Alternatywnie (jeśli `sysstat` jest zainstalowany): sar -w 5 |
| 2. Spójrz, czy komputer nie jest po prostu "przeciążony" |
Jeśli stolarz ma dziesięć desek do obróbki, a ma tylko dwie ręce, to i tak będzie "przeciążony". Podobnie komputer – jeśli wszystkie jego "mózgi" (rdzenie CPU) są zajęte w 100%, a programy nadal czekają w kolejce, to wiadomo, że będzie się "mulił". Niska wartość "idle" (bezczynności) oznacza, że komputer nie ma ani chwili wytchnienia. Jak to sprawdzić w Linuxie? top Spójrz na kolumny Sprawdź liczbę zadań gotowych do uruchomienia w `vmstat` (kolumna |
| 3. Znajdź "winowajcę", czyli program, który "męczy" komputer |
To jakbyś w biurze szukał osoby, która co chwilę prosi o Twoją uwagę, przerywając Ci pracę nad czymś innym. Są dwa rodzaje "przerwań":
Jeśli któraś z tych wartości jest bardzo wysoka dla konkretnego programu, to on jest "rozpraszaczem". Jak to sprawdzić w Linuxie? pidstat -w 1 Sprawdź z `top` lub `ps` co te procesy robią: ps -aux | grep <pid_winowajcy> |
| 4. Oceń ogólne "obłożenie" systemu (czy kolejka zadań jest długa) |
Wyobraź sobie, że to jest długość kolejki do kasy w supermarkecie. Jeśli liczba osób w kolejce jest znacznie większa niż liczba kasjerów (czyli "mózgów" Twojego komputera), to znaczy, że wszyscy czekają. Im dłuższa kolejka, tym więcej komputer musi się "przepychać" między zadaniami. Jak to sprawdzić w Linuxie? uptime Lub: top Średnie obciążenie znacznie wyższe niż liczba rdzeni CPU (możesz sprawdzić z `nproc`) sugeruje, że zbyt wiele zadań konkuruje o czas CPU, zwiększając przełączenia kontekstu. |
| 5. Zbadaj "rozpraszacze", czyli Przerwania (Interrupts) |
To jakby w biurze co chwilę dzwonił telefon, przychodził mail, czy ktoś pukał do drzwi – to wszystko są "przerwania". Pochodzą one zazwyczaj od sprzętu (np. karty sieciowej, dysku twardego). Jeśli jest ich za dużo, komputer jest ciągle "rozpraszany" i musi przerywać swoją główną pracę, żeby je obsłużyć. To też zwiększa przełączanie zadań. Jak to sprawdzić w Linuxie? cat /proc/interrupts Lub użyj ponownie `vmstat` i spójrz na kolumnę |
| 6. Przyjrzyj się, jak programy są "organizowane" i ile mają "pomocników" (wątków) |
Jeśli jeden program ma zbyt wielu "pomocników" (wątków), to może to tworzyć chaos wtedy komputer może mieć problem z efektywnym zarządzaniem nimi. Czasem niektóre programy są tak ustawione, że "na siłę" próbują zająć jak najwięcej "mocy obliczeniowej" (tzw. polityki czasu rzeczywistego), co może "wypychać" inne programy i zwiększać przełączanie. Jak to sprawdzić w Linuxie? Liczbę wątków: ps -eL | grep <nazwa_procesu> | wc -l Politykę planowania: chrt -p <pid_procesu> Polityki czasu rzeczywistego (np. |
| 7. Sprawdź, czy to nie dysk "spowalnia" komputer (Wąskie Gardła I/O) |
Gdy program musi odczytać lub zapisać coś na dysku, to musi czekać, aż dysk "zrobi swoje". To jakbyś musiał czekać na bardzo wolny internet – czekasz, czekasz i nic się nie dzieje. Jeśli programy spędzają dużo czasu na czekaniu na dysk, to "dobrowolnie" oddają "mózg" komputera, co też powoduje przełączanie. Wysoki wskaźnik "iowait" oznacza, że komputer dużo czeka na dysk. Jak to sprawdzić w Linuxie? iostat -x 1 Lub: iotop Wysoki |
| 8. Co można zrobić, żeby komputer działał lepiej? (Strojenie i Łagodzenie) |
Zmniejsz liczbę programów/wątków:Jeśli aplikacja ma zbyt wielu "pomocników", spróbuj zmniejszyć ich liczbę w ustawieniach programu (np. ustawienia serwera www, ile jednocześnie obsługuje połączeń). Mniej "pomocników" czasem oznacza mniej chaosu i bardziej efektywną pracę, nawet jeśli wydaje się, że mniej osób = wolniej. Ustaw priorytety programom:Możesz powiedzieć komputerowi, które programy są dla Ciebie ważniejsze, aby to one dostawały w pierwszej kolejności dostęp do "mózgu". Jak to zrobić w Linuxie? nice -n -10 <komenda> To jakbyś powiedział swojemu stolarzowi: "Najpierw zajmij się tą ważną deską, a reszta może poczekać." "Przypnij" programy do konkretnych "mózgów" (CPU Affinity):Możesz sprawić, że dany program będzie zawsze działał tylko na konkretnym "mózgu" komputera. Jak to zrobić w Linuxie? taskset -c 0-3 <komenda> To jakby przypisać stolarzowi konkretną maszynę i powiedzieć: "Tylko ty pracujesz na tej pile, nikt inny". To zmniejsza zamieszanie i przełączanie. Dostosuj "mózg" (jądro systemu):Możesz zmienić sposób, w jaki komputer decyduje, jak długo dany program może urzywać "mózgu". Jak to zrobić w Linuxie? echo 10000000 > /proc/sys/kernel/sched_min_granularity_ns (wymaga uprawnień administratora) To jakby zmienić reguły dla stolarza: "Nie musisz co sekundę odkładać narzędzi; możesz popracować 10 sekund, zanim ktoś inny przejmie maszynę." To zmniejsza liczbę "przełączeń", ale może sprawić, że bardzo wrażliwe na czas programy będą reagować trochę wolniej. Modernizacja sprzętu:Jeśli Twój komputer jest po prostu za słaby na to, co na nim robisz, czasem najlepszym rozwiązaniem jest po prostu kupienie nowego, mocniejszego sprzętu. Jeśli masz za dużo desek do obróbki, a tylko jednego stolarza, to może potrzebujesz drugiego stolarza (więcej rdzeni CPU) albo szybszego stolarza (szybszy procesor)! |
Wysokie Użycie CPU i Przełączanie Zadań - Linux
Czy Twój komputer czasem zwalnia, "muli", a programy działają ociężale? To jakbyś miał zbyt wiele otwartych otwartych programów naraz, a Twój komputer musiał co chwilę przełączać się między nimi. To właśnie jest "wysokie przełączanie zadań" (kontekstu) – nasz komputer marnuje czas na ciągłe przestawianie się, zamiast faktycznie pracować. Dowiedźmy się, jak to rozpoznać i co z tym zrobić, prostymi słowami!
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz