Nowe posty

Autor Wątek: Zatrzymanie urządzeń wejścia  (Przeczytany 3397 razy)

soql

  • Gość
Zatrzymanie urządzeń wejścia
« dnia: 2009-01-05, 15:07:58 »
Witam,
Posiadam Gentoo z zainstalowanymi Xami i XFCE. Cały czas pojawia mi się problem polegający na tym, że po jakimś czasie myszka przestaje chodzić płynnie (skacze) co jest już sygnałem, że zaraz będzie źle i niestety za chwilę komputer nie reaguje ani na myszkę ani na klawiaturę - ale jeszcze przez jakiś czas działa bo mogę się zalogować po ssh. Trwa to parę minut i następuje totalny zawias. Problem napewno jest związany z kartą dzwiękową (gdy wyłącze ją w biosie to wszystko chodzi ok). Ale nie wiem jak to dokładnie zidentyfikować (czy to wyciek czy coś jeszcze innego, podejrzewam też flasha bo dzieje się to po częstym przeglądaniu youtube itp). Przede wszystkim chciałbym was prosić o podanie jakiegoś sposobu na identyfikację problemu (top nie podaje nic ciekawego), może ktoś będzie miał jakiś pomysł. Gdyby trzeba było to mogę podać bardziej szczegółowe informacje o sprzęcie itp - co tylko chcecie :-) Pomóżcie :-)

arctgx

  • Gość
Zatrzymanie urządzeń wejścia
« Odpowiedź #1 dnia: 2009-01-05, 16:03:36 »
Czy wyładowanie sterownika dźwięku w Linuksie przy włączonej karcie w BIOS-ie daje to samo (to tylko dla ułatwienia sprawy piszę)?

Przyjrzałbym się sam przerwaniom (np. watch -n 1 cat /proc/interrupts), czy ktoreś z urządzeń nie generuje z dziwnie dużej ilości przerwań. Przydatne może być polecenie sar (czasem jako atsar) z parametrem -I. Nie wiem czy zwróciłeś w top na górze uwagę na pole wa (iowait). Działalność urządzeń IO (blokowych głównie) można podejrzeć poleceniem iostat. Jeśli okaże się, że zwiecha polega na sporej wartości iowait, warto próbować dojść, jakie urządzenie i jaki proces są temu winne. Podgląd na poziomie procesów możliwy jest dzięki poleceniom pidstat i collectl, ale wymaga pewnych ustawień jądra:
General setup
[*] Export task/process statistics through netlink (EXPERIMENTAL)            TASKSTATS [=y]
[*]   Enable per-task delay accounting (EXPERIMENTAL)                        TASK_DELAY_ACCT [=y]
[*]   Enable extended accounting over taskstats (EXPERIMENTAL)               TASK_XACCT [=y]
[*]     Enable per-task storage I/O accounting (EXPERIMENTAL)                TASK_IO_ACCOUNTING [=y]
Niestety na razie nie mam prawie żadnego doświadczenia z tymi narzędziami. Wiem tylko że można w razie problemów ciekawe rzeczy nimi podglądać i czekają aż je rozpracuję.

soql

  • Gość
Zatrzymanie urządzeń wejścia
« Odpowiedź #2 dnia: 2009-01-05, 18:11:57 »
Mysz wlasnie zaczela electrodance i zdarzylem zrobic cat /proc/interupts

  0:         42          0   IO-APIC-edge      timer
  1:       4425          0   IO-APIC-edge      i8042
  2:          0          0    XT-PIC-XT        cascade
  5:   23394229          0   IO-APIC-fasteoi   ehci_hcd:usb1
  7:   13844675          0   IO-APIC-edge      nvidia
  8:        102          0   IO-APIC-edge      rtc
  9:          0          0   IO-APIC-edge      acpi
 10:   21819560          0   IO-APIC-fasteoi   eth1, serial
 11:   12760644     752190   IO-APIC-fasteoi   ahci
 12:     217975          0   IO-APIC-edge      i8042
 14:          0          0   IO-APIC-edge      ide0
[b] 15:     243446   45667317   IO-APIC-fasteoi   HDA Intel, eth0[/b]
NMI:          0          0   Non-maskable interrupts
LOC:   69678521   69678515   Local timer interrupts
RES:     390654     412270   Rescheduling interrupts
CAL:      11049      14574   function call interrupts
TLB:      54839      29487   TLB shootdowns
TRM:          0          0   Thermal event interrupts
SPU:          0          0   Spurious interrupts
Pogrubione to moja muzyka (HDA Intel) - narazie nie rozumiem tych liczb ale wydaje sie wieksza niz reszta. Innych polecen nie mam ale zainstaluje i poczytam - dam znac czy do czegos doszedlem - chyba, ze ten wykaz z gory juz skazuje winnego :-)

arctgx: poprawienie znacznika B, zobacz tu: http://forum.linux.pl/help.php#bbcode
Widzialem to ale nie bylem juz w stanie trafic skaczaca myszka :-)

Tak PS: Przypomnialo mi sie, ze jak przenosilem ten system z innego komputera to napotkalem jakis problem (nie pamietam juz jaki) i rozwiazalem go pierwsza z brzegu porada z google dodajac w lilo.conf append="acpi=nopci irqpoll". Poniewaz mowa o przerwaniach to postanowilem wywalic to irqpoll i system sie juz nie zbutowal !! Nie mialem CD-ROMu zeby sie chrootnac ale wylaczylem muzyke w BIOSie i dziala wiec to napewno cos wokol przerwan i karty dzwiekowej.

Przepraszam za brak polskich znakow ale tez mi jeszcze nie dzialaja :-)

arctgx

  • Gość
Zatrzymanie urządzeń wejścia
« Odpowiedź #3 dnia: 2009-01-06, 00:29:15 »
Nie problem w tym, ile jest w aktualnym stanie, ale jak szybko się zmienia (przybywa na danym urządzeniu) liczba przerwań przy normalnej pracy i podczas braku odpowiedzi systemu przez długi czas (zwanego wiechą). Gdybym wiedział ile taka karta wysyła przerwań normalnie, może by mi ta liczba coś powiedziała.

Nie wiem z jaką częstotliwością Twój zegar wysyła przerwania, ale u mnie przerwania z karty dźwiękowej to zaledwie 2.5 % przerwań zegara, a u Ciebie to około 65%. To porównanie nie jest zbyt wiele warte, lepiej sprawdź liczbę przerwań na sekundę w obu przypadkach.

Zobacz co daje parametr jądra noapic.

soql

  • Gość
Zatrzymanie urządzeń wejścia
« Odpowiedź #4 dnia: 2009-01-06, 17:27:01 »
Wylaczylem wszystkie parametry jadra i komputer ruszyl. Przyrost liczby generowanych przerwan przez k. dzwiekowa (i chyba jednoczesnie przez sieciowke bo to to samo przerwanie). Liczone co sekunde:

Proba: 2
CPU1 149 CPU2 0
Proba: 3
CPU1 175 CPU2 0
Proba: 4
CPU1 185 CPU2 0
Proba: 5
CPU1 161 CPU2 0
Proba: 6
CPU1 168 CPU2 0
Proba: 7
CPU1 208 CPU2 0
Proba: 8
CPU1 209 CPU2 0
Proba: 9
CPU1 257 CPU2 0
Proba: 10
CPU1 181 CPU2 0
Zobaczymy czy sie zawiesi (czasem potrafi chodzic do 20-25h).

Aha - rmmod wszystkich modulow od karty dzwiekowej powoduje przyrost przerwan podobnego rzedu.

arctgx

  • Gość
Zatrzymanie urządzeń wejścia
« Odpowiedź #5 dnia: 2009-01-06, 23:07:13 »
Dlaczego używasz na piechotę rmmod zamiast modprobe -r? Być może wystarczyłoby wyładować moduł snd albo zatrzymać usługę Alsy (coś w rodzaju /etc/init.d/alsacośtam stop).

Zauważ, że na tym samym numerze przerwania co karta dźwiękowa, znajduje się również interfejs sieciowy. Możesz na chwilę zamknąć go (ifdown eth0), zobaczyć czy są wiechy, wyładować jego sterownik.

Nie mam na razie pojęcia (może w ciągu miesiąca to poznam) jak na przerwania procesora wpływają pakiety, które docierają do interfejsu, ale są odrzucane z powodu innego adresu, oraz pakiety adresowane do interfejsu, ale odrzucane przez filtry.