Чи можна зробити програму "du" менш агресивною?


21

У нас є звичайна робота, яка робить duрезюме ряду підкаталогів, вибирає найгірших правопорушників і використовує вихід, щоб з’ясувати, чи є речі, які швидко зростають, щоб виявити потенційні проблеми. Ми використовуємо diffдля знімків для їх порівняння.

Існує каталог верхнього рівня, що містить декілька (кілька сотень) підкаталогів, кожен з яких може містити 10 тисяч тисяч файлів у кожному (або більше).

" du -s" У цьому контексті може бути дуже агресивним IO, що змушує наш сервер заставити кеш-пам'ять, а потім впливатимуть масивні IO-шипи, які є дуже небажаною стороною.

Яку стратегію можна використовувати для отримання одних і тих же даних без небажаних побічних ефектів?


9
У Німеччині ви можете замінити його на "Sie".
Федеріко Полоні

Відповіді:


28

Погляньте ionice. Від man ionice:

Ця програма встановлює або отримує клас планування ІО та пріоритет для програми. Якщо аргументів не вказано або просто -p, ionice запитає поточний клас планування io та пріоритет цього процесу.

Для роботи duз класом вводу-виводу "простоює", який є найнижчим пріоритетом, ви можете зробити щось подібне:

ionice -c 3 du -s

Це не повинно duперешкоджати вводу / виводу іншого процесу. Ви також можете розглянути можливість відхилення програми, щоб знизити її пріоритет, наприклад:

renice -n 19 "$duPid"

Ви також можете зробити обидва в час ініціалізації:

nice -n 19 ionice -c 3 du

5
Щоб відновити існуючу програму, вам потрібно зателефонувати reniceзамість nice. Для того, щоб почати duз обома ionice і приємним, ви можете прикувати обидві програми: nice -n19 ionice -c3 du.
jofel

niceтакож впливає на пріоритет планувальника вводу-виводу, а не лише на процесор.
Йорданм

1
@jordanm Наскільки я знаю (принаймні в Linux), це niceвпливає лише на приємність процесора (що може побічно впливати на введення-виведення, але не повинно впливати на пріоритет планувальника вводу-виводу). Де ви бачите таку поведінку? Це десь задокументовано?
Кріс Даун

@ChrisDown - пригадую, я читав це в « Розуміння ядра Linux»
jordanm

@jordanm Гм, у мене ця книга. Я швидко проглянув його і знайшов лише сторінку 263, яка дає чіткі деталі nice, і вона говорить лише про кванти базового часу процесора. Чи маєте ви уявлення, де в книзі це було? Мені було б цікаво читати авторитетне джерело , що держави, він не згадується в man nice, man 2 nice, man 2 setpriority, info niceабо info 'nice invocation', наскільки я можу сказати, що це дивно , тому що деякі з них йдуть в зовсім трохи докладніше про те , як niceроботи виклику і що це робить.
Кріс Даун

4

Якщо в одному каталозі є багато файлів, це може спричинити шипи вводу / виводу, оскільки багато файлових систем не обробляють великі файлові дерева в одному каталозі. Розділення його на більше підкаталогів може допомогти там. Якщо у вас є більше 10 К файлів в одному режимі, і це спричиняє проблеми, ви, ймовірно, повинні розділити їх.

Що стосується відстеження використання диска, то ви спершу можете ознайомитись df, якщо значення використання там не швидко зростало, то і підкаталоги не з'явилися, і ви можете пропустити duцілком.

Іншою альтернативою може бути дискова система квот, яка постійно відслідковує використання, якщо ваша файлова система підтримує її.


Система - це ферма збірки, тому кількість файлів у dir дійсно зменшується до розроблених нами компонентів. dfце не спрацює - проблема полягає в тому, що у нас є сценарії очищення, тому ми можемо не побачити жодних змін, але пропустили раннє попередження про автоматичну роботу, яка агресивно захоплює місце на диску. Ми використовуємо zabbix для моніторингу загального використання диска, але знати окремі каталоги, де справи йдуть трохи непросто, дуже важливо.
Danny Staple

0

Крім того, ioniceви можете спробувати зробити доступ до диска більш ефективним. Це можна спробувати виконати

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

спочатку (можливо ionice, теж). Не буде працювати, якщо файлів занадто багато. Скільки є занадто багато, залежить від кількості безкоштовної оперативної пам’яті.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.