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 htop
perspektywy, ale raporty użycia uptime podskakują z około 0,5 do 6,0-8,0. Wydaje się, że pv
używanie ograniczania -L
prędkości 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 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).
iotop
lub atop
zobaczyć dostęp do pliku ... BTW używa rsync
z -P
opcją między innymi, zamiast pv
, powinno to obejmować mniej połączeń systemowych, jeśli kopiujesz wiele plików ... Kiedy kopiujesz bez pv
tego samego problemu?
top
lubhtop
). Czy próbowałeśpv -L
ograniczyć szybkość transferu w swoich testach? Czy to zmniejszyło problem? O jakiej szybkości transferu mówimy?