Czy program „du” może być mniej agresywny?

21

Mamy stałą pracę, która wykonuje dustreszczenia wielu podkatalogów, wyszukując najgorszych przestępców i wykorzystując wyniki, aby sprawdzić, czy istnieją rzeczy, które szybko rosną, aby wykryć potencjalne problemy. Używamy diffprzeciwko migawkom, aby je porównać.

Istnieje katalog najwyższego poziomu z kilkoma (kilkaset) podkatalogami, z których każdy może zawierać 10 tysięcy plików (lub więcej).

„” du -s„W tym kontekście może być bardzo agresywne we / wy, powodując, że nasz serwer zwolni pamięć podręczną, a następnie ogromne skoki we / wy, które są bardzo niepożądanym efektem ubocznym.

Jaką strategię można zastosować, aby uzyskać te same dane bez niepożądanych efektów ubocznych?

Danny Staple
źródło
9
W Niemczech możesz go zastąpić „Sie”.
Federico Poloni

Odpowiedzi:

28

Spójrz na ionice. Od man ionice:

Ten program ustawia lub pobiera klasę io priorytecie io dla programu. Jeśli nie podano argumentów lub podano tylko -p, ionice zapyta o bieżącą klasę io io priorytet dla tego procesu.

Aby uruchomić duklasę We / Wy „bezczynną”, która jest najniższym dostępnym priorytetem, możesz zrobić coś takiego:

ionice -c 3 du -s

To powinno przestać duzakłócać inne procesy We / Wy. Możesz również rozważyć ponowne uruchomienie programu, aby obniżyć jego priorytet procesora, na przykład:

renice -n 19 "$duPid"

Możesz to zrobić zarówno podczas inicjalizacji:

nice -n 19 ionice -c 3 du
Chris Down
źródło
5
Aby przywrócić istniejący program, musisz zadzwonić renicezamiast nice. Aby rozpocząć duzarówno ionice i miły, można łańcucha oba programy: nice -n19 ionice -c3 du.
jofel
nicesam wpływa również na priorytet harmonogramu we / wy, a nie tylko na procesor.
jordanm
1
@jordanm O ile mi wiadomo (przynajmniej w Linuksie) nicewpływa tylko na procesor (co może pośrednio wpływać na operacje wejścia / wyjścia, ale nie powinno mieć wpływu na priorytet harmonogramu operacji wejścia / wyjścia). Gdzie widzisz to zachowanie? Czy jest to gdzieś udokumentowane?
Chris Down
@ChrisDown - pamiętam, że przeczytałem go w Zrozumieniu jądra Linuksa
jordanm
@jordanm Hm, mam tę książkę. Szybko przejrzałem go i znalazłem tylko stronę 263, która wyraźnie nicemówi o szczegółach , i mówi tylko o kwantach czasu bazowego procesora. Czy masz pojęcie, gdzie była ta książka? Byłbym zainteresowany, aby przeczytać autorytatywnego źródła, które to stany, nie jest wymieniony w man nice, man 2 nice, man 2 setpriority, info nicelub info 'nice invocation'o ile mi może powiedzieć, co jest dziwne, ponieważ niektóre z tych przejść do całkiem sporo szczegółów o tym, jak w nicepracach połączeń i co robi.
Chris Down
4

Jeśli masz mnóstwo plików w jednym katalogu, może to być odpowiedzialne za skoki We / Wy, ponieważ wiele systemów plików nie obsługuje dużych drzew plików w jednym katalogu. Pomocne może być podzielenie go na więcej podkatalogów. Jeśli masz więcej niż 10 000 plików w jednym katalogu, co powoduje problemy, prawdopodobnie powinieneś go podzielić.

Jeśli chodzi o śledzenie użycia dysku, możesz najpierw rzucić okiem df, jeśli wartość użycia tam nie gwałtownie wzrosła, wówczas podkatalogi też nie i możesz ducałkowicie pominąć .

Inną alternatywą może być system przydziałów dysku, który stale monitoruje użycie, jeśli twój system plików go obsługuje.

frostschutz
źródło
System jest farmą kompilacji, więc liczba plików w katalogu zależy od twórców tworzonych przez nas komponentów. dfnie zadziałałoby - problem polega na tym, że mamy skrypty czyszczące, więc możemy nie zauważyć żadnych zmian, ale przegapiliśmy wczesne ostrzeżenie o automatycznym zadaniu agresywnie zajmującym miejsce na dysku. Używamy zabbix do monitorowania ogólnego użycia dysku, ale znajomość poszczególnych katalogów, w których sprawy mają się trochę dziwnie, jest bardzo istotna.
Danny Staple
0

Ponadto ionicemożesz spróbować zwiększyć wydajność dostępu do dysku. Można to wykonać, wykonując polecenie

find /du/root -printf ""
find /du/root -perm 777 -printf ""

po pierwsze (może też przez ionice). Nie będzie działać, jeśli jest zbyt wiele plików. Ile jest za dużo, zależy od ilości wolnej pamięci RAM.

Hauke ​​Laging
źródło