| TASKSET(1) | دستورات کاربری | TASKSET(1) |
نام (NAME)
taskset - دریافت یا تنظیم وابستگی پردازنده یک فرایند
خلاصه دستور (SYNOPSIS)
taskset [options] mask command [argument...]
taskset [options] -p [mask] pid
توضیحات (DESCRIPTION)
دستور taskset برای تنظیم یا دریافت وابستگی پردازنده (CPU affinity) یک فرایند در حال اجرا بر اساس شناسه فرایند (pid) آن، یا برای اجرای یک command جدید با وابستگی پردازنده مشخص به کار میرود. وابستگی پردازنده ویژگیای از زمانبند است که یک فرایند را به مجموعه مشخصی از پردازندهها در سیستم متصل میکند. زمانبند لینوکس به وابستگی پردازنده تعیینشده پایبند خواهد بود و فرایند روی هیچ پردازنده دیگری اجرا نخواهد شد. توجه داشته باشید که زمانبند لینوکس از وابستگی طبیعی پردازنده نیز پشتیبانی میکند: زمانبند تلاش میکند به دلایل کارایی تا جای ممکن فرایندها را روی همان پردازنده نگه دارد. بنابراین، تحمیل یک وابستگی پردازنده خاص تنها در کاربردهای ویژهای مفید است. وابستگی برخی فرایندها مانند ریسههای به ازای پردازنده هسته (kernel per-CPU threads) قابل تنظیم نیست.
وابستگی پردازنده به صورت یک ماسک بیتی (bitmask) نمایش داده میشود، که در آن کمارزشترین بیت متناظر با نخستین پردازنده منطقی و باارزشترین بیت متناظر با آخرین پردازنده منطقی است. ممکن است همه پردازندهها روی یک سیستم موجود نباشند، اما یک ماسک میتواند پردازندههای بیشتری نسبت به موارد موجود را مشخص کند. ماسک دریافتشده تنها بیتهایی را منعکس میکند که متناظر با پردازندههای موجود فیزیکی روی سیستم هستند. اگر یک ماسک نامعتبر داده شود (یعنی ماسکی که با هیچ پردازنده معتبری روی سیستم فعلی تطابق ندارد) خطایی بازگردانده میشود. ماسکها میتوانند در مبنای شانزده (با یا بدون پیشوند "0x") یا به صورت فهرستی از پردازندهها با گزینه --cpu-list مشخص شوند. برای مثال،
0x00000001
0x00000003
FFFFFFFF
0x32
--cpu-list 0-2,6
--cpu-list 0-10:2
هنگامی که taskset به پایان میرسد، تضمین میشود که برنامه ارائهشده روی یک پردازنده مجاز زمانبندی شده است.
گزینهها (OPTIONS)
-a, --all-tasks
-c, --cpu-list
-p, --pid
-h, --help
-V, --version
نحوه استفاده (USAGE)
رفتار پیشفرض، اجرای یک دستور جدید با یک ماسک وابستگی مشخص است:
همچنین میتوانید وابستگی پردازنده یک وظیفه موجود را دریافت کنید:
یا آن را تنظیم نمایید:
هنگامی که یک cpu-list برای یک فرایند موجود مشخص میشود، گزینههای -p و -c باید با هم گروهبندی شوند:
فرم --cpu-list تنها برای راهاندازی دستورات جدید کاربرد دارد:
دسترسیها (PERMISSIONS)
یک کاربر میتواند وابستگی پردازنده فرایندی متعلق به همان کاربر را تغییر دهد. کاربر برای تغییر وابستگی پردازنده فرایند متعلق به کاربری دیگر باید دارای قابلیت CAP_SYS_NICE باشد. یک کاربر میتواند ماسک وابستگی هر فرایندی را دریافت کند.
وضعیت خروج (EXIT STATUS)
taskset در حالت دریافت وابستگی، تا زمانی که PID ارائهشده وجود داشته باشد مقدار 0 را برمیگرداند.
taskset در حالت تنظیم وابستگی، تا زمانی که فراخوانی سیستمی sched_setaffinity(2) زیربنایی مقدار 0 بازگرداند، 0 برمیگرداند. موفقیت دستور تضمین نمیکند که ریسه مشخصشده حتماً به پردازنده(های) تعیینشده منتقل شده باشد، بلکه فقط تضمین میکند که ریسه به پردازندهای خارج از ماسک وابستگی جدید منتقل نخواهد شد. برای مثال، وابستگی ریسه هسته kswapd قابل تنظیم است، اما ممکن است ریسه فوراً منتقل نشود و هیچ تضمینی نیست که هرگز منتقل شود:
$ ps ax -o comm,psr,pid | grep kswapd
kswapd0 4 82
$ sudo taskset -p 1 82
pid 82’s current affinity mask: 1
pid 82’s new affinity mask: 1
$ echo $?
0
$ ps ax -o comm,psr,pid | grep kswapd
kswapd0 4 82
$ taskset -p 82
pid 82’s current affinity mask: 1
در مقابل، هنگامی که کاربر یک وابستگی غیرمجاز را مشخص کند، taskset خطایی را چاپ کرده و 1 برمیگرداند:
$ ps ax -o comm,psr,pid | grep ksoftirqd/0
ksoftirqd/0 0 14
$ sudo taskset -p 1 14
pid 14’s current affinity mask: 1
taskset: failed to set pid 14’s affinity: Invalid argument
$ echo $?
1
مثالها (EXAMPLES)
چاپ وابستگی پردازنده فعلی به عنوان یک فهرست.
$ taskset -pc 0
pid 1355988’s current affinity list: 0-47
نویسندگان (AUTHORS)
نوشتهشده توسط Robert M. Love.
حق نشر (COPYRIGHT)
حق نشر © 2004 Robert M. Love. این یک نرمافزار آزاد است؛ برای شرایط کپیبرداری به سورسکد مراجعه کنید. هیچگونه ضمانتی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب با یک هدف خاص.
همچنین ببینید (SEE ALSO)
chrt(1), nice(1), renice(1), sched_getaffinity(2), sched_setaffinity(2)
برای توضیحات طرح زمانبندی لینوکس به sched(7) مراجعه کنید.
گزارش باگها (REPORTING BUGS)
برای گزارش باگها، از ردیاب مشکلات https://github.com/util-linux/util-linux/issues.
در دسترس بودن (AVAILABILITY)
دستور taskset بخشی از بسته util-linux است که میتوان آن را از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دانلود کرد.
| 2026-09-02 | util-linux 2.42.3 |