IONICE(1) دستورات کاربری IONICE(1)

ionice - دریافت یا تنظیم کلاس و اولویت زمان‌بندی ورودی/خروجی برنامه

ionice [-c class] [-n level] [-t] -p PID

ionice [-c class] [-n level] [-t] -P PGID

ionice [-c class] [-n level] [-t] -u UID

ionice [-c class] [-n level] [-t] command [argument] ...

این برنامه کلاس و اولویت زمان‌بندی ورودی/خروجی (I/O) را برای یک برنامه تنظیم کرده یا دریافت می‌کند. اگر هیچ آرگومانی یا فقط -p داده شود، ionice کلاس و اولویت زمان‌بندی کنونی ورودی/خروجی را برای آن فرایند پرس‌وجو می‌کند.

هنگامی که command مشخص شده باشد، ionice این دستور را با آرگومان‌های داده‌شده اجرا می‌کند. اگر هیچ class مشخص نشده باشد، آنگاه command با کلاس زمان‌بندی "best-effort" اجرا خواهد شد. سطح اولویت پیش‌فرض ۴ است.

در زمان نگارش این مستند، یک فرایند می‌تواند در یکی از سه کلاس زمان‌بندی قرار داشته باشد:

بیکار (Idle)

برنامه‌ای که با اولویت ورودی/خروجی idle اجرا می‌شود، تنها زمانی زمان دیسک را دریافت می‌کند که هیچ برنامه دیگری در یک دوره مهلت (grace period) معین درخواست ورودی/خروجی دیسک نکرده باشد. تأثیر یک فرایند ورودی/خروجی idle بر فعالیت عادی سیستم باید صفر باشد. این کلاس زمان‌بندی آرگومان اولویت نمی‌پذیرد. در حال حاضر، این کلاس زمان‌بندی برای یک کاربر عادی مجاز است (از هسته 2.6.25 به بعد).

بیشترین تلاش (Best-effort)

این کلاس زمان‌بندی مؤثر برای هر فرایندی است که اولویت ورودی/خروجی خاصی درخواست نکرده باشد. این کلاس یک آرگومان اولویت از 0-7 می‌پذیرد که در آن عدد کمتر نشان‌دهنده اولویت بالاتر است. برنامه‌هایی که در اولویت best-effort یکسانی اجرا می‌شوند، به روش نوبت‌گردشی (round-robin) سرویس‌دهی می‌شوند.

توجه داشته باشید که پیش از هسته 2.6.26 فرایندی که اولویت ورودی/خروجی درخواست نکرده بود، رسماً از "none" به عنوان کلاس زمان‌بندی استفاده می‌کرد، اما زمان‌بند ورودی/خروجی با چنین فرایندهایی به‌گونه‌ای رفتار می‌کرد که گویی در کلاس best-effort قرار دارند. اولویت در کلاس best-effort به‌طور پویا از سطح CPU nice فرایند مشتق می‌شد: io_priority = (cpu_nice + 20) / 5.

برای هسته‌های پس از 2.6.26 با زمان‌بند ورودی/خروجی CFQ، فرایندی که اولویت ورودی/خروجی درخواست نکرده باشد، کلاس زمان‌بندی CPU خود را به ارث می‌برد. اولویت ورودی/خروجی از سطح CPU nice فرایند مشتق می‌شود (مشابه وضعیت پیش از هسته 2.6.26).

بلادرنگ (Realtime)

به کلاس زمان‌بندی RT بدون توجه به دیگر فعالیت‌های سیستم، نخستین دسترسی به دیسک داده می‌شود. بنابراین از کلاس RT باید با احتیاط استفاده شود، زیرا می‌تواند فرایندهای دیگر را دچار گرسنگی (starvation) کند. همانند کلاس best-effort، تعداد ۸ سطح اولویت تعریف شده است که نشان می‌دهد یک فرایند مشخص در هر پنجره زمان‌بندی چه مقدار برش زمانی دریافت خواهد کرد. این کلاس زمان‌بندی برای یک کاربر عادی (یعنی غیر ریشه/non-root) مجاز نیست.

-c, --class class

تعیین نام یا شماره کلاس زمان‌بندی مورد استفاده؛ 0 برای none، 1 برای realtime، 2 برای best-effort، 3 برای idle.

-n, --classdata level

تعیین داده کلاس زمان‌بندی. این گزینه تنها در صورتی تأثیر دارد که کلاس یک آرگومان بپذیرد. برای realtime و best-effort، مقادیر 0-7 داده‌های معتبر (سطوح اولویت) هستند و 0 بالاترین سطح اولویت را نشان می‌دهد.

-p, --pid PID...

تعیین شناسه‌های فرایند (PID) فرایندهای در حال اجرا برای دریافت یا تنظیم پارامترهای زمان‌بندی آن‌ها.

-P, --pgid PGID...

تعیین شناسه‌های گروه فرایند (PGID) فرایندهای در حال اجرا برای دریافت یا تنظیم پارامترهای زمان‌بندی آن‌ها.

-t, --ignore

نادیده گرفتن شکست در تنظیم اولویت درخواستی. اگر command مشخص شده باشد، حتی در صورت عدم امکان تنظیم اولویت زمان‌بندی مورد نظر (که می‌تواند به دلیل دسترسی‌های ناکافی یا نسخه قدیمی هسته رخ دهد)، آن را اجرا می‌کند.

-u, --uid UID...

تعیین شناسه‌های کاربری (UID) فرایندهای در حال اجرا برای دریافت یا تنظیم پارامترهای زمان‌بندی آن‌ها.

-h, --help

نمایش متن راهنما و خروج.

-V, --version

نمایش نسخه و خروج.

لینوکس از زمان 2.6.13 همراه با زمان‌بند ورودی/خروجی CFQ از اولویت‌ها و کلاس‌های زمان‌بندی ورودی/خروجی پشتیبانی می‌کند.

•# ionice -c 3 -p 89

فرایند با PID 89 را به عنوان یک فرایند ورودی/خروجی بیکار (idle) تنظیم می‌کند.

•# ionice -c 2 -n 0 bash

دستور 'bash' را به عنوان برنامه‌ای در کلاس best-effort با بالاترین اولویت اجرا می‌کند.

•# ionice -p 89 91

کلاس و اولویت فرایندهای با PID 89 و 91 را چاپ می‌کند.

Jens Axboe <jens@axboe.dk>, Karel Zak <kzak@redhat.com>

ioprio_set(2)

برای گزارش باگ‌ها، از ردیاب مشکلات https://github.com/util-linux/util-linux/issues.

دستور ionice بخشی از بسته util-linux است که می‌توان آن را از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دانلود کرد.

2026-03-31 util-linux 2.41.5