Mój pulpit jest zazwyczaj bardzo responsywny, nawet przy dużym obciążeniu. Ale kiedy kopiuję pliki na dysk USB, zawsze się blokuje po pewnym czasie. Przez „lock up” rozumiem:
- Przeniesienie fokusa z jednego okna do drugiego może zająć 10-20 sekund
- Przełączanie komputerów stacjonarnych może zająć 10-20 sekund
- Filmy nie są już aktualizowane (w YouTube dźwięk jest odtwarzany, tylko wideo się zawiesza)
Gdy tak się dzieje, obciążenie systemu nie jest wyjątkowo wysokie. Czasami widzę dużo bieli na xosview, co wskazuje, że jądro jest gdzieś zajęte.
Na pierwszy rzut oka wygląda na to, że kopiowanie plików na dysk USB w jakiś sposób zakłóciłoby compiz, ale nie wyobrażam sobie, jakie może być połączenie.
Oto wynik htop
:
Oto wynik iostat -c -z -t -x -d 1
2-minutowego zawieszenia:
19.07.2012 20:38:22
avg-cpu: %user %nice %system %iowait %steal %idle
1,27 0,00 0,38 37,52 0,00 60,84
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdg 0,00 2,00 0,00 216,00 0,00 109248,00 1011,56 247,75 677,69 0,00 677,69 4,63 100,00
Jak widać, aktywny jest tylko zewnętrzny dysk twardy. Oto pełny dziennik: http://pastebin.com/YNWTAkh4
Zawieszenie rozpoczęło się o 20:38:01 i zakończyło o 20:40:19.
Informacje o oprogramowaniu:
- openSUSE 12.1
- KDE 4.7.x
- Systemy plików: reiserfs i btrfs na moim wewnętrznym dysku twardym, btrfs na dysku USB
sync
aby zobaczyć, jaki to ma wpływ (jeśli w ogóle)?grep name /proc/cpuinfo
do pytania.cp
z wiersza poleceń, aby wykluczyć możliwe błędy delfinów.rsync
z linii poleceń.iostat -c -z -d 1
Odpowiedzi:
Moje pierwsze przypuszczenie było
btrfs
takie, że procesy we / wy tego systemu plików czasami przejmują kontrolę. Ale to nie wyjaśniałoby, dlaczego X się zamyka.Patrząc na przerwania, widzę to:
No cóż. Sterownik USB używa tego samego przerwania IRQ co karta graficzna i jest pierwszy w łańcuchu. Jeśli się zawiesi (ponieważ system plików robi coś kosztownego), karta graficzna głoduje (i także sieć).
źródło
Widziałem podobne problemy z jądrem linux-3.1 openSUSE 12.1 i odkryłem, że wyłączenie przezroczystych ogromnych stron pomogło:
Podstawowym problemem jest to, że jeśli aplikacja przydzieli 4 MB lub więcej, jądro spróbuje nadać mu ogromną stronę, dla której potrzebuje całej ciągłej 4 MB pamięci RAM. Teraz, jeśli wokół jest wiele brudnych stron, które wciąż muszą zostać zapisane na wolnym urządzeniu USB, czeka na zakończenie IO przed kontynuowaniem przydzielania pamięci.
źródło
Jak wspomniano, prawdopodobnie ma to związek z konfiguracją stron z jądrem. Znam kilka osób z tym problemem. Możesz znaleźć kilka dokumentów na ten temat w Internecie, np
Całkowicie naprawiłem problem w mojej konfiguracji, wykonując następujące czynności. Zauważ, że YMMV, nie wszystkie poniższe poprawki mogą być konieczne i być może nie będą wystarczające. Być może zapomniałem o czymś szczerym. W każdym razie to moja konfiguracja i działa.
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
źródło
Zmień kabel. Usuń tlen z portu / kabli USB.
źródło