W zeszły piątek zaktualizowałem mój serwer Ubuntu do wersji 11.10, która teraz działa z jądrem serwera 3.0.0-12. Od tego czasu ogólna wydajność dramatycznie spadła. Przed aktualizacją obciążenie systemu wynosiło około 0,3, ale obecnie jest na poziomie 22-30 w 8-rdzeniowym systemie CPU z 16 GB pamięci RAM (10 GB za darmo, bez zamiany).
Miałem winić sterownik systemu plików BTRFS i podkładającą się tablicę MD, ponieważ [md1_raid1] i [btrfs-transacti] zużywały dużo zasobów. Ale wszystkie [kworker / *: *] zużywają znacznie więcej.
sar
ciągle produkuje coś podobnego do tego od piątku:
11:25:01 CPU %user %nice %system %iowait %steal %idle
11:35:01 all 1,55 0,00 70,98 8,99 0,00 18,48
11:45:01 all 1,51 0,00 68,29 10,67 0,00 19,53
11:55:01 all 1,40 0,00 65,52 13,53 0,00 19,55
12:05:01 all 0,95 0,00 66,23 10,73 0,00 22,10
I iostat
potwierdza bardzo niską szybkość zapisu:
sda 129,26 3059,12 614,31 258226022 51855269
sdb 98,78 24,28 3495,05 2049471 295023077
md1 191,96 202,63 611,95 17104003 51656068
md0 0,01 0,02 0,00 1980 109
Pytanie brzmi: w jaki sposób mogę ustalić, dlaczego wątki kworker zużywają tak wiele zasobów (i które)? Lub lepiej: Czy jest to znany problem z jądrem 3.0 i czy mogę go poprawić za pomocą parametrów jądra?
Edytować:
Zaktualizowałem jądro do nowej wersji 3.1 zgodnie z zaleceniami programistów BTRFS. Ale niestety nic to nie zmieniło.
źródło
pcie_ports=compat
lubpcie_ports=native
. (Spróbuj „rodzimy” pierwszy To mniej prawdopodobne, aby rozwiązać ten problem, ale mniej prawdopodobne, aby powodować inne problemy..)Odpowiedzi:
Znalazłem ten wątek na lkml, który trochę odpowiada na twoje pytanie. (Wygląda na to, że nawet sam Linus był zaskoczony, jak dowiedzieć się, skąd pochodzą te wątki.)
Zasadniczo istnieją dwa sposoby:
W tym celu musisz skompilować ftrace w jądrze i włączyć go za pomocą:
Więcej informacji na temat funkcji śledzenia funkcji w Linuksie znajduje się w dokumentacji ftrace.txt .
Spowoduje to wyświetlenie wyników wszystkich wątków i jest przydatne do śledzenia wielu małych zadań.
Spowoduje to wygenerowanie stosu pojedynczego wątku, który wykonuje wiele pracy. Może to pozwolić ci dowiedzieć się, co spowodowało zawieszenie procesora przez ten konkretny wątek (na przykład).
THE_OFFENDING_KWORKER
jest pid kworkera na liście procesów.źródło
-E
opcję spania, a użycie procesora zniknęło!Rozwiązanie jest następujące: nie wiem, jak znaleźć przyczynę. Jak dotąd nikt mi nie powiedział.
Ale rozmowa z programistami BTRFS ujawniła błąd w sterownikach btrfs podczas pisania wielu wielu małych plików w bardzo krótkim czasie. Jest to problem występujący w jądrach od 3.0 do 3.1. Może to naprawiono w 3.2.
W międzyczasie dostałem łatkę do bieżącego jądra, która rozwiązała problem.
źródło
Miałem podobny problem; patrząc na stos wątków kworkera:
Pomyślałem, że to moduły USB. Wcześniej miałem na innym komputerze beztrosko rmmod'd wszystkie moduły usb i [uex] hci zdają sobie sprawę, że wyłączyłem klawiaturę (nawet ctrl-shift-sysrq-U!), Więc skończyłem tak:
zrobił lewę:
Więc moim głównym podejrzanym jest ten gadżet: RTL8723B * WIFI + moduł Bluetooth. Zastanawiam się teraz, czy kod zarządzania energią zdaje sobie sprawę, że jest to to samo urządzenie, jeśli próbuje np. Wyłączyć zasilanie nieużywanego adaptera BT.
kontekst:
źródło
echo N >/sys/module/drm_kms_helper/parameters/poll
(w trybie root)Problem z kartą graficzną Intel
źródło