Есть ли способ запустить процесс (например, ls, du, find ... и т. Д.) В строго ограниченном количестве ресурсов (например, процессор, память, ввод-вывод) помимо использования nice & ionice, поскольку я их не нашел достаточно эффективно в моем случае.
У меня есть производственный сервер, на котором есть каталоги с огромным количеством файлов, которые нужно удалить, переместить, получить их общий размер и т. Д.
Есть еще один экстремальный уровень контроля процесса, чем (re) nice: chrt. Вы можете установить для процесса SCHED_IDLE. В сочетании с ionice IDLE это должно сделать эту работу.
На самом деле существует цель сопоставления устройств, которая, к сожалению, еще не вошла в основное ядро, что дает вам еще больше контроля: ioband
Другой вариант: поместить этот процесс в виртуальную машину. Прямой доступ к VFS возможен в KVM, и вы можете точно определить, сколько операций ввода-вывода получит виртуальная машина.
Обратите внимание, что ionice
использование может отличаться в зависимости от указанных вами классов; использование приятного значения 19 с классом ionice 'idle' хорошо поработало для меня в аналогичном вашем случае без слишком большого увеличения CPU / IO
Вот как вы можете его использовать:
nice -n 19 'command'
ionice -c 3 -p `ps aux | grep command | grep -v grep | awk {'print $2'}`
Вы можете использовать набор задач, чтобы ограничить группу процессов конкретным процессором, и, если вы любите и ионизируете его до максимума, это поможет, но он все равно будет работать достаточно быстро, чтобы очистить кеш VFS (если это проблема) и кеш VFS находится за пределами квоты ограничений, но использование ограничений не поможет, поскольку оно просто отключает новый процесс, когда они заканчиваются.
На самом деле, если вы хотите медленно пройти по дереву в фоновом режиме, вам придется написать код.