Kiedy kopiuję pliki do iz urządzeń USB (aparat, dysk twardy, karta pamięci), mój system działa bardzo wolno. Na przykład, jeśli chcę zamknąć okno, poruszam myszą, ale ruch kursora zajmuje około 2 sekund lub więcej. Kiedy w końcu przeciągam kursor nad x i klikam, nic się nie dzieje przez ponad 10 sekund. Próbowałem tego z wyłączonymi wszystkimi efektami pulpitu, ale problem nadal występuje.
Oprogramowanie: Linux Mint 9 KDE Sprzęt:
- Płyta główna Asus SLI
- Karta graficzna NVidia 6600
- 2 GB pamięci RAM
- Zamiana 2 GB
- AMD Athlox X2 @ 3800+
Dla mnie ten sprzęt nie powinien mieć żadnych problemów z uruchomieniem tego oprogramowania i nie dzieje się to dopóki nie skopiuję plików za pomocą USB. Gdzie powinienem zacząć szukać tego? Myślę, że sterownik grafiki może być częścią problemu, ale nie jestem tego pewien.
Odpowiedzi:
Wydaje się, że jest problem z dużymi stronami w zarządzaniu pamięcią linuksową . Rzadko się zdarza, ale brzmi, jakbyś to zaobserwował.
Przyczyna
To jest moja rażąco uproszczona relacja o tym, co zgodnie z artykułem się dzieje.
W przypadku pecha proces zostaje zablokowany w momencie wydania dostępu do pamięci. Dzieje się tak, ponieważ gdy włączone są przezroczyste ogromne strony, dostęp do pamięci może wyzwalać synchroniczne kompaktowanie (defragmentacja pamięci głównej) synchroniczne, co oznacza, że dostęp do pamięci nie kończy się przed kompakcją. To samo w sobie nie jest złe. Ale jeśli zdarzy się, że w tym samym czasie nastąpi zapis (np. Buforowanych danych na USB), to z kolei zagęszczenie może się zatrzymać, czekając na zakończenie zapisu.
Tak więc każdy proces może skończyć się czekaniem, aż wolne urządzenie zakończy zapisywanie buforowanych danych.
Lekarstwo
Aktualizacja pamięci głównej, podobnie jak OP, może pomóc w opóźnieniu problemu. Ale dla tych, którzy nie uważają tej opcji, istnieją dwa oczywiste obejścia. Oba wymagają ponownej kompilacji jądra:
źródło
Brzmi podobnie do mojego pytania tutaj (gdzie odpowiedź wskazała mi to pytanie):
/programming/10105203/how-can-i-limit-the-cache-used-by-copying-so-there-is-still-memory-available-for
Ale teoria jest zupełnie inna, a zastosowane przeze mnie rozwiązanie nie ma związku z twoim, ale działa idealnie.
Korzystałem z rsync, więc wystarczyło użyć opcji --drop-cache. (co powoduje, że kopia jest nieco wolniejsza jako efekt uboczny)
źródło
Jedyna sztuczka, którą znalazłem, która naprawdę działa: Gnome, nautilus kopiuje pliki na USB zatrzymuje się na 100% lub blisko
Jeśli chcesz wypróbować kilka sztuczek dla zaawansowanych użytkowników, możesz zmniejszyć rozmiar bufora używanego przez Linuksa, ustawiając / proc / sys / vm / dirty_bytes na około 15728640 (15 MB). Oznacza to, że aplikacja nie może uzyskać więcej niż 15 MB przed faktycznym postępem.
Efektem ubocznym jest to, że komputer może mieć mniejszą przepustowość zapisu danych przy tym ustawieniu, ale ogólnie uważam, że warto zauważyć, że program działa przez długi czas, gdy zapisuje dużo danych, w przeciwieństwie do zamieszania związanego z posiadaniem program wydaje się być skończony ze swoim zadaniem, ale system źle się opóźnia, gdy jądro wykonuje właściwą pracę. Ustawienie wartości dirty_bytes na względnie małą wartość może również pomóc w zapobieganiu braku reakcji systemu, gdy brakuje wolnej pamięci i uruchamia program, który nagle zapisuje dużo danych.
Ale nie rób tego zbyt małego! Używam 15 MB jako przybliżonego oszacowania, że jądro może opróżnić bufor na normalnym dysku twardym w 1/4 sekundy lub mniej. Dzięki temu mój system nie czuje się „opóźniony”.
źródło