TASKSET(1)

الاسم
taskset - اضبط أو استرجع تقارب وحدة المعالجة المركزية لعملية ما

موجز

taskset [خيارات] mask command [وسيط...]

taskset [خيارات] -p [قناع] معرّف-العملية

الوصف

يُستخدم الأمر taskset لضبط أو استرجاع تقارب وحدة المعالجة المركزية لعملية جارية بناءً على معرف العملية معرّف-العملية الخاص بها، أو لإطلاق أمر جديد بتقارب محدد. تقارب وحدة المعالجة المركزية هو خاصية في المجدول "تربط" عملية بمجموعة محددة من وحدات المعالجة المركزية في الحاسوب. سيلتزم مجدول لينكس بالتقارب المحدد ولن تعمل العملية على أي وحدات معالجة مركزية أخرى. لاحظ أن مجدول لينكس يدعم أيضاً التقارب الطبيعي: حيث يحاول المجدول إبقاء العمليات على وحدة المعالجة المركزية نفسها طالما كان ذلك عملياً لأسباب تتعلق بالأداء. لذلك، فإن فرض تقارب محدد يكون مفيداً فقط في تطبيقات معينة. لا يمكن ضبط تقارب بعض العمليات مثل خيوط النواة (kernel threads) المخصصة لكل وحدة معالجة.

يُمثَّل تقارب وحدة المعالجة المركزية على هيئة قناع بتات (bitmask)، حيث يقابل البت الأدنى رتبةً أول وحدة معالجة مركزية منطقية، والبت الأعلى رتبةً يقابل آخر وحدة معالجة منطقية. قد لا توجد كافة وحدات المعالجة في حاسوب معين، ولكن قد يحدد القناع وحدات معالجة أكثر مما هو موجود فعلياً. سيعكس القناع المسترجع فقط البتات التي تقابل وحدات المعالجة الموجودة في الحاسوب مادياً. إذا أُعطي قناع غير صالح (أي لا يقابل أي وحدة معالجة صالحة في الحاسوب الحالي)، فسيُرد خطأ. يمكن تحديد الأقنعة بنظام الست عشر (مع بادئة "0x" أو دونها)، أو كقائمة وحدات معالجة عبر الخيار --cpu-list. على سبيل المثال،

0x00000001
    هو المعالج #0،

0x00000003
    هما المعالجان #0 و #1،

FFFFFFFF
    هي المعالجات من #0 إلى #31،

0x32
    هي المعالجات #1، و #4، و #5،

--cpu-list 0-2,6
    هي المعالجات #0، و #1، و #2، و #6.

--cpu-list 0-10:2
    هي المعالجات #0، و #2، و #4، و #6، و #8 و #10. تحدد اللاحقة ":N" الخطوة في النطاق، فمثلاً 0-10:3 تُفسر على أنها القائمة 0,3,6,9.

عندما ينتهي taskset، فإنه يُضمن أن البرنامج المعطى قد جُدول على وحدة معالجة مركزية قانونية.

الخيارات

-a، --all-tasks
    اضبط أو استرجع تقارب وحدة المعالجة المركزية لكافة المهام (الخيوط) لمعرف عملية (PID) معين.

-c، --cpu-list
    فَسّر قناع كقائمة رقمية للمعالجات بدلاً من قناع بتات. تُفصل الأرقام بفواصل وقد تتضمن نطاقات. على سبيل المثال: 0,5,8-11.

-p، --pid
    العمل على معرّف عملية (PID) موجود وعدم إطلاق مهمة جديدة. إذا كان معرّف العملية صفراً، فسيتم العمل على عملية taskset نفسها.

-h، --help
    اعرض نص المساعدة ثم اخرج.

-V، --version
    اعرض الإصدار واخرج.

الاستخدام

السلوك المبدئي هو تشغيل أمر جديد بقناع تقارب محدد:
    taskset قناع أمر وسائط]

يمكنك أيضاً استرجاع تقارب وحدة المعالجة المركزية لمهمة موجودة:
    taskset -p معرّف-العملية

أو اضبطها:
    taskset -p mask pid

عند تحديد قائمة معالجات لعملية موجودة، يجب تجميع الخيارين -p و -c معاً:
    taskset -pc cpu-list pid

نموذج --cpu-list قابل للتطبيق فقط لإطلاق أوامر جديدة:
    taskset --cpu-list cpu-list command

الأذونات

يستطيع المستخدم تغيير تقارب وحدة المعالجة المركزية لعملية تنتمي للمستخدم نفسه. يجب أن يمتلك المستخدم صلاحية CAP_SYS_NICE لتغيير تقارب وحدة المعالجة المركزية لعملية تنتمي لمستخدم آخر. يستطيع المستخدم استرجاع قناع التقارب لأي عملية.

حالة الخروج

يُرجع taskset القيمة 0 في وضع استرجاع التقارب طالما أن معرف العملية (PID) المزود موجود.

يُرجع taskset القيمة 0 في وضع ضبط الالفة طالما أن استدعاء النظام sched_setaffinity(2) الأساسي يفعل ذلك. لا يضمن نجاح الأمر أن الخيط (thread) المحدد قد انتقل فعليًا إلى المعالج (أو المعالجات) المشار إليها، بل يضمن فقط أن الخيط لن ينتقل إلى معالج خارج قناع الألفة الجديد. على سبيل المثال، يمكن ضبط ألفة خيط النواة 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

أمثلة

اطبع الألفة الحالية لوحدة المعالجة المركزية كقائمة.

$ taskset -pc 0
قائمة الألفة الحالية لـ pid 1355988 هي: 0-47

المؤلفين

كتبه Robert M. Love.

حقوق النسخ

حقوق النشر © 2004 Robert M. Love. هذا برمجية حرة؛ انظر المصدر لشروط النسخ. لا يوجد أي ضمان؛ ولا حتى لغرض التسويق أو الملاءمة لغرض معين.

انظر أيضاً

chrt(1)، nice(1)، renice(1)، sched_getaffinity(2)، sched_setaffinity(2)

انظر sched(7) لوصف مخطط جدولة لينكس.

التبليغ عن الأخطاء

لتقارير العِلل، استخدم

التوفر

الأمر taskset جزء من حزمة util-linux التي يمكن تنزيلها من