Przeniesienie dużego pliku na / z dysku USB powoduje zawieszenie się systemu do momentu zakończenia przesyłania

3

Mam urządzenie z systemem Ubuntu 16.04. Ma wewnętrzny dysk twardy SATA z systemem operacyjnym i dołączony dysk twardy USB 3, którego używam do przechowywania dużych / długoterminowych plików. Wiele razy oznacza to kopiowanie dużego pliku lub folderu z dysku wewnętrznego na dysk USB. Jednak za każdym razem, gdy to robię, reszta systemu staje się niesamowicie wolna, jeśli nie prawie całkowicie zamrożona, aż do zakończenia przesyłania plików.

Przeprowadziłem kilka testów, aby upewnić się, że nie było to spowodowane narzutem programu lub typem pliku. Próbowałem zarówno dużych ciągłych plików, jak i dużych folderów wielu małych plików, i próbowałem używać cp, pv z potokami, tar z potokami i rsync. We wszystkich przypadkach reszta systemu blokuje się.

Próbowałem także uruchomić każdą z tych komend z jonice -c 3 nice -n 20 przed nimi, nadając procesowi najniższy priorytet dla procesora i IO. htop pokazuje, że proces ma niezłą wartość 19. Nie wiem, czy to jest rzeczywiste minimum, czy też nie jest ustawione poprawnie, ale niezależnie od tego, większość innych procesów, w tym usługi sieciowe, ma i tak niższe wartości ładne niż 19 .

W pudełku działa kilka dynamicznych stron internetowych, kilka z php i kilka z python. Zasadniczo stają się one bezużyteczne na czas przesyłania pliku. Zakładam, że spowolnienie jest spowodowane przez obciążenie USB, ponieważ, jak rozumiem, wszystkie transfery USB muszą przejść przez procesor. Czy to właśnie powoduje spowolnienie? Co ważniejsze, czy jest jakiś sposób, aby to złagodzić?


EDYCJA (odpowiadanie na komentarze):

Wewnętrzne i zewnętrzne dyski używają natywnego ext4, więc nie ma BEZPIECZNIKA. Nic nie powinno indeksować plików, które znam, z wyjątkiem tego, co domyślnie może zrobić Ubuntu (jest to bezgłowy serwer Ubuntu). Wydaje się, że procesor nie jest obciążony z htopperspektywy, ale raporty użycia uptime podskakują z około 0,5 do 6,0-8,0. Wydaje się, że pvużywanie ograniczania -Lprędkości pomaga, więc jest to rozwiązanie dla jednego narzędzia. Zwykle używam tylko pvpodczas kopiowania pojedynczych plików. Czy jest jakiś sposób na ograniczenie stawek innych programów? Wolałbym również zmienić priorytety, a nie tylko je ograniczać. Optymalizuj na podstawie obciążenia systemu.

Jest to czysta instalacja serwera Ubuntu. Ma zainstalowany Xorg, ale nie sądzę, żeby był z nim zainstalowany menedżer okien, chciałem po prostu przekazywać X11 przez ssh.

Ponadto, podczas gdy ograniczniki szybkości w programach pv, rsync itp. Działają dobrze przy zapisywaniu systemu, chciałbym również zmaksymalizować szybkość transferu. Czy istnieje jakikolwiek sposób, oprócz nice / ionice, który wydaje się nie robić wiele, aby powiedzieć systemowi, aby wykonał transfer tak szybko, jak to możliwe, ale dać cokolwiek innego w systemie, jeśli tego chce? Na przykład, jeśli mam transfer na USB, który zajmie godzinę, a następnie pół godziny u kogoś zacznie korzystać z jednej z witryn Pythona, transfer nastąpi tak szybko, jak to możliwe przez pierwsze pół godziny, ale potem system zacznie go ograniczać, gdy użytkownik zacznie wysyłać żądania do witryny python. (Zaczynam myśleć, że to pytanie powinno zostać opublikowane w usłudze Server Fault, i przepraszam za to).

lekcje
źródło
Co to jest obciążenie procesora podczas transferu? (użyj np. toplub htop). Czy próbowałeś pv -Lograniczyć szybkość transferu w swoich testach? Czy to zmniejszyło problem? O jakiej szybkości transferu mówimy?
Kamil Maciorowski
Sprawdź też, czy nie indeksujesz plików za pomocą czegoś takiego jak akonadi ...
Hastur
Ponadto: jaki jest docelowy system plików? a źródłowy? Czy któryś z nich jest zamontowany z BEZPIECZNIKIEM?
Kamil Maciorowski
Wewnętrzne i zewnętrzne dyski używają natywnego ext4, więc nie ma BEZPIECZNIKA. Nic nie powinno indeksować plików, które znam, z wyjątkiem tego, co domyślnie może zrobić Ubuntu (jest to bezgłowy serwer Ubuntu). Wydaje się, że procesor nie jest obciążony z perspektywy htopa, ale raporty użycia uptime zwiększają się z około 0,5 do 6,0-8,0. Wydaje się, że ograniczenie pv przy użyciu -L pomaga, więc jest to rozwiązanie dla jednego narzędzia. Zwykle używam tylko pv podczas kopiowania pojedynczych plików. Czy jest jakiś sposób, aby ograniczyć stawki innych programów? Wolę także zmieniać priorytety niż ograniczać je. Optymalizuj w oparciu o obciążenie systemu
lamsam
Spróbuj użyć iotoplub atopzobaczyć dostęp do pliku ... BTW używa rsyncz -Popcją między innymi, zamiast pv, powinno to obejmować mniej połączeń systemowych, jeśli kopiujesz wiele plików ... Kiedy kopiujesz bez pvtego samego problemu?
Hastur