Использование ionice в Unix/Linux

Использование ionice в Unix/Linux

ionice получить/установить класс и приоритет ввода/вывода процесса. В своей статье «Использование ionice в Unix/Linux» я хочу рассказать как сделать ionice для процессов которые потребляют много ресурсов I/O и создают нагрузку на жесткий диск.

Синтаксис.

# ionice [[-c class] [-n classdata] [-t]] -p PID [PID]...
# ionice [-c class] [-n classdata] [-t] COMMAND [ARG]...

Эта программа устанавливает или получает IO класс планирования и приоритет для программ. Если аргументы или параметр -p не указан, ionice будет запрашивать текущий класс IO планирования и приоритет для этого процесса.

На момент написания статьи «Использование ionice в Unix/Linux», процесс может находиться в одном из трех классов планирования:

Idle

Программа работает с приоритетом простоя IO будет только время диска при никакая другая программа не попросил диска ввода-вывода для определенного льготного периода. Этот класс планирования не принимает аргумент приоритета. В настоящее время этот класс планирования разрешается для обычного пользователя (начиная с ядра 2.6.25).

Best effort

Это эффективный класс планирования для любого процесса, который не попросил о конкретных приоритетнах ввода-вывода. Этот класс получает приоритетный аргумент от 0-7 (от  меньшего числа к большему и меньшее число является высшим приоритетом). Программы, которые работают в том же приоритете усилий подаются в циклическом режиме.
Отметим, что до ядра 2.6.26 процесс, который не попросил приоритетом IO официально не использует «нет» как класс планирования, но IO планировщик будет рассматривать такие процессы, так как если бы это было бы в лучшем классе усилий.Приоритет в лучший класс усилия будут динамически происходит от процессора с хорошим уровенем процесса: io_priority = (cpu_nice + 20) / 5.

Для ядер после 2.6.26 с CFQ IO планировщик процесс, который не попросил IO приоритет, то он наследует процессор класса планирования. Приоритет ввода-вывода происходит от процессора с хорошим уровенем процесса (так же, как и раньше с ядром 2.6.26).

Real time
Класс RT планирования дает первый доступ к диску, независимо от того, что происходит в системе. Таким образом, класс RT нужно использовать с некоторой осторожностью, так как он может забрать все ресурсы и не дать выполнять свою работу другим процессам. Как и в лучший класс усилия имеет 8 уровней приоритета. Этот класс планирования не допускается для обычного (т.е. не для root) пользователя.

Опции.

-c class
Класс планирования. 0 ни для кого, 1 — для реального времени, 2 — для получения оптимального усилия, 3 — для «холостого хода» т.е idle.

-n classdata
Данные о классе планирования. Это определяет данные класса, если класс принимает аргумент. Для реального времени и максимальных усилий, 0-7 является достоверными данными.

-p pid
Перейдите в ПИД (ы), чтобы просмотреть или изменить уже запущенные процессы. Если этот аргумент не задан, ionice будет работать с перечисленными программами и с заданными параметрами.

-t
Игнорировать неспособность установить требуемый приоритет. Если команда или PID (ы) указаны, запустить его даже в случае когда не удалось установить требуемый приоритет планирования, что может произойти из-за недостатка привилегий или старой версии ядра.

Примеры.

Устанавливает класс ввода/вывода idle для процесса с идентификатором PID 69:

# ionice -c3 -p69

Запускает ‘bash’ с классом best-effort и наивысшим приоритетом ввода/вывода:

# ionice -c2 -n0 bash

Возвращает класс и приоритет для процесса с идентификатором PID 69:

# ionice -p69

Использование ionice в Unix/Linux подошло к завершению.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.