| scontrol(1) | Slurm Commands | scontrol(1) |
نام (NAME)
scontrol - مشاهده یا ویرایش پیکربندی و وضعیت Slurm.
خلاصه دستور (SYNOPSIS)
scontrol [OPTIONS...] [COMMAND...]
توضیحات (DESCRIPTION)
دستور scontrol برای مشاهده یا ویرایش پیکربندی Slurm شامل: کار (job)، گام کار (job step)، گره (node)، پارتیشن (partition)، رزرو (reservation) و پیکربندی کلی سیستم به کار میرود. بیشتر دستورها برای اجرا به دسترسیهای ارتقایافته نیاز دارند (همچنین بخش AUTHORIZATION را ببینید). اگر کاربری دستوری را بدون دسترسیهای لازم اجرا کند، یک پیام خطا چاپ خواهد شد و اقدام درخواستی انجام نخواهد گرفت. اگر هیچ دستوری در خط فرمان وارد نشود، scontrol در یک حالت تعاملی کار خواهد کرد و منتظر ورودی میماند. این برنامه تا زمانی که صریحاً پایان نیابد، به دریافت ورودی و اجرای دستورها ادامه خواهد داد. اگر دستوری در خط فرمان وارد شود، scontrol آن دستور را اجرا کرده و به پایان میرسد. تمامی دستورها و گزینهها نسبت به بزرگی و کوچکی حروف حساس نیستند (case-insensitive)، اگرچه نامهای گرهها، نامهای پارتیشنها و نامهای رزروها حساس به بزرگی و کوچکی حروف هستند (نامهای گره "LX" و "lx" متمایز هستند). همهٔ دستورها و گزینهها را میتوان تا جایی که مشخصه یکتا باقی بماند خلاصه کرد. یک پیکربندی ویرایششدهٔ Slurm را میتوان با استفاده از دستور scontrol write config در یک فایل ذخیره کرد. فایل حاصل طبق قرارداد "slurm.conf.<datetime>" نامگذاری شده و در همان دایرکتوری فایل اصلی "slurm.conf" قرار خواهد گرفت. برای انجام این کار، دایرکتوری حاوی slurm.conf اصلی باید قابل نوشتن باشد.
گزینهها (OPTIONS)
- -a, --all
- هنگامی که دستور show استفاده میشود، تمامی پارتیشنها، کارها و گامهای کاری آنها نمایش داده میشوند. این گزینه باعث میشود اطلاعات مربوط به پارتیشنهایی که به عنوان مخفی پیکربندی شدهاند و پارتیشنهایی که برای گروه کاربر در دسترس نیستند نیز نمایش داده شوند.
- -M, --clusters=<string>
- خوشهای که دستورها باید به آن ارسال شوند. تنها یک نام خوشه را میتوان مشخص کرد. توجه داشته باشید که برای کارکرد صحیح این گزینه، slurmdbd باید فعال باشد، مگر اینکه اجرا در یک فدراسیون با پیکربندی FederationParameters=fed_display یا تنظیم گزینهٔ --federation انجام شود. این گزینه به طور ضمنی گزینهٔ --local را تنظیم میکند.
- -d, --details
- باعث میشود دستور show در صورت وجود، جزئیات بیشتری را ارائه دهد.
- --federation
- در صورت عضویت در یک فدراسیون، کارهای مربوط به فدراسیون را گزارش میدهد.
- -F, --future
- گرهها را در وضعیت FUTURE گزارش میدهد.
- -h, --help
- یک پیام راهنما برای شرح نحوهٔ استفاده از scontrol چاپ میکند.
- --hide
- اطلاعات مربوط به پارتیشنهای مخفی، کارها و گامهای کاری آنها را نمایش نمیدهد. بهطور پیشفرض، نه پارتیشنهای پیکربندیشده به عنوان مخفی و نه پارتیشنهای غیرقابلدسترس برای گروه کاربر نمایش داده نخواهند شد (یعنی این رفتار پیشفرض است).
- --json, --json=list, --json=<data_parser>
- استخراج اطلاعات به صورت JSON با استفاده از افزونهٔ پیشفرض data_parser یا data_parser مشخص با پارامترها. تمام اطلاعات استخراج میشوند، حتی مواردی که بهطور معمول نمایش داده نمیشوند. آرگومانهای مرتبسازی و قالببندی ارسالی به گزینههای دیگر نادیده گرفته میشوند؛ با این حال، بیشتر آرگومانهای فیلترسازی همچنان اعمال میشوند. این گزینه برای تمامی دستورها در دسترس نیست. این گزینه به طور ضمنی گزینهٔ --details را تنظیم میکند.
- --local
- تنها اطلاعات محلی مربوط به این خوشه را نمایش میدهد. در صورت عضویت در یک فدراسیون، سایر خوشهها را نادیده میگیرد. بر --federation اولویت دارد.
- -o, --oneliner
- اطلاعات را در قالب یک خط به ازای هر رکورد چاپ میکند.
- -Q, --quiet
- هیچ پیام هشدار یا اطلاعیهای چاپ نمیکند، تنها پیامهای خطای مهلک را نمایش میدهد.
- --sibling
- تمامی کارهای همزاد (sibling jobs) را در یک خوشهٔ فدراسیونی نمایش میدهد. به طور ضمنی گزینهٔ --federation را به همراه دارد.
- -u, --uid=<uid>
- تلاش میکند یک کار را بهجای شناسهٔ کاربری فراخواننده، به عنوان کاربر <uid> بهروزرسانی کند.
- -v, --verbose
- ثبت تفصیلی رویدادها را چاپ میکند. استفاده از چندین '-v' سطح تفصیل گزارشگیری را بیشتر افزایش میدهد. بهطور پیشفرض تنها خطاها نمایش داده خواهند شد.
- -V , --version
- اطلاعات نسخه را چاپ کرده و خارج میشود.
- --yaml, --yaml=list, --yaml=<data_parser>
- استخراج اطلاعات به صورت YAML با استفاده از افزونهٔ پیشفرض data_parser یا data_parser مشخص با پارامترها. تمام اطلاعات استخراج میشوند، حتی مواردی که بهطور معمول نمایش داده نمیشوند. آرگومانهای مرتبسازی و قالببندی ارسالی به گزینههای دیگر نادیده گرفته میشوند؛ با این حال، بیشتر آرگومانهای فیلترسازی همچنان اعمال میشوند. این گزینه برای تمامی دستورها در دسترس نیست. این گزینه به طور ضمنی گزینهٔ --details را تنظیم میکند.
- cancel_reboot <NodeList>
- لغو راهاندازیهای مجدد معلق روی گرهها. اگر گره در اثر یک راهاندازی مجدد ASAP تخلیه شده باشد (drained)، گره از حالت تخلیه خارج شده (undrain) و دلیل آن پاک میشود.
- create <SPECIFICATION>
- ایجاد یک گره، پارتیشن یا رزرو جدید. فهرست کامل پارامترها را در ادامه ببینید.
- completing
- نمایش همهٔ کارهای در وضعیت COMPLETING به همراه گرههای مرتبط که در وضعیت COMPLETING یا DOWN هستند.
- delete <SPECIFICATION>
- حذف مدخل با SPECIFICATION مشخصشده. گزینههای SPECIFICATION زیر در دسترس هستند:
- NodeName=<nodelist>
- نام گره یا
فهرستی از
نامهای
گرهها
برای حذف.
تنها
گرههای
پویایی که
هیچ کار در
حال اجرایی
ندارند و
بخشی از یک
رزرو
نیستند،
قابل حذف
هستند.
چندین نام گره را میتوان با استفاده از عبارتهای بازهای ساده برای گرهها مشخص کرد (مانند “lx[10-20]”). مجموعهگرهها (Nodesets) را نیز میتوان بهتنهایی یا همراه با عبارتهای بازهای گره، با استفاده از ویرگول به عنوان جداکننده فهرست، مشخص کرد. اگر کلمهٔ کلیدی “ALL” بهتنهایی مشخص شود، عملیات حذف برای تمام گرههای کلاستر محلی تلاش خواهد شد (و برای گرههایی که واجد شرایط حذف نیستند، با شکست مواجه میشود).
- PartitionName=<name>
- نام پارتیشن برای حذف. پارتیشن نباید هیچ کار مرتبط در حال اجرا یا معلقی داشته باشد، در غیر این صورت درخواست رد میشود. ممکن است تغییر دادن کارهای معلق یا تغییر وضعیت پارتیشن از قبل مفید باشد. توجه داشته باشید که اگر این پارتیشن در فایل slurm.conf موجود باشد، در دفعهٔ بعدی که کنترلکننده راهاندازی مجدد یا بازپیکربندی شود، دوباره ایجاد خواهد شد.
- ReservationName=<name>
- نام رزرو
برای حذف.
رزرو نباید
هیچ کار
مرتبطی
داشته
باشد، در
غیر این
صورت
درخواست رد
میشود.
ممکن است
تغییر دادن
کارهای
معلق
بهگونهای
که از رزرو
استفاده
نکنند مفید
باشد.
همچنین
میتوانید
حذف رزرو را
از قبل با
تنظیم EndTime یا
Duration
برنامهریزی
کنید.
یک کاربر ممتاز میتواند هر رزروی را حذف کند. یک کاربر غیرممتاز ممکن است بتواند رزروی را که به آن دسترسی دارد حذف کند، مشروط بر اینکه SlurmctldParameters=user_resv_delete در slurm.conf تنظیم شده باشد یا Flags=USER_DELETE روی رزرو تنظیم شده باشد.
- errnumstr <ERRNO>
- با دریافت یک شماره خطای Slurm، یک رشتهٔ توصیفی برمیگرداند.
- fsdampeningfactor <FACTOR>
- تنظیم FairShareDampeningFactor در slurmctld.
- getaddrs <NODES>
- دریافت آدرسهای IP مربوط به <NODES> از slurmctld.
- getent [<NodeName>]
- چاپ
موجودیتها
(کاربران و
گروهها)
مرتبط با هر
گام در حال
اجرا روی
میزبانی که
این دستور
را
فراخوانی
میکند. این
دستور با
تمام slurmstepdهای
در حال
اجرای محلی
ارتباط
برقرار
میکند و با
slurmctld ارتباطی
برقرار
نمیکند. در
صورت
استفاده از
--enable-multiple-slurmd، از <NodeName>
استفاده
کنید.
نکته: این دستور برای هیچ گامی که در زمان فعال بودن LaunchParameters=disable_send_gids در slurm.conf راهاندازی شده باشد کار نخواهد کرد.
- help
- نمایش توضیحی دربارهٔ گزینهها و دستورهای scontrol.
- hold <job_list>
- جلوگیری از
شروع یک کار
معلق
(اولویت آن
را روی ۰
تنظیم
میکند).
آرگومان job_list
فهرستی
جداشده با
فاصله از
شناسههای
کار (عددی
یا SLUID) یا “jobname=”
به همراه
نام کار است
که برای
نگهداشتن
همهٔ
کارهای
دارای آن
نام تلاش
میکند.
تنها یک کاربر ممتاز، هماهنگکنندهٔ حساب یا مالک کار میتواند کارها را نگه دارد. اگر توسط یک کاربر ممتاز صادر شود، یک admin-hold روی کار اعمال میشود، در غیر این صورت یک user-hold روی کار اعمال خواهد شد. نوع نگهداشت تعیین میکند کدام کاربران میتوانند با دستور release آن را آزاد کنند (همچنین uhold را ببینید).
علاوه بر این، تلاش برای نگهداشتن یک کار در حال اجرا، آن را معلق یا لغو نخواهد کرد؛ اما اولویت کار را روی ۰ قرار داده و فیلد دلیل کار را بهروزرسانی میکند، که در صورت صفبندی مجدد کار در زمانی دیگر، کار در حالت نگهداشته قرار خواهد گرفت.
- listjobs [<NodeName>]
- چاپ کارهای
در حال اجرا
روی
میزبانی که
این دستور
را اجرا
میکند. این
دستور با
تمام slurmstepdهای
در حال
اجرای محلی
تماس
میگیرد و
با slurmctld تماسی
برقرار
نمیکند.
در صورت استفاده از --enable-multiple-slurmd از <NodeName> استفاده کنید.
- listpids [<job_id>[.<step_id>]] [<NodeName>]
- چاپ
شناسههای
فرایند (PIDها)
در یک گام
کار (اگر JOBID.STEPID
ارائه شده
باشد)، یا
تمام
گامهای یک
کار (اگر job_id
ارائه شده
باشد)، یا
تمام
گامهای
تمام کارها
روی گره
محلی (اگر job_id
ارائه نشده
باشد یا job_id
برابر “*”
باشد). این
دستور تنها
برای
فرایندهای
روی گرهای
که scontrol بر روی
آن اجرا شده
و تنها برای
فرایندهای
ایجادشده
توسط Slurm و
نوادگان
آنها کار
خواهد کرد.
توجه داشته
باشید که
برخی از
پیکربندیهای
Slurm (مقدار pgid
برای ProctrackType)
قادر به
شناسایی
همهٔ
فرایندهای
مرتبط با یک
کار یا گام
کار نیستند.
توجه داشته باشید که گزینهٔ NodeName فقط زمانی واقعاً مفید است که چندین دیمون slurmd روی همان ماشین میزبان اجرا شده باشند. چندین دیمون slurmd روی یک میزبان عموماً فقط توسط توسعهدهندگان Slurm استفاده میشود.
- liststeps [<NodeName>]
- چاپ
گامهای در
حال اجرا
روی
میزبانی که
این دستور
را اجرا
میکند. این
دستور با
تمام slurmstepdهای
در حال
اجرای محلی
تماس
میگیرد و
با slurmctld تماسی
برقرار
نمیکند.
در صورت استفاده از --enable-multiple-slurmd از <NodeName> استفاده کنید.
- notify <job_id> <message>
- ارسال یک پیام به خطای استاندارد دستور salloc یا srun یا کار دستهای (batch job) مرتبط با job_id مشخصشده.
- pidinfo <proc_id>
- چاپ شناسهٔ کار Slurm و زمان خاتمهٔ زمانبندیشدهٔ متناظر با شناسهٔ فرایند ارائهشده، proc_id، روی گره فعلی. این دستور تنها روی فرایندهای گرهای که scontrol بر روی آن اجرا شده و فقط برای فرایندهای ایجادشده توسط Slurm و نوادگان آنها کار خواهد کرد.
- ping
- ارسال پینگ به دیمونهای اولیه و ثانویهٔ slurmctld و گزارش اینکه آیا پاسخ میدهند یا خیر. اگر --clusters مشخص شده باشد، فقط دیمون اصلی slurmctld کلاستر مشخصشده را پینگ میکند.
- power {up|down} [asap|force] {ALL|<NodeList>|<NodeSet>} [Action=<name>] [Reason=<reason>]
- کنترل
وضعیت برق (power)
فهرست/مجموعه
گره
ارائهشده.
برای 'power down'،
پرچم
اختیاری ASAP
به درخواست
خاموشسازی
اضافه
خواهد شد،
اما در غیر
این صورت
برای
درخواستهای
power up رد
میشود.
تمام
آرگومانها
به جز
فهرست/مجموعه
گره، بدون
حساسیت به
حروف بزرگ و
کوچک
پردازش
خواهند شد.
مقدار
اختیاری reason
تنها هنگام
خاموش کردن
(power down)
میتواند
مشخص شود.
اگر “action”
تنظیم شده
باشد، PowerAction
با نام
مشخصشده
به جای ResumeProgram
یا SuspendProgram
پیکربندیشده
برای این
درخواست
استفاده
خواهد شد.
کنشهای power up
باید با
Location=slurmctld
پیکربندی
شوند. این
زیردستور،
کاربرد
قبلی دستور
update در scontrol را
منسوخ
میکند:
scontrol update NodeName=<nodes>
State={POWER_UP|POWER_DOWN|POWER_DOWN_ASAP|POWER_DOWN_FORCE}
- down
- برنامهٔ پیکربندیشدهٔ SuspendProgram را برای قرار دادن صریح گره(ها) در حالت صرفهجویی انرژی به کار خواهد برد. اگر گرهای از قبل در فرایند خاموشسازی باشد، این دستور فقط وضعیت گره را تغییر میدهد اما تا زمانی که SuspendTimeout پیکربندیشده به پایان نرسد، هیچ تأثیری نخواهد داشت. استفاده از این دستور میتواند در شرایطی مفید باشد که یک ResumeProgram، مانند capmc در ماشینهای Cray، متوقف شده و کاربر میخواهد گره را بهصورت دستی به “IDLE” بازگرداند. در این حالت، راهاندازی مجدد گره و تنظیم وضعیت روی “power down”، وضعیت قبلی “power up” را لغو کرده و گره به وضعیت “IDLE” درمیآید.
- down asap
- گره(ها) را تخلیه کرده (drain) و آنها را برای خاموشسازی نشانهگذاری میکند. کارهای در حال اجرا ابتدا به پایان میرسند و هیچ کار اضافهای به گره(ها) تخصیص داده نخواهد شد.
- down force
- تمام کارهای روی گره(ها) را لغو کرده، آنها را خاموش میکند، و وضعیتشان را به “IDLE” بازنشانی مینماید..IP
- up
- از برنامه پیکربندیشده ResumeProgram برای خارج کردن صریح گره(ها) از حالت صرفهجویی در مصرف انرژی (power saving) استفاده میکند. اگر گرهای در حال حاضر در فرایند روشن شدن باشد، این دستور تنها وضعیت گره را تغییر میدهد اما تا زمانی که ResumeTimeout پیکربندیشده سپری نشود، هیچ اثری نخواهد داشت.
- reboot [ASAP] [FORCE] [nextstate={RESUME|DOWN}] [reason=<reason>][action=<power action name>] {ALL|<NodeList>|<NodeSet>}
- هنگامی که
گرههای
سیستم
بیکار (idle)
شوند،
آنها را با
استفاده از
RebootProgram مطابق
با
پیکربندی
فایل slurm.conf
اسلورم
بازراهاندازی
میکند. اگر
"action" تنظیم
شده باشد،
بهجای آن
از PowerAction با
نام
مشخصشده
استفاده
خواهد شد.
به وضعیت هر
گره، پرچم
"REBOOT" اضافه
خواهد شد.
پس از
بازراهاندازی
گره و اجرای
مجدد دیمن
slurmd، برنامه
HealthCheckProgram یک بار
اجرا
میشود. سپس
دیمن slurmd خود
را در دیمن
slurmctld ثبت کرده
و پرچم "REBOOT"
پاک میشود.
گزینه "ASAP"
پرچم "DRAIN" را
به وضعیت هر
گره اضافه
میکند و
مانع از
اجرای
کارهای
بیشتر روی
گره میشود
تا بتواند
«در اسرع
وقت» (ASAP)
بازراهاندازی
شده و به
چرخه
سرویسدهی
بازگردد.
همچنین اگر
گزینه "reason"
مشخص نشده
باشد، "ASAP"
دلیل گره را
به "Reboot ASAP"
تنظیم
میکند و
اگر nextstate مشخص
نشده باشد،
nextstate=UNDRAIN را
تنظیم
خواهد کرد.
گزینه "FORCE"
وضعیت
کنونی و هر
کار در حال
اجرا را
نادیده
میگیرد،
وضعیتهای
reboot و power را
بازنشانی
میکند،
کارها را
مجدداً در
صف قرار
میدهد (requeue) و
درخواست
بازراهاندازی
فوری
میدهد. اگر
گزینه "nextstate"
بهصورت "DOWN"
مشخص شده
باشد، گره
پس از
بازراهاندازی
در وضعیت down
باقی
میماند.
اگر "nextstate"
بهصورت
"RESUME" مشخص
شود،
گرهها
روال عادی
را از سر
میگیرند و
دلیل (reason) و
وضعیت "DRAIN"
گره پاک
خواهد شد.
گرههای
ازسرگرفتهشده
در
زمانبندی
آینده backfill
دردسترس در
نظر گرفته
میشوند و
در یک رزرو
با گرههای
بیکار
جایگزین
نخواهند شد.
گزینه "reason"
دلیل هر گره
را روی یک
پیام
تعریفشده
توسط کاربر
تنظیم
میکند. اگر
دلیل دیگری
روی گره
تنظیم نشده
باشد، دلیل
پیشفرض "reboot
requested" قرار
میگیرد.
این دلایل
در شرایط
زیر ضمیمه
خواهند شد:
"reboot issued" هنگام
صدور فرمان
بازراهاندازی؛
"reboot complete"
هنگامی که
گره ثبت
میشود و
دارای "nextstate"
با مقدار "DOWN"
است؛ یا "reboot timed
out" هنگامی
که گره
نتواند ظرف
مدت زمان
ResumeTimeout ثبت شود.
باید یا
فهرستی از
گرهها را
مشخص کنید
یا این که
تمام (ALL)
گرهها
بازراهاندازی
شوند.
نکته: درخواست بازراهاندازی برای میزبانهایی در وضعیتهای زیر نادیده گرفته خواهد شد: FUTURE، POWER_DOWN، POWERED_DOWN، POWERING_DOWN، REBOOT_ISSUED، REBOOT_REQUESTED
نکته: بهطور پیشفرض، این دستور پیش از راهاندازی مجدد مانع از زمانبندی کارهای اضافی روی هیچ گرهای نمیشود. برای جلوگیری از این امر، میتوانید از گزینه "ASAP" استفاده کنید یا پیشاپیش گرهها را بهطور صریح drain کنید. بهعنوان روش جایگزین، میتوانید یک رزرو پیشرفته (advanced reservation) ایجاد کنید تا از آغاز کارهای بیشتر بر روی گرههایی که قرار است بازراهاندازی شوند جلوگیری نمایید. بازراهاندازیهای معلق را میتوان با استفاده از "scontrol cancel_reboot <node>" یا تنظیم وضعیت گره روی "CANCEL_REBOOT" لغو کرد. اگر گرهای ظرف مدت ResumeTimeout بازراهاندازی نشود، وضعیت آن "DOWN" علامتگذاری خواهد شد.
- reconfigure
- به تمام دیمنهای slurmctld و slurmd دستور میدهد که فایل پیکربندی را دوباره بخوانند. این سازوکار میتواند برای تغییر پارامترهای پیکربندی تعیینشده در slurm.conf(5) بدون قطع کارهای در حال اجرا استفاده شود. از نسخه 23.11 به بعد، این دستور با ایجاد فرآیندهای جدید برای دیمنها عمل میکند، سپس در صورت شروع موفقیتآمیز، کنترل را به فرآیندهای جدید منتقل مینماید. این قابلیت اجازه میدهد تا مشکلات پیکربندی بهخوبی مهار شوند و در صورت بروز خطا، اجرای برنامه با پیکربندی قبلی ادامه یابد. این دستور قادر به تغییر تنظیمات پورت شنود TCP یا سازوکار احراز هویت دیمنها نخواهد بود.
- release <job_list>
- کاری را که قبلاً نگه داشته شده بود (held) برای آغاز اجرا آزاد میکند. آرگومان job_list فهرستی از شناسه کارهای جداشده با فاصله (عددی یا SLUID) یا "jobname=" همراه با نام کار است که تلاش میکند تمام کارهای دارای آن نام را آزاد نماید. توجه داشته باشید که یک کاربر ممتاز میتواند admin-hold یا user-hold را آزاد کند. یک مالک یا هماهنگکننده غیرممتاز کار تنها میتواند user-hold را آزاد کند. همچنین ببینید hold.
- requeue [<option>] <job_list>
- یک کار دستهای (batch) در حال اجرا، تعلیقشده یا خاتمهیافته Slurm را دوباره در وضعیت معلق (pending) قرار میدهد. آرگومان job_list فهرستی از شناسه کارهای جداشده با ویرگول است. این دستور گزینه زیر را میپذیرد:
- Incomplete
- فقط روی کارهایی (یا وظایفی از یک آرایه کاری) عمل میکند که کامل نشدهاند. بهطور خاص، تنها کارهایی در وضعیتهای زیر مجدداً در صف قرار میگیرند: CONFIGURING، RUNNING، STOPPED یا SUSPENDED.
- requeuehold [<option>] <job_list>
- یک کار دستهای Slurm در حال اجرا، تعلیقشده یا خاتمهیافته را دوباره به وضعیت معلق (pending) میبرد، با این تفاوت که کار در وضعیت نگهداشتهشده (held با اولویت صفر) قرار میگیرد. آرگومان job_list فهرستی از شناسه کارهای جداشده با ویرگول است. یک کار نگهداشتهشده را میتوان با استفاده از scontrol جهت بازنشانی اولویت آن آزاد کرد (مانند: "scontrol release <job_id>"). این دستور گزینههای زیر را میپذیرد:
- Incomplete
- فقط روی کارهایی (یا وظایفی از یک آرایه کاری) عمل میکند که کامل نشدهاند. بهطور خاص تنها کارهایی در وضعیتهای زیر مجدداً به صف بازگردانده میشوند: CONFIGURING، RUNNING، STOPPED یا SUSPENDED.
- State=SpecialExit
- کلیدواژه "SpecialExit" مشخص میکند که کار باید در یک وضعیت ویژه به نام JOB_SPECIAL_EXIT قرار گیرد. دستور "scontrol show job" مقدار JobState را بهصورت SPECIAL_EXIT نشان خواهد داد، در حالی که دستور "squeue" آن را بهصورت SE نمایش میدهد.
- resume <job_list>
- یک کار
تعلیقشده
پیشین را از
سر میگیرد.
آرگومان job_list
فهرستی از
شناسه
کارهای
جداشده با
ویرگول است.
همچنین
ببینید suspend.
نکته: یک کار معلقشده پردازندههای (CPU) خود را برای تخصیص به دیگر کارها آزاد میکند. ازسرگیری کاری که پیشتر تعلیق شده است ممکن است منجر به تخصیص همان CPUها به چندین کار شود، که میتواند در برخی پیکربندیها موجب فعالسازی gang scheduling یا در دیگر پیکربندیها سبب افت شدید عملکرد گردد. استفاده از دستور scancel برای ارسال سیگنالهای SIGSTOP و SIGCONT یک کار را بدون آزاد کردن CPUهای آن متوقف میکند و در بسیاری از موارد سازوکار بهتری است. در صورت انجام عملیات نگهداری و تعمیر سیستم، ممکن است بخواهید از suspend/resume به این ترتیب استفاده کنید: پیش از تعلیق، تمام گرهها را روی draining تنظیم کنید یا تمام پارتیشنها را روی down بگذارید تا هیچ کار جدیدی نتواند زمانبندی شود. سپس کارها را معلق کنید. پس از پایان نگهداری، کارها را از سر بگیرید و سپس گرهها را resume کنید و/یا همه پارتیشنها را دوباره به وضعیت up برگردانید. با احتیاط استفاده شود. تنها یک کاربر ممتاز یا هماهنگکننده حساب میتواند کارها را از سر بگیرد.
- schedloglevel <LEVEL>
- گزارشگیری (logging) زمانبند را فعال یا غیرفعال میکند. LEVEL میتواند "0"، "1"، "disable" یا "enable" باشد. "0" اثری مشابه با "disable" دارد. "1" اثری مشابه با "enable" دارد. این مقدار موقتی است و در صورت وجود پارامتر SlurmSchedLogLevel، هنگامی که دیمن slurmctld فایل پیکربندی slurm.conf را بخواند (مثلاً زمانی که دیمن راهاندازی مجدد شود یا دستور scontrol reconfigure اجرا گردد) بازنویسی خواهد شد.
- setdebug <LEVEL> [nodes=<NODES>]
- سطح اشکالزدایی (debug level) دیمن slurmctld را برای تمام کانالهای فعال گزارشگیری که در اصل غیرفعال (quiet) پیکربندی نشدهاند، تغییر میدهد. LEVEL میتواند یک مقدار صحیح بین صفر تا نه باشد (مشابه مقادیر SlurmctldDebug در فایل slurm.conf) یا نام تفصیلیترین نوع پیامی که باید ثبت شود: "quiet"، "fatal"، "error"، "info"، "verbose"، "debug"، "debug2"، "debug3"، "debug4" یا "debug5". این مقدار موقتی است و هر بار که دیمن فایل پیکربندی slurm.conf را بخواند بازنویسی خواهد شد (مانند زمانی که دیمن دوباره راهاندازی شود یا scontrol reconfigure اجرا گردد).
- nodes=<NodeName>
- در صورت تعیین، درخواست تغییر سطح اشکالزدایی بهجای slurmctld به فرآیندهای slurmd روی گرهها فرستاده میشود. میتوان از یک عبارت بازه گره برای NodeName استفاده کرد.
- setdebugflags {+|-}<FLAG> [{+|-}<FLAG>] [nodes=<NODES>]
- پرچمهای
DebugFlags دیمن slurmctld را
اضافه یا
حذف میکند.
برای
مشاهده
فهرستی از
DebugFlagsهای
پشتیبانیشده،
«man slurm.conf» را
ببینید.
نکته: تغییر مقدار برخی از پرچمهای DebugFlags بدون راهاندازی مجدد دیمن slurmctld بیاثر خواهد بود؛ راهاندازی مجدد دیمن DebugFlags را بر اساس محتوای فایل پیکربندی slurm.conf یا متغیر محیطی SLURM_DEBUG_FLAGS تعیین میکند. متغیر محیطی بر تنظیمات موجود در slurm.conf اولویت دارد.
- nodes=<NodeName>
- این آرگومان اختیاری است و در صورت استفاده، درخواست تغییر سطح اشکالزدایی بهجای slurmctld به slurmd ارسال میشود. میتوان از یک عبارت بازه گره برای NodeName استفاده کرد.
- show <ENTITY>[=<ID>] یا <ENTITY> [<ID>]
- نمایش وضعیت موجودیت (entity) مشخصشده با شناسه تعیینشده..IP
- aliases
- تمام مقادیر NodeName مرتبط با یک NodeHostname دادهشده را برمیگرداند (برای دریافت فهرست گرههای مجازی مرتبط با یک گره واقعی در پیکربندیهایی که چندین دیمن slurmd روی یک گره محاسباتی منفرد اجرا میشوند مفید است).
- assoc_mgr
- محتوای فعلی حافظهٔ پنهان داخلی slurmctld را برای کاربران، انتسابها (associations) و/یا qos نمایش میدهد. خروجی میتواند بر اساس انواع مختلف رکورد پالایش شود:
- users=<user1>[...,<userN>]
- رکوردهای
کاربر
نمایشدادهشده
را به
نام(های)
کاربری
مشخصشده
محدود
میکند.
نکته: اگر PrivateData=users در slurm.conf تنظیم شده باشد، کاربران بدون امتیاز تنها به رکوردهای خود محدود خواهند شد. کاربران دارای امتیاز قادر به دیدن همهٔ رکوردها خواهند بود.
- accounts=<acct1>[...,<acctN>]
- رکوردهای
انتساب
نمایشدادهشده
را به
نام(های)
حساب
مشخصشده
محدود
میکند.
نکته: اگر PrivateData=usage در slurm.conf تنظیم شده باشد، کاربران بدون امتیاز به حسابهایی که در آنها عضو یا هماهنگکننده هستند محدود خواهند شد. کاربران دارای امتیاز قادر به دیدن همهٔ رکوردها خواهند بود.
- qos=<qos1>[...,<qosN>]
- رکوردهای QOS نمایشدادهشده را به نام(های) QOS مشخصشده محدود میکند.
- flags={users|assoc|qos}
- نوع رکورد مورد نظر را برای نمایش مشخص میکند. اگر هیچ پرچمی مشخص نشود، همهٔ انواع رکورد نمایش داده میشوند.
- bbstat
- خروجی ابزار وضعیت پلاگین burst buffer فعلی را نمایش میدهد (slurm_bb_get_status برای lua یا dwstat برای datawarp). گزینههای پس از bbstat مستقیماً توسط دیمن slurmctld به ابزار وضعیت ارسال میشوند و پاسخ به کاربر بازگردانده میشود. معادل dwstat.
- burstbuffer
- وضعیت فعلی افزونهٔ BurstBuffer را نمایش میدهد.
- config
- نام پارامترها از فایلهای پیکربندی را با حروف کوچک و بزرگ ترکیبی نمایش میدهد (مانند SlurmdPort=7003) در حالی که نام پارامترهای مشتقشده فقط با حروف بزرگ هستند (مانند SLURM_VERSION).
- daemons
- گزارش میدهد که کدام دیمنها باید روی این گره در حال اجرا باشند.
- dwstat
- خروجی ابزار وضعیت پلاگین burst buffer فعلی را نمایش میدهد (slurm_bb_get_status برای lua یا dwstat برای datawarp). گزینههای پس از dwstat مستقیماً توسط دیمن slurmctld به ابزار وضعیت ارسال میشوند و پاسخ به کاربر بازگردانده میشود. معادل bbstat.
- federation
- نام فدراسیونی که کنترلکننده بخشی از آن است و خوشههای همتا (sibling) که بخشی از فدراسیون هستند فهرست خواهند شد.
- hostlist
- فهرستی از نامهای میزبان را دریافت کرده و عبارت hostlist را برای آنها چاپ میکند (عکس عملکرد hostnames). hostlist همچنین میتواند مسیر مطلق یک فایل (که با نویسهٔ '/' شروع میشود) حاوی فهرستی از نامهای میزبان، یا یک '-' تکی را برای خواندن مستقیم از ورودی استاندارد (stdin) دریافت کند. چندین نام گره را میتوان با عبارات سادهٔ بازه گره مشخص کرد (مانند "lx[10-20]"). بهطور پیشفرض، hostlist فهرست گرهها را مرتب نکرده و موارد تکراری را حذف نمیکند (مانند tux2,tux1,tux2 = tux[2,1-2]). اگر فهرستی مرتبشده میخواهید از hostlistsorted استفاده کنید (مانند tux2,tux1,tux2 = tux[1-2,2]).
- hostlistsorted
- فهرستی از نامهای میزبان را دریافت کرده و یک عبارت hostlist مرتبشده (اما نه یکتا) را برای آنها چاپ میکند. hostlist را ببینید.
- hostnames
- یک عبارت اختیاری hostlist را به عنوان ورودی دریافت کرده و فهرستی از نامهای میزبان مجزا را در خروجی استاندارد مینویسد (یک مورد در هر خط). اگر هیچ عبارت hostlist ارائه نشود، محتویات متغیر محیطی SLURM_JOB_NODELIST استفاده میشود. برای مثال "tux[1-3]" به "tux1"، "tux2" و "tux3" نگاشت میشود (یک نام میزبان در هر خط).
- job
- بهطور پیشفرض آمار مربوط به همهٔ کارها را نمایش میدهد. اگر شناسه کار اختیاری jobid (عددی یا SLUID) مشخص شود، جزئیات فقط برای همان کار نمایش داده خواهد شد. اگر کار سوکت به ازای گره (socket-per-node)، هسته به ازای سوکت (cores-per-socket) یا رشته به ازای هسته (threads-per-core) را مشخص نکرده باشد، در فیلد ReqS:C:T=*:*:* علامت '*' نمایش داده میشود.
- licenses
- بهطور پیشفرض آمار مربوط به همهٔ مجوزهای پیکربندیشده (محلی و راه دور) را نمایش میدهد. اگر نام مجوز اختیاری مشخص شود، جزئیات فقط برای همان مجوز نمایش داده خواهد شد.
- node
- بهطور پیشفرض آمار مربوط به همهٔ گرهها را نمایش میدهد. اگر نام گره (nodename) اختیاری مشخص شود، جزئیات فقط برای همان گره نمایش داده خواهد شد.
- partition
- بهطور پیشفرض آمار مربوط به همهٔ افرازها (partitions) را نمایش میدهد. اگر نام افراز اختیاری مشخص شود، جزئیات فقط برای همان افراز نمایش داده خواهد شد.
- reservation
- بهطور پیشفرض آمار مربوط به همهٔ رزروها را نمایش میدهد. اگر نام رزرو اختیاری مشخص شود، جزئیات فقط برای همان رزرو نمایش داده خواهد شد.
- slurmd
- آمار مربوط به slurmd در حال اجرا روی گره فعلی را نمایش میدهد.
- step
- بهطور پیشفرض آمار مربوط به همهٔ گامهای کار را نمایش میدهد. اگر یک jobid اختیاری (عددی یا SLUID) مشخص شود، جزئیات مربوط به گامها فقط برای همان کار نمایش داده خواهد شد. اگر یک jobid.stepid مشخص شود، جزئیات فقط برای همان گام نمایش داده خواهد شد. اگر یک container-id=<id> مشخص شود، اولین گام منطبق با container-id دادهشده نمایش داده خواهد شد.
- topoconf
- پیکربندیهای در حال اجرای چندین توپولوژی را با همان قالب topology.yaml نمایش میدهد.
- topology [topology_name] [unit=NAME] [node=NAME]
- اطلاعات
مربوط به
چیدمان
توپولوژی
انتخابشده
را نمایش
میدهد. اگر
هیچ
آرگومانی
ارائه
نشود،
توپولوژی
پیشفرض
بازگردانده
میشود.
اگر یک واحد (unit) مشخص شود، اطلاعات مربوط به آن واحد نشان داده خواهد شد. کلیدواژهٔ unit میتواند با switch، block یا ring جایگزین شود (مانند block=b2).
اگر یک نام گره مشخص شود، تمام واحدهای متصل به آن گره (و سوئیچهای والد آنها) نمایش داده خواهند شد. اگر بیش از یک نام گره مشخص شود، تنها واحدهایی که به تمام گرههای نامبرده متصل هستند نشان داده خواهند شد.
- shutdown <OPTION>
- به دیمنهای Slurm دستور میدهد تا وضعیت فعلی را ذخیره کرده و خاتمه یابند. بهطور پیشفرض، کنترلکنندهٔ Slurm (دیمن slurmctld) درخواست را به تمام دیمنهای دیگر (دیمن slurmd روی هر گره محاسباتی) ارسال میکند. یک OPTION بهصورت slurmctld یا controller منجر به این میشود که تنها دیمن slurmctld خاموش شده و دیمنهای slurmd همچنان فعال باقی بمانند.
- suspend <job_list>
- یک کار در حال اجرا را به حالت تعلیق درمیآورد. آرگومان job_list فهرستی جداشده با کاما از شناسههای کار (job IDs) است. برای از سرگیری اجرای آن از دستور resume استفاده کنید. برای اینکه این عملیات مؤثر باشد، فرایندهای کاربر باید با دریافت سیگنال SIGSTOP متوقف شوند و با دریافت SIGCONT کار خود را از سر بگیرند. همهٔ معماریها و پیکربندیها از تعلیق کار پشتیبانی نمیکنند. اگر کار معلقشده دوباره در صف قرار گیرد (requeued)، در وضعیت نگهداشتهشده (held) قرار خواهد گرفت. مدتزمانی که کار معلق است جزو محدودیت زمانی کار به حساب نمیآید. تنها یک کاربر دارای امتیاز یا یک هماهنگکنندهٔ حساب میتواند کارها را معلق کند..IP
- takeover [<INDEX>]
- به یکی از
کنترلکنندههای
پشتیبان Slurm
(یعنی slurmctld)
دستور
میدهد
کنترل
سیستم را به
دست بگیرد.
به طور
پیشفرض
نخستین
کنترلکننده
پشتیبان (INDEX=1)
درخواست
کنترل را از
کنترلکننده
اصلی
مطالبه
کرده و
منتظر
خاتمه
یافتن آن
میماند. پس
از آن، از
حالت
پشتیبان به
حالت
کنترلکننده
تغییر
وضعیت
میدهد. اگر
نتوان با
کنترلکننده
اصلی
ارتباط
برقرار
کرد،
مستقیماً
به حالت
کنترلکننده
تغییر
وضعیت
میدهد. این
دستور
میتواند
برای تسریع
سازوکار
جایگزینی
هنگام
خرابی (fail-over)
کنترلکننده
Slurm در زمانی
که گره اصلی
از کار
افتاده
است،
استفاده
شود. همچنین
میتواند
برای به
حداقل
رساندن
اختلال در
حالتی که
خاموشی
برنامهریزیشدهای
برای
رایانه
اجراکننده
کنترلکننده
اصلی Slurm وجود
دارد،
استفاده
شود.
NOTE: دیمن کنترلکننده اصلی خاموش خواهد شد تا به کنترلکننده ثانویه اجازه به دست گرفتن کنترل را بدهد. کنترلکننده اصلی به هنگام راهاندازی مجدد، کنترل را پس خواهد گرفت.
- top <job_list>
- شناسههای کارهای (job ID) مشخصشده را به بالای صف کارهای متعلق به همان شناسه کاربری، نام پارتیشن، حساب کاربری و QOS یکسان منتقل میکند. آرگومان job_list فهرستی مرتب و جداشده با کاما از شناسههای کارها است. هر کاری که با all (تمام) آن فیلدها مطابقت نداشته باشد، تحت تأثیر قرار نخواهد گرفت. تنها کارهای ارسالشده به یک پارتیشن منفرد تحت تأثیر قرار خواهند گرفت. این عملیات ترتیب کارها را با تنظیم مقادیر nice کار تغییر میدهد. اثر خالص بر روی توان عملیاتی آن کاربر ناچیز یا کمی منفی خواهد بود. این عملیات به صورت پیشفرض برای کاربران بدون امتیاز غیرفعال است، اما با گنجاندن SchedulerParameters=enable_user_top در slurm.conf فعال میشود.
- token [lifespan=<lifespan>] [username=<username>]
- یک توکن احراز هویت بازمیگرداند که در صورت فعال بودن AuthAltTypes=auth/jwt روی سیستم، میتواند برای پشتیبانی از احراز هویت JWT استفاده شود. از دو آرگومان اختیاری پشتیبانی میکند. lifespan= میتواند برای تعیین طول عمر توکن بر حسب ثانیه استفاده شود. username (تنها برای SlurmUser/root در دسترس است) میتواند برای درخواست توکن برای یک نام کاربری دیگر استفاده شود. طول عمر را میتوان روی "infinite" تنظیم کرد تا توکنی ایجاد شود که منقضی نشود. به مجموعهها پیشنهاد میشود از کمترین طول عمر مورد نیاز استفاده کرده و به جای توکنهای با عمر طولانی، توکنها را به دفعات بیشتری تولید کنند.
- uhold <job_list>
- مشابه hold است، اما حتی اگر دستور uhold توسط یک کاربر دارای دسترسی ممتاز صادر شده باشد، یک توقف کاربری (user-hold) بر روی کار اعمال میکند. این به مالک کار یا هماهنگکننده اجازه میدهد کار را بدون نیاز به مداخله مدیر سیستم آزاد (release) کند.
- update <SPECIFICATION>
- پیکربندی کار، گام (step)، گره، پارتیشن یا رزرو را مطابق با مشخصات ارائهشده بهروزرسانی میکند. SPECIFICATION در همان قالب فایل پیکربندی Slurm و خروجی دستور show که در بالا توضیح داده شد میباشد. ممکن است ترجیح داده شود ابتدا دستور show (توضیح داده شده در بالا) را روی موجودیت مورد نظر برای بهروزرسانی اجرا کرده، سپس با استفاده از ابزارهای cut-and-paste مقادیر پیکربندی بهروز شده را به update وارد کنید. توجه داشته باشید که اگرچه بیشتر مقادیر پیکربندی را میتوان با استفاده از این دستور تغییر داد، اما همه آنها با این سازوکار قابل تغییر نیستند. به ویژه، پیکربندی سختافزاری یک گره یا افزودن و حذف فیزیکی گرهها از کلاستر تنها با ویرایش فایل پیکربندی Slurm و اجرای دستور reconfigure (توضیح داده شده در بالا) امکانپذیر است.
- update <SuspendExc*>[=|+=|-=]<LIST>
- موارد SuspendExcNodes، SuspendExcParts یا SuspendExcStates را بهروزرسانی میکند. <LIST> به ترتیب یک NodeList، فهرستی از پارتیشنها یا فهرستی از وضعیتهای گره است. از +=/-= برای افزودن/حذف گرهها، پارتیشنها یا وضعیتها به/از فهرست پیکربندیشده فعلی استفاده کنید. از = برای جایگزینی فهرست فعلی استفاده کنید. هنگامی که گزینه ":" استفاده میشود، SuspendExcNodes از "+="/"-=" پشتیبانی نمیکند؛ با این حال، انتساب مستقیم "=" همواره پشتیبانی میشود. برای مشاهده وضعیت فعلی این تنظیمات، استفاده از "scontrol show config | grep SuspendExc" را مد نظر قرار دهید.
- version
- شماره نسخه scontrol در حال اجرا را نمایش میدهد.
- wait_job <job_id>
- منتظر
میماند تا
یک کار و
تمام
گرههای آن
برای
استفاده
آماده شوند
یا کار وارد
یک وضعیت
خاتمه شود.
این گزینه
به ویژه در Prolog
نرمافزار
Slurm یا در خود
اسکریپت batch
در صورتی که
گرهها
خاموش شده و
بر حسب نیاز
به طور
خودکار
مجدداً
راهاندازی
شوند،
بسیار
کاربردی
است.
NOTE: از scontrol wait_job در PrologSlurmctld یا Prolog همراه با PrologFlags=Alloc استفاده نکنید، زیرا این کار منجر به بنبست (deadlock) خواهد شد.
-
NOTE: هنگام استفاده از wait_job برای یک کار آرایهای (array job)، برای ارجاع به کار به جای متغیر SLURM_ARRAY_JOB_ID از متغیر محیطی SLURM_JOB_ID استفاده کنید.
- write batch_script <job_id> [<optional_filename>]
- اسکریپت batch مربوط به یک job_id مشخص را درون یک فایل یا در خروجی استاندارد (stdout) مینویسد. اگر آرگومان اختیاری نام فایل مشخص نشده باشد، نام فایل به صورت پیشفرض slurm-<job_id>.sh خواهد بود. اگر به جای نام فایل - داده شود، اسکریپت در خروجی استاندارد نوشته خواهد شد. اسکریپت batch تنها توسط یک کاربر دارای دسترسی ممتاز یا توسط مالک کار قابل دریافت است.
- write config <optional_filename>
- پیکربندی فعلی را در فایلی با ساختار نامگذاری "slurm.conf.<datetime>" در همان دایرکتوری فایل اصلی slurm.conf مینویسد. اگر نام فایلی مشخص شده باشد، آن مسیر فایل با پسوند .<datetime> ایجاد میشود.
دستورهای تعاملی (INTERACTIVE COMMANDS)
NOTE: تمام دستورهای فهرستشده در زیر میتوانند در حالت تعاملی استفاده شوند، اما NOT (نه) در خط فرمان اولیه.
- all
- تمام پارتیشنها، کارهای آنها و گامهای کارها را نمایش میدهد. این امر موجب میشود اطلاعات مربوط به پارتیشنهایی که به صورت پنهان پیکربندی شدهاند و پارتیشنهایی که برای گروه کاربر در دسترس نیستند نیز نمایش داده شود.
- cluster <CLUSTER_NAME>
- کلاستری که دستورها به آن ارسال میشوند. تنها یک نام کلاستر میتواند مشخص شود.
- details
- باعث میشود دستور show در صورت وجود، جزئیات بیشتری را ارائه دهد. اطلاعات کار شامل CPUها و حافظه NUMA تخصیصیافته روی هر گره خواهد بود. توجه داشته باشید در رایانههایی که hyperthreading در آنها فعال است و Slurm برای تخصیص هستهها پیکربندی شده است، هر CPU فهرستشده نشاندهنده یک هسته فیزیکی است. به هر hyperthread روی آن هسته میتواند یک task جداگانه اختصاص یابد، بنابراین تعداد CPU کار و تعداد taskهای آن ممکن است متفاوت باشد. برای اطلاعات بیشتر، توضیحات گزینههای --cpu-bind و --mem-bind را در صفحات راهنمای srun ببینید. گزینه details در حال حاضر تنها برای دستور show job پشتیبانی میشود.
- exit
- نشست تعاملی scontrol را خاتمه میدهد.
- hide
- اطلاعات پارتیشن، کار یا گامهای کار را برای پارتیشنهایی که به صورت پنهان پیکربندی شدهاند یا پارتیشنهایی که برای گروه کاربر در دسترس نیستند، نمایش نمیدهد. این رفتار پیشفرض است.
- oneliner
- اطلاعات را به صورت یک سطر به ازای هر رکورد چاپ میکند.
- quiet
- هیچ پیام هشدار یا اطلاعاتی را چاپ نمیکند، تنها پیامهای خطای مهلک را چاپ میکند.
- quit
- اجرای scontrol را خاتمه میدهد.
- verbose
- گزارشگیری دقیق رویدادها را چاپ میکند. این شامل برچسبهای زمانی روی ساختارهای داده، تعداد رکوردها و غیره است.
- !!
- آخرین دستور اجرا شده را تکرار میکند. یک کاربر غیرممتاز میتواند شغلهای متعلق به خود و همچنین شغلها و گامهای (steps) موجود در حسابهایی که در آنها دسترسی Coordinator دارد را مشروط به محدودیتهای خاصی تغییر دهد. بیشتر این فیلدها تنها در شغلهای در انتظار (pending) قابل بروزرسانی هستند. برخی ممکن است روی شغلهای در حال اجرا یا تعلیقشده (suspended) بروزرسانی شوند. یک کاربر ممتاز میتواند هر شغلی را بدون محدودیتهای خطمشی تغییر دهد. به عنوان مثال، اگر یک مدیر سیستم مقدار QOS را روی یک شغل در انتظار تغییر دهد، محدودیتهای خاصی مانند TimeLimit به طور خودکار تغییر نخواهند کرد، زیرا تغییرات انجامشده توسط کاربران ممتاز مجاز به نقض این محدودیتها هستند.
- JobName=<name>
- نام شغلهایی که باید تغییر کنند را مشخص میکند یا نام شغل را روی مقدار تعیینشده تنظیم مینماید. هنگامی که برای شناسایی شغلهای مورد نظر برای تغییر استفاده میشود، تمام شغلهای متعلق به همه کاربران تغییر خواهند کرد، مگر اینکه از گزینه UserID برای مشخص کردن یک کاربر خاص استفاده شود. تعیین یکی از پارامترهای JobId یا JobName الزامی است.
- Account=<account>
- نام حسابی که برای مصرف منابع این شغل باید تغییر داده شود. این مقدار را میتوان با مقدار داده خالی پاک کرد: "Account=".
- AdminComment=<spec>
- یک رشته توصیفی دلخواه. تنها توسط مدیر سیستم Slurm قابل تنظیم است.
- ArrayTaskThrottle=<count>
- حداکثر تعداد وظایف (tasks) در یک آرایه شغلی (job array) که میتوانند به طور همزمان اجرا شوند را مشخص میکند. برای حذف هرگونه محدودیت، مقدار count را روی صفر تنظیم کنید. تعداد محدودیت وظیفه برای یک آرایه شغلی به عنوان بخشی از فیلد ArrayTaskId آن گزارش میشود که پیش از آن یک علامت درصد قرار میگیرد. برای مثال "ArrayTaskId=1-10%2" نشان میدهد که حداکثر تعداد وظایف در حال اجرا به ۲ محدود شده است.
- BurstBuffer=<spec>
- مشخصات burst buffer که باید برای مصرف منابع این شغل تغییر کند. این مقدار را میتوان با مقدار داده خالی پاک کرد: "BurstBuffer=". قالب آن وابسته به پلاگین burst buffer است. تنها یک کاربر ممتاز میتواند این پارامتر را تغییر دهد.
- Clusters=<spec>
- خوشههایی را مشخص میکند که شغل فدرال میتواند روی آنها اجرا شود.
- ClusterFeatures=<spec>
- ویژگیهایی را مشخص میکند که یک خوشه فدرال باید داشته باشد تا یک شغل همتا (sibling job) به آن ارسال شود. اگر یک خوشه حداقل یکی از ویژگیهای مشخصشده را داشته باشد، Slurm تلاش خواهد کرد شغل همتا را به آن ارسال کند.
- Comment=<spec>
- رشته توصیفی دلخواه.
- Contiguous={yes|no}
- الزام شغل برای تخصیص گرههای (nodes) پیوسته (متوالی) را تعیین میکند. مقادیر ممکن "YES" و "NO" هستند. تنها یک کاربر ممتاز میتواند این پارامتر را به "YES" تغییر دهد.
- CoreSpec=<count>
- تعداد هستههایی که باید به ازای هر گره برای استفاده سیستم رزرو شوند. هزینه این هستهها به حساب شغل منظور میشود، اما شغل قادر به استفاده از آنها نخواهد بود. اگر محدودیتی اعمال نشده باشد، به صورت "*" گزارش خواهد شد. تنها یک کاربر ممتاز میتواند این پارامتر را تغییر دهد.
- CPUsPerTask=<count>
- مقدار CPUsPerTask شغل را تغییر میدهد.
- Deadline=<time_spec>
- در صورتی که
امکان
پایان شغل
پیش از این
ضربالاجل
(deadline) وجود
نداشته
باشد، شغل
را حذف
میکند (start > (deadline -
time[-min])). توجه
داشته
باشید که
اگر هیچیک
از
پارامترهای
DefaultTime یا MaxTime
روی
پارتیشنی
که شغل در
آن قرار
دارد
پیکربندی
نشده
باشند، در
صورت
استفاده از
ضربالاجل،
شغل باید
شکلی از
محدودیت
زمانی (TimeMin/TimeLimit)
را تعیین
کند.
ضربالاجل
مشخصشده
باید دیرتر
از زمان
فعلی باشد.
تنها یک
کاربر
ممتاز
میتواند
این
پارامتر را
تغییر دهد.
قالبهای زمانی معتبر عبارتند از:
HH:MM[:SS] [AM|PM]
MMDD[YY] یا MM/DD[/YY] یا MM.DD[.YY]
MM/DD[/YY]-HH:MM[:SS]
YYYY-MM-DD[THH:MM[:SS]]
now[+count[seconds(default)|minutes|hours|days|weeks]]
midnight، elevenses (ساعت ۱۱ صبح)، noon، fika (ساعت ۳ بعدازظهر)، teatime (ساعت ۴ بعدازظهر)، یا tomorrowمیتوان یک یا چند رشته زمانی را مشخص کرد (مانند 'tomorrow18:00'). در صورت بروز تعارض میان آنها، آخرین مورد بدون اعلان اولویت خواهد داشت.
- DelayBoot=<time_spec>
- زمانی را برای تصمیمگیری در مورد راهاندازی مجدد گرهها به منظور برآورده کردن مشخصات ویژگی شغل تغییر میدهد، در صورتی که شغل برای مدتی کمتر از این بازه زمانی واجد شرایط اجرا بوده باشد. گزینه --delay-boot را در صفحات راهنمای salloc/sbatch ببینید.
- Dependency=<dependency_list>
- آغاز شغل را تا زمان برآورده شدن وابستگیهای تعیینشده شغل به تعویق میاندازد. پس از برآورده شدن یک وابستگی، آن وابستگی از شغل حذف میشود. برای لغو وابستگی از یک dependency_list خالی استفاده کنید (مانند "Dependency="). <dependency_list> به صورت <type:job_id[:job_id][,type:job_id[:job_id]]> است. چندین شغل میتوانند وابستگی یکسانی داشته باشند و این شغلها حتی ممکن است متعلق به کاربران متفاوتی باشند.
- after:job_id[:jobid...]
- این شغل میتواند پس از شروع اجرای شغلهای مشخصشده یا لغو شدن آنها، آغاز شود.
- afterany:job_id[:jobid...]
- این شغل میتواند پس از خاتمه شغلهای مشخصشده آغاز شود.
- afternotok:job_id[:jobid...]
- این شغل میتواند پس از خاتمه شغلهای مشخصشده در وضعیتی ناموفق (کد خروج غیر صفر، خرابی گره، اتمام مهلت زمانی، و غیره) آغاز شود. این وابستگی باید در زمانی که شغل مشخصشده هنوز فعال است، یا حداکثر تا MinJobAge ثانیه پس از پایان شغل مشخصشده اضافه شود.
- afterok:job_id[:jobid...]
- این شغل میتواند پس از اجرای موفقیتآمیز شغلهای مشخصشده (اتمام کار با کد خروج صفر) آغاز شود. این وابستگی باید در زمانی که شغل مشخصشده هنوز فعال است، یا حداکثر تا MinJobAge ثانیه پس از پایان شغل مشخصشده اضافه شود.
- singleton
- این شغل میتواند پس از پایان یافتن تمام شغلهای قبلاً راهاندازیشده که دارای نام شغل و کاربر یکسان هستند، آغاز شود. به عبارت دیگر، در هر لحظه از زمان فقط یک شغل با آن نام و متعلق به آن کاربر میتواند در حال اجرا یا تعلیق باشد.
- EligibleTime=<time_spec>
- به StartTime مراجعه کنید.
- EndTime=<time_spec>
- زمان پایان مورد انتظار شغل را تنظیم میکند. مقدار TimeLimit شغل به طور خودکار برای اعمال این تغییر بازتولید خواهد شد. هنگامی که شغل به پایان میرسد، این فیلد با زمان واقعی پایان بروزرسانی میشود. تنها یک کاربر ممتاز میتواند مقدار EndTime یک شغل را تمدید کند.
- ExcNodeList=<nodes>
- فهرست گرههای مستثنیشده شغل را تنظیم میکند. میتوان نام چندین گره را با استفاده از عبارتهای ساده محدوده گره (مانند "lx[10-20]") مشخص کرد. این مقدار را میتوان با مقدار داده خالی پاک کرد: "ExcNodeList=".
- Extra=<spec>
- یک رشته دلخواه که در صورت استفاده از فاصلهها یا برخی نویسههای خاص باید در نشانههای نقلقول تکی یا دوتایی قرار گیرد. برای جزئیات بیشتر به https://slurm.schedmd.com/extra_constraints.html مراجعه کنید.
- Features=<features>
- ویژگیهای گره مورد نیاز شغل را تعیین میکند. فهرست ویژگیها میتواند شامل چندین نام ویژگی باشد که با عملگرهای آمپرسند (AND) و/یا خط عمودی (OR) از یکدیگر جدا شدهاند. برای مثال: Features="opteron&video" یا Features="fast|faster". در مثال اول، فقط گرههایی استفاده خواهند شد که هم ویژگی "opteron" و هم ویژگی "video" را داشته باشند. هیچ سازوکاری وجود ندارد که مشخص کند در صورت عدم وجود گرهی با هر دو ویژگی، یک گره با ویژگی "opteron" و گره دیگری با ویژگی "video" تخصیص یابد. اگر قرار است تنها یکی از مجموعهای از گزینههای ممکن برای تمام گرههای تخصیصیافته استفاده شود، از عملگر OR استفاده کرده و گزینهها را درون براکت قرار دهید. برای مثال: "Features=[rack1|rack2|rack3|rack4]" میتواند برای تعیین این مورد استفاده شود که تمام گرهها باید روی یک رک واحد از خوشه تخصیص یابند، اما هر یک از این چهار رک میتواند استفاده شود. همچنین یک درخواست میتواند با افزودن ستاره و تعداد پس از نام ویژگی، تعداد گرههای مورد نیاز دارای آن ویژگی را مشخص کند. برای مثال "Features=graphics*4" نشان میدهد که حداقل چهار گره تخصیصیافته باید دارای ویژگی "graphics" باشند. پرانتز نیز برای گروهبندی ویژگیهایی که با هم AND میشوند، پشتیبانی میشود. برای مثال "Features=[(knl&a2a&flat)*4&haswell*2]" نشان میدهد که تخصیص منابع باید شامل ۴ گره با تمام ویژگیهای "knl"، "a2a" و "flat" به همراه ۲ گره با ویژگی "haswell" باشد. قیود دارای تعداد گره تنها میتوانند با عملگرهای AND ترکیب شوند. این مقدار را میتوان با مقدار داده خالی پاک کرد، به عنوان مثال "Features="..IP
- Gres=<list>
- فهرستی جداشده با کاما از منابع مصرفی عمومی درخواستی به ازای هر گره را مشخص میکند. قالب هر مدخل در این فهرست به صورت "name[:count[*cpu]]" است. مقدار name نام منبع مصرفی است. مقدار count تعداد آن منابع با مقدار پیشفرض ۱ است. منابع مشخصشده روی هر گره تخصیصیافته به کار تخصیص مییابند، مگر اینکه "*cpu" به انتهای آن افزوده شده باشد که در این صورت منابع بر مبنای هر CPU تخصیص داده خواهند شد. منابع مصرفی عمومی دردسترس در slurm.conf قابلپیکربندی هستند. اگر آرگومان گزینه "help" باشد، فهرستی از منابع مصرفی عمومی دردسترس چاپ شده و دستور خارج خواهد شد. نمونههای استفاده شامل "Gres=gpus:2*cpu,disk=40G" و "Gres=help" است.
- JobId=<job_list>
- کار(های) مورد نظر برای بهروزرسانی را مشخص میکند. مقدار job_list میتواند فهرستی جداشده با کاما از شناسه کارهای مختلف باشد. مشخص کردن JobId یا JobName الزامی است. اگر JobId برابر با ArrayJobID باشد، بهروزرسانی بر تمام کارهای منفرد آن آرایه اثر خواهد گذاشت. در آن حالت، برای بهروزرسانی یک کار منفرد خاص، باید از ساختار <ArrayJobID>_<ArrayTaskId> استفاده شود.
- Licenses=<name>
- مشخص کردن
مجوزها (یا
دیگر منابع
دردسترس
روی تمام
گرههای
خوشه)
همانگونه
که در صفحات
راهنمای
salloc/sbatch/srun شرح
داده شده
است.
یک کاربر غیرممتاز میتواند مجوزهای کارهای در انتظار را تغییر دهد. یک کاربر ممتاز میتواند مجوزهای کارهای در انتظار یا در حال اجرا را تغییر دهد.
- MailType=<types>
- انواع رویدادهای ایمیل را تنظیم میکند. مقادیر معتبر type عبارتند از NONE، BEGIN، END، FAIL، REQUEUE، ALL (معادل BEGIN، END، FAIL، REQUEUE و STAGE_OUT)، STAGE_OUT (تکمیل مرحله برونریزی بافر انفجاری و آزادسازی منابع)، TIME_LIMIT، TIME_LIMIT_90 (رسیدن به ۹۰ درصد محدودیت زمانی)، TIME_LIMIT_80 (رسیدن به ۸۰ درصد محدودیت زمانی)، TIME_LIMIT_50 (رسیدن به ۵۰ درصد محدودیت زمانی) و ARRAY_TASKS (ارسال ایمیل برای هر وظیفه در آرایه). چند مقدار مختلف را میتوان در یک فهرست جداشده با کاما مشخص کرد. مگر در حالتی که گزینه ARRAY_TASKS مشخص شده باشد، اعلانهای ایمیلی هنگام BEGIN، END و FAIL کار برای کل آرایه کار به عنوان یک واحد اعمال میشوند و برای هر وظیفه در آرایه پیامهای ایمیل جداگانه ایجاد نمیشود.
- MailUser=<name>
- کاربری را که باید اعلانهای ایمیلی تغییر وضعیت را دریافت کند تنظیم میکند. یک رشته خالی کاربر ایمیل را روی پیشفرض که همان کاربر ارسالکننده کار است قرار میدهد.
- MCSLabel=<name>
- برچسب MCS را برای کار تنظیم میکند که تنها در صورتی مؤثر خواهد بود که یک پلاگین MCS در slurmctld بارگذاری شده باشد.
- MinCPUsNode=<count>
- حداقل تعداد CPUهای کار به ازای هر گره را روی مقدار مشخصشده تنظیم میکند.
- MinMemoryCPU=<mebibytes>
- حداقل حافظه واقعی مورد نیاز کار به ازای هر CPU تخصیصیافته را روی مقدار مشخصشده تنظیم میکند. تنها یکی از مقادیر MinMemoryCPU یا MinMemoryNode را میتوان تنظیم کرد، نه هر دو را.
- MinMemoryNode=<mebibytes>
- حداقل حافظه واقعی مورد نیاز کار به ازای هر گره را روی مقدار مشخصشده تنظیم میکند. برای کارهای در حال اجرا، تنها کاهش مقدار مجاز است. اگر کار با --mem-per-cpu ارسال شده باشد، حد جدیدِ به ازای گره جایگزین حد به ازای CPU میشود (با بیشترین تخصیص به ازای گره در میان تمام گرهها مقایسه میگردد). تنها یکی از مقادیر MinMemoryCPU یا MinMemoryNode میتواند تنظیم شود، نه هر دو (برای کارهای در انتظار).
- MinTmpDiskNode=<mebibytes>
- حداقل فضای دیسک موقت مورد نیاز کار به ازای هر گره را روی مقدار مشخصشده تنظیم میکند.
- Name[=<name>]
- به JobName مراجعه کنید.
- Nice[=<adjustment>]
- کار را با یک اولویت زمانبندی تعدیلشده درون Slurm بهروزرسانی میکند. در صورت عدم تعیین مقدار تعدیل، اولویت زمانبندی ۱۰۰ واحد کاهش مییابد. مقدار nice منفی اولویت را افزایش میدهد و در غیر این صورت آن را کاهش میدهد. دامنه تعدیل +/- 2147483645 است. تنها یک کاربر ممتاز میتواند مقدار تعدیل منفی تعیین کند.
- NodeList=<nodes>
- گرههای
تخصیصیافته
به یک کار
در حال اجرا
را برای
کاستن از
اندازه آن
تغییر
میدهد.
فهرست
گرههای
مشخصشده
باید
زیرمجموعهای
از گرههای
در حال حاضر
تخصیصیافته
به کار
باشد. چندین
نام گره را
میتوان با
استفاده از
عبارتهای
ساده
محدوده گره
مشخص کرد
(مانند "lx[10-20]").
پس از کاهش
تخصیص کار،
دستورات
بعدی srun
باید
صراحتاً
تعداد
گرهها و
وظایفی را
تعیین کنند
که برای
تخصیص جدید
معتبر باشد.
نکته: گرههای تخصیصیافته به کارهایی با توزیع دلخواه (arbitrary distribution) قابل بهروزرسانی نیستند.
- NumCPUs=<min_count>[-<max_count>]
- حداقل و در صورت تمایل حداکثر تعداد CPUهای تخصیصیافته به کار را تنظیم میکند.
- NumNodes=<min_count>[-<max_count>]
- حداقل و در
صورت تمایل
حداکثر
تعداد
گرههای
تخصیصیافته
به کار را
تنظیم
میکند. اگر
کار در حال
حاضر در حال
اجرا باشد،
از این
گزینه برای
تعیین
تعداد گره
کمتر از
مقدار فعلی
تخصیصیافته
استفاده
کنید تا
منابعی که
قبلاً به
کار تخصیص
یافته بود
آزاد شوند.
پس از کاهش
تخصیص کار،
دستورات
بعدی srun
باید
صراحتاً
تعداد
گرهها و
وظایف
معتبر برای
تخصیص جدید
را مشخص
کنند.
همچنین
پارامتر NodeList
در بالا را
ببینید. این
گزینه
معادل ReqNodes
است.
نکته: تعداد گرههای کارهایی با توزیع دلخواه (arbitrary distribution) قابل بهروزرسانی نیست.
- NumTasks=<count>
- تعداد وظایف درخواستی کار را روی مقدار مشخصشده تنظیم میکند. تعداد وظایف آغازشده در یک گام مشخص درون تخصیص ممکن است با این مقدار متفاوت باشد، به عنوان مثال زمانی که در زمان ایجاد گام تعداد متفاوتی از وظایف درخواست شود. این گزینه معادل ReqProcs است.
- OverSubscribe={yes|no}
- توانایی کار را برای به اشتراک گذاشتن منابع محاسباتی (یعنی CPUهای منفرد) با دیگر کارها تنظیم میکند. مقادیر ممکن "YES" و "NO" هستند. این گزینه تنها برای کارهای در انتظار قابل تغییر است. تنها یک کاربر ممتاز میتواند این پارامتر را تغییر دهد.
- Partition=<name>
- پارتیشن کار را روی مقدار مشخصشده تنظیم میکند.
- Prefer=<features>
- ویژگیهای ترجیحی گره برای کار را تنظیم میکند. این فهرست صرفاً ترجیحی است و برعکس Features الزامی نیست. این فهرست بر آنچه در Features درخواست شده اولویت خواهد داشت. گزینه Features در بالا را ببینید.
- Priority=<number>
- اولویت کار
را روی
مقدار
مشخصشده
تنظیم
میکند.
توجه داشته
باشید که
اولویت
کاری صفر از
زمانبندی
شدن کار
برای همیشه
جلوگیری
میکند. با
تنظیم
اولویت کار
روی صفر،
کار در حالت
تعلیق قرار
میگیرد.
اولویت را
روی یک
مقدار غیر
صفر تنظیم
کنید تا
اجازه اجرا
پیدا کند و
هر مقدار nice
تنظیمشده
قبلی نیز
پاک شود.
هنگامی که یک کاربر ممتاز صراحتاً اولویت کار را تنظیم میکند، مقدار آن ثابت شده و پلاگین اولویت دیگر آن را تغییر نخواهد داد. برای بازگرداندن توانایی پلاگین priority/multifactor در مدیریت اولویت کار، کار را در حالت تعلیق قرار داده و سپس آن را آزاد کنید.
یک کاربر غیرممتاز تنها میتواند اولویت کار را کاهش دهد و پلاگین اولویت ممکن است همچنان این مقدار را مدیریت کند. در عوض، افزایش Nice را مد نظر قرار دهید.
- QOS=<name>
- کیفیت خدمات (QOS) کار را روی مقدار مشخصشده، یا فهرستی جداشده با کاما از QOSها تنظیم میکند. اگر فهرستی درخواست شود، بر اساس اولویت QOSهای دادهشده مرتب خواهد شد که نخستین مورد بیشترین اولویت را دارد. این مقدار را میتوان با مقدار داده خالی، "QOS="، پاک کرد.
- Reboot={yes|no}
- پرچمی از کار را که مشخص میکند آیا گرههای تخصیصیافته پیش از آغاز کار اجباراً راهاندازی مجدد شوند یا خیر تنظیم میکند. این مورد تنها در برخی پیکربندیهای سیستم پشتیبانی میشود و بنابراین ممکن است بدون هشدار نادیده گرفته شود. تنها یک مدیر Slurm میتواند این پارامتر را تغییر دهد.
- ReqCores=<count>
- تعداد هستههای درخواستی کار را تغییر میدهد. ReqNodeList=<nodes> تنظیم فهرست گرههای مورد نیاز کار. نام چندین گره را میتوان با استفاده از عبارتهای ساده بازه گره (مانند "lx[10-20]") مشخص کرد. این مقدار را میتوان با مقدار داده خالی، "ReqNodeList="، پاک کرد.
- ReqNodes=<min_count>[-<max_count>]
- نگاه کنید به NumNodes.
- ReqProcs=<count>
- نگاه کنید به NumTasks.
- ReqSockets=<count>
- تغییر تعداد سوکتهای درخواستی کار.
- ReqThreads=<count>
- تغییر تعداد ریسههای (threads) درخواستی کار.
- Requeue={0|1}
- تعیین میکند که آیا کار باید پس از خرابی گره دوباره در صف قرار گیرد یا خیر: 0 برای خیر، 1 برای بله.
- ReservationName=<name>
- تنظیم رزرو کار روی مقدار مشخصشده. این مقدار را میتوان با مقدار داده خالی، "ReservationName="، پاک کرد.
- ResetAccrueTime
- تنظیم مقدار زمان انباشت (accrue time) کار روی 'now'، به این معنی که هر زمان انباشتهشده قبلی برای اولویت را از دست خواهد داد. این گزینه زمانی مفید است که صف بزرگی از کارها از قبل در صف وجود دارد و میخواهید بدون منتظر ماندن برای خالی شدن صف، محدود کردن تعداد کارهایی را که میتوانند زمان انباشت کسب کنند شروع نمایید.
- SiteFactor=<account>
- مشخص کردن ضریب اولویت محلی (site priority factor) کار در بازه +/-2147483645. تنها یک کاربر ممتاز میتواند این پارامتر را تغییر دهد.
- StdErr=<filepath>
- تنظیم مسیر
فایل stderr کار
دستهای (batch job).
این مقدار
را میتوان
با مقدار
داده خالی،
"StdErr="، به
پیشفرض
کار
بازنشانی
کرد.
NOTE: بهطور پیشفرض، StdErr با StdOut ادغام خواهد شد.
- StdIn=<filepath>
- تنظیم مسیر
فایل stdin کار
دستهای.
این مقدار
را میتوان
با مقدار
داده خالی،
"StdIn="، به
پیشفرض
کار
بازنشانی
کرد.
NOTE: بهطور پیشفرض، StdIn برابر '/dev/null' خواهد بود.
- StdOut=<filepath>
- تنظیم مسیر
فایل stdout کار
دستهای.
این مقدار
را میتوان
با مقدار
داده خالی،
"StdOut="، به
پیشفرض
کار
بازنشانی
کرد.
NOTE: بهطور پیشفرض، StdOut بر اساس JobId خواهد بود.
- StartTime=<time_spec>
- تنظیم زودترین زمان آغاز کار. زمانهایی در قالب HH:MM:SS را برای اجرای کار در زمان مشخصی از روز میپذیرد (ثانیهها اختیاری هستند). (اگر آن زمان گذشته باشد، روز بعد فرض میشود.) همچنین میتوانید midnight، noon، elevenses (ساعت ۱۱ صبح)، fika (ساعت ۳ بعدازظهر) یا teatime (ساعت ۴ بعدازظهر) را مشخص کنید، و میتوانید یک زمان از روز را با پسوند AM یا PM برای اجرا در صبح یا عصر تعیین نمایید. همچنین میتوانید با مشخص کردن تاریخی در قالب MMDDYY یا MM/DD/YY یا MM.DD.YY، یا تاریخ و زمانی به صورت YYYY-MM-DD[THH:MM[:SS]]، تعیین کنید کار در چه روزی اجرا شود. همچنین میتوانید زمانهایی مانند now + count time-units را مشخص کنید که در آن time-units میتواند seconds (پیشفرض)، minutes، hours، days یا weeks باشد. کلیدواژههای today و tomorrow نیز قابل استفاده هستند.
نکاتی
پیرامون
مشخصات
تاریخ/زمان:
- گرچه فیلد 'seconds'
در مشخصه
زمان HH:MM:SS توسط
کد مجاز
دانسته شده
است، اما
توجه داشته
باشید که
زمان بررسی
دورهای (poll time)
زمانبند Slurm
آنقدر
دقیق نیست
که ارسال
کار را در
ثانیه دقیق
تضمین کند.
کار در
اولین
بررسی
دورهای پس
از زمان
مشخصشده
واجد شرایط
شروع خواهد
بود. فاصله
دقیق بررسی
دورهای به
زمانبند Slurm
بستگی دارد
(به عنوان
مثال، ۶۰
ثانیه با sched/builtin
پیشفرض).
- اگر هیچ
زمانی (HH:MM:SS)
مشخص نشود،
پیشفرض (00:00:00)
است.
- اگر تاریخی
بدون سال
مشخص شود
(مثلاً MM/DD)،
سال جاری
فرض
میشود،
مگر آنکه
ترکیب MM/DD و HH:MM:SS
قبلاً برای
آن سال سپری
شده باشد،
که در این
صورت سال
بعد
استفاده
خواهد شد.
- Switches=<count>[@<max-time-to-wait>]
- هنگامی که از یک توپولوژی درختی استفاده میشود، این گزینه حداکثر تعداد سوئیچهای مورد نظر را برای تخصیص کار تعیین میکند. اگر Slurm تخصیصی حاوی سوئیچهای بیشتری نسبت به تعداد مشخصشده پیدا کند، کار در حالت معلق (pending) باقی میماند تا زمانی که یا تخصیصی با تعداد سوئیچ مورد نظر بیابد یا مهلت زمانی به پایان برسد. بهطور پیشفرض هیچ محدودیتی برای تعداد سوئیچ و هیچ تأخیر محدودیت زمانی وجود ندارد. تعداد را روی صفر تنظیم کنید تا هر تعداد از قبل تنظیمشده پاک شود (غیرفعال کردن محدودیت). حداکثر تأخیر زمانی کار را میتوان با تنظیم SchedulerParameters=max_switch_wait=# در slurm.conf محدود کرد. همچنین wait-for-switch را ببینید.
- TasksPerNode=<count>
- تغییر TasksPerNode درخواستی کار. تنها یک کاربر ممتاز میتواند این پارامتر را تغییر دهد.
- ThreadSpec=<count>
- تعداد ریسههای رزروشده در هر گره برای استفاده سیستم. هزینه این ریسهها برای کار محاسبه میشود، اما کار قادر به استفاده از آنها نخواهد بود. در صورت عدم تعیین محدودیت، به صورت "*" گزارش میشود.
- TimeLimit=<time>
- محدودیت زمانی کار. قالب خروجی به صورت [days-]hours:minutes:seconds یا "UNLIMITED" است. مجموعه قالب ورودی (برای دستور update) عبارت است از minutes، minutes:seconds، hours:minutes:seconds، days-hours، days-hours:minutes یا days-hours:minutes:seconds. دقت زمانی یک دقیقه است و مقادیر ثانیه به دقیقه بعدی گرد میشوند. در صورت تغییر محدودیت زمانی یک کار، یا یک مقدار محدودیت زمانی جدید مشخص کنید یا قبل از زمان و علامت مساوی، یک "+" یا "-" برای افزایش یا کاهش محدودیت زمانی فعلی قرار دهید (مثلاً "TimeLimit+=30"). برای افزایش یا کاهش محدودیت زمانی فعلی، مشخصه JobId باید قبل از مشخصه TimeLimit قرار گیرد. توجه داشته باشید که افزایش یا کاهش محدودیت زمانی برای یک آرایه کار (job array) فقط قبل از آن مجاز است که آرایه کار به بیش از یک رکورد کار تقسیم شده باشد. تنها یک کاربر ممتاز میتواند TimeLimit یک کارِ در حال اجرا یا تعلیقشده را افزایش دهد.
- TimeMin=<timespec>
- تغییر مقدار TimeMin که حداقل دقایق محدودیت زمانی کار را مشخص میکند.
- UserID=<UID or name>
- همراه با گزینه JobName برای شناسایی کارهایی که باید اصلاح شوند به کار میرود. میتوان نام کاربری یا شناسه عددی (UID) را مشخص کرد.
- wait-for-switch=<seconds>
- تغییر حداکثر زمان انتظار برای یک سوئیچ به میزان <seconds> ثانیه.
- WCKey=<key>
- تنظیم کلید مشخصهسازی بار کاری (workload characterization key) کار روی مقدار مشخصشده.
- WorkDir=<directory_name>
- تنظیم دایرکتوری کاری کار روی مقدار مشخصشده. توجه داشته باشید که این مقدار فقط برای کارهای در وضعیت PENDING قابل تنظیم است، و در صورتی که کارها به مسیرهای نسبی نسبت به WorkDir ارائهشده اولیه وابسته باشند، ممکن است راهاندازی کارها با شکست مواجه شود. دستور "show" هنگامی که همراه با موجودیت "job" یا "job <jobid>" استفاده شود، اطلاعات تفصیلی را درباره یک یا چند کار نمایش میدهد. بخش زیادی از این اطلاعات را میتوان همانطور که در بالا شرح داده شد، با استفاده از دستور "update job" تغییر داد. با این وجود، فیلدهای زیر که توسط دستور show job نمایش داده میشوند فقطخواندنی (read-only) هستند و امکان تغییر آنها وجود ندارد:
- AllocNode:Sid
- گره محلی و شناسه سیستم که تخصیص منابع را انجام میدهند.
- BatchFlag
- کارهایی که با استفاده از دستور sbatch ارسال میشوند، مقدار BatchFlag آنها برابر با ۱ تنظیم میشود. در صورتی که کار به دلیل بروز خطا مجدداً در صف قرار گیرد (requeue شود)، مقدار BatchFlag فراتر از ۱ افزایش خواهد یافت. کارهایی که با دستورات دیگر ارسال شوند دارای BatchFlag با مقدار ۰ خواهند بود و افزایش نمییابد.
- ExitCode=<exit>:<sig>
- وضعیت خروج گزارششده برای کار توسط تابع wait(). عدد نخست، کد خروج است که معمولاً توسط تابع exit() تعیین میشود. عدد دوم، شماره سیگنالی است که اگر فرایند توسط یک سیگنال متوقف شده باشد، موجب خاتمه آن شده است.
- GroupId
- گروهی که کار تحت آن ارسال شده است.
- JobState
- وضعیت کنونی کار.
- NodeListIndices
- شناسههای NodeIndices نمایههای داخلی جدول گرهها (node table) مربوط به گره(های) تخصیصیافته به کار را آشکار میسازند.
- NtasksPerN:B:S:C=<tasks_per_node>:<tasks_per_baseboard>:<tasks_per_socket>:<tasks_per_core>
- تعداد وظایفی (tasks) را مشخص میکند که باید به ازای هر مولفه سختافزاری (node، baseboard، socket و core) راهاندازی شوند. مقادیر بدون محدودیت ممکن است به صورت "0" یا "*" نمایش داده شوند.
- PreemptEligibleTime
- زمانی که کار واجد شرایط پیشدستی (preemption) میشود. این مقدار توسط PreemptExemptTime، خواه از طریق گزینه سراسری در slurm.conf یا از طریق QOS کار، تعدیل میشود. اگر کار هنوز آغاز نشده باشد یا اگر PreemptMode=OFF باشد، این مقدار پنهان است.
- PreemptTime
- زمانی که به کار سیگنال داده شد که برای پیشدستی (preemption) انتخاب شده است. این مقدار تنها برای PreemptMode=CANCEL و PreemptMode=REQUEUE و برای کارهای درون یک پارتیشن یا QOS که مقدار GraceTime مشخصی دارند معنا دارد. اگر کار هنوز شروع نشده باشد یا اگر PreemptMode=OFF باشد، این مقدار پنهان است.
- PreSusTime
- مدت زمانی که کار پیش از آخرین تعلیق (suspend) اجرا شده است.
- Reason
- دلیل شروع نشدن کار توسط زمانبند (scheduler): برای نمونه، در انتظار "منابع" ("Resources"). جزئیات کدهای دلایل کار در این صفحه یافت میشود: https://slurm.schedmd.com/job_reason_codes.html
- ReqB:S:C:T=<baseboard_count>:<socket_per_baseboard_count>:<core_per_socket_count>:<thread_per_core_count>
- تعداد مولفههای سختافزاری مختلف درخواستشده توسط کار را مشخص میکند. مقادیر بدون محدودیت ممکن است به صورت "0" یا "*" نمایش داده شوند. پرچمهای ارسال کار شامل --extra-node-info، --cores-per-socket و --threads-per-core مقادیر "C" و "T" را تعیین میکنند.
- SecsPreSuspend=<seconds>
- اگر کار در وضعیت تعلیق باشد، این مقدار، مدتزمان اجرای انباشتهشده کار (به ثانیه) پیش از تعلیق شدن است.
- SegmentSize=<size>
- اندازه قطعه (segment size) درخواستی برای کار.
- Socks/Node=<count>
- تعداد سوکتهای (sockets) مورد نظر به ازای هر گره.
- SubmitTime
- برچسب
تاریخ و
زمان (به
وقت محلی/localtime)
ارسال کار.
قالب خروجی
دقیقاً
مشابه فیلد
EndTime است.
نکته: اگر کاری مجدداً در صف قرار گیرد (requeue شود)، زمان ارسال بازنشانی میشود. جهت به دست آوردن زمان ارسال اولیه، استفاده از دستور "sacct -j <job_id[.<step_id>]" با تعیین گزینه -D یا --duplicate برای نمایش تمامی مدخلهای تکراری مربوط به کار الزامی است.
- SuspendTime
- زمانی که
کار آخرین
بار معلق یا
ازسرگرفته
شد.
نکته درباره اطلاعات نمایشدادهشده برای وضعیتهای مختلف کار: هنگامی که درخواستی را برای تابع "show job" ارسال میکنید، فرایند scontrol یک فراخوانی درخواست RPC با نوع پیام REQUEST_JOB_INFO به slurmctld میزند. اگر وضعیت کار PENDING باشد، برخی اطلاعات تفصیلی نظیر: min_nodes، min_procs، cpus_per_task و غیره را بازمیگرداند. اگر وضعیت چیزی جز PENDING باشد، برنامه فرض میکند که کار در وضعیتهای بعدی مانند RUNNING، COMPLETE و غیره قرار دارد. در این موارد، برنامه صراحتاً برای این مقادیر عدد صفر را برمیگرداند. این مقادیر به محض تخصیص منابع به کار و آغاز به کار آن، بیمعنا میشوند.
- StepId=<job_id>[.<step_id>]
- گامی را که باید بهروزرسانی شود مشخص میکند. اگر job_id داده شود اما هیچ step_id مشخص نشده باشد، تمام گامهای کارِ مشخصشده تغییر خواهند کرد. این مشخصه الزامی است.
- TimeLimit=<time>
- محدودیت زمانی کار. قالب خروجی به صورت [days-]hours:minutes:seconds یا "UNLIMITED" است. مجموعه قالبهای ورودی (برای دستور update) شامل minutes، minutes:seconds، hours:minutes:seconds، days-hours، days-hours:minutes یا days-hours:minutes:seconds است. دقت زمانی یک دقیقه است و مقادیر ثانیه به بالا (دقیقه بعد) گرد میشوند. هنگام تغییر محدودیت زمانی یک گام، یا یک مقدار محدودیت زمانی جدید مشخص کنید یا با قرار دادن "+" یا "-" پیش از زمان، محدودیت زمانی فعلی را افزایش یا کاهش دهید (برای مثال "TimeLimit=+30"). برای افزایش یا کاهش محدودیت زمانی فعلی، مشخصه StepId باید پیش از مشخصه TimeLimit بیاید.
گرهها - مشخصات دستور CREATE (NODES - SPECIFICATIONS FOR CREATE COMMAND)
همان پیکربندی NodeName موجود در slurm.conf را فراهم کنید. برای جزئیات، صفحه راهنمای slurm.conf را ببینید. تنها گرههای با وضعیت State=CLOUD و State=FUTURE مجاز هستند.
گرهها - مشخصات دستور UPDATE (NODES - SPECIFICATIONS FOR UPDATE COMMAND)
- NodeName=<name>
- گره(هایی) را که باید بهروزرسانی شوند مشخص میکند. چندین نام گره را میتوان با استفاده از عبارتهای بازهایِ ساده گره مشخص کرد (مثلاً "lx[10-20]"). مجموعهگرهها (Nodesets) نیز میتوانند به تنهایی یا به همراه عبارتهای بازهایِ گره، با استفاده از کاما به عنوان جداکننده فهرست، مشخص شوند. اگر کلمه کلیدی "ALL" به تنهایی مشخص شود، بهروزرسانی برای تمام گرههای خوشه محلی اعمال خواهد شد. این مشخصه الزامی است.
- ActiveFeatures=<features>
- ویژگی(هایی) را که در حال حاضر روی گره مشخصشده فعال هستند، تعیین میکند. هرگونه مشخصه ویژگی فعال پیشین با مقدار جدید بازنویسی خواهد شد. همچنین AvailableFeatures را ببینید. به طور معمول ActiveFeatures با AvailableFeatures یکسان خواهد بود؛ با این حال ActiveFeatures ممکن است به عنوان زیرمجموعهای از AvailableFeatures پیکربندی شود. برای مثال، یک گره ممکن است با پیکربندیهای متعددی بوت شود. در این حالت، تمام پیکربندیهای ممکن را میتوان به عنوان AvailableFeatures مشخص کرد، در حالی که ActiveFeatures پیکربندی فعلی گره را مشخص میکند. هنگام بهروزرسانی ActiveFeatures با scontrol، تغییر فقط در slurmctld اعمال میشود. هنگام استفاده از یک پلاگین node_features، وضعیت/ویژگیهای گره باید بر روی خودِ گره بهروزرسانی شود تا شروع به کار مجدد گره، وضعیت/ویژگیهای بهروزشده را گزارش دهد.
- AvailableFeatures=<features>
- ویژگی(هایی)
را که روی
گره
مشخصشده
در دسترس
هستند،
تعیین
میکند. هر
مشخصه
ویژگی
دردسترس
تعریفشده
پیشین با
مقدار جدید
بازنویسی
خواهد شد.
مقادیر AvailableFeatures
اختصاصیافته
از طریق scontrol
تنها در
صورت
راهاندازی
مجدد دیمن
slurmctld با گزینه
-R و حفظ
فایلهای
وضعیت (state files) یا
دریافت
سیگنال SIGHUP
توسط slurmctld
پابرجا
خواهند
ماند. برای
هر تغییری
که قرار است
در
راهاندازیهای
مجدد عادی
slurmctld یا اجرای
scontrol reconfig پایدار
بماند، slurm.conf
را
بهروزرسانی
کنید.
NOTE: ویژگیهای در دسترسی که از طریق scontrol حذف میشوند نباید فعال باشند (یعنی ابتدا آنها را از ActiveFeatures حذف کنید).
- CertToken=<token>
- رشته توکن یکتا که توسط رابط پلاگین certmgr برای اعتبارسنجی هویت گره استفاده میشود.
- Comment=<comment>
- رشته توصیفی دلخواه. برای احاطه کردن نظری که بیش از یک کلمه دارد، از علامت نقلقول استفاده کنید.
- CpuBind=<node>
- حالت پیوند وظیفه (task binding mode) را که باید به طور پیشفرض برای این گره استفاده شود مشخص میکند. گزینههای پشتیبانیشده عبارتند از: "none"، "socket"، "ldom" (NUMA)، "core"، "thread" و "off" (حذف حالت پیوند قبلی).
- Extra=<comment>
- رشته دلخواه روی گره. برای احاطه کردن رشتهای که بیش از یک کلمه دارد از علامت نقلقول استفاده کنید. برای جزئیات بیشتر به https://slurm.schedmd.com/extra_constraints.html مراجعه کنید.
- Gres=<gres>
- منابع عمومی (generic resources) مرتبط با گره مشخصشده را تعیین میکند. هر منبع عمومی تعریفشده قبلی با مقدار جدید بازنویسی خواهد شد. مشخصات چندین منبع عمومی باید با کاما از هم جدا شوند. هر مشخصه منبع شامل یک نام و به دنبال آن یک دونقطه اختیاری به همراه یک مقدار عددی است (مقدار پیشفرض یک است) (مثلاً "Gres=bandwidth:10000"). تغییر تعداد GRES مرتبط با فایلهای خاص (مانند GPUها) مجاز نیست، مگر برای صفر کردن تعداد آنها روی یک گره. برای تغییر تعداد GRES به مقداری دیگر، فایلهای slurm.conf و gres.conf خود را اصلاح کرده و دیمنها را مجدداً راهاندازی کنید. اگر GRESها با سوکتهای خاصی مرتبط باشند، آن اطلاعات گزارش خواهد شد. برای مثال اگر هر ۴ واحد GPU روی یک گره همگی با سوکت صفر مرتبط باشند، آنگاه "Gres=gpu:4(S:0)". اگر با سوکتهای ۰ و ۱ مرتبط باشند، آنگاه "Gres=gpu:4(S:0-1)". منابع عمومی اختصاصیافته از طریق scontrol تنها در صورت راهاندازی مجدد دیمن slurmctld با گزینه -R و حفظ فایلهای وضعیت یا دریافت SIGHUP توسط slurmctld پابرجا خواهند ماند. برای هر تغییری که قرار است در راهاندازیهای مجدد عادی slurmctld یا اجرای scontrol reconfig پایدار بماند، slurm.conf را بهروزرسانی کنید.
- InstanceId=<instance_id>
- شناسه نمونه ابری (Cloud instance ID). چندین شناسه را میتوان با استفاده از نحوی مشابه عبارت بازهایِ گره (استفادهشده در NodeName) مشخص کرد. اگر چندین شناسه مشخص شود، تعداد کل باید با تعداد گرههای در حال بهروزرسانی مطابقت داشته باشد.
- InstanceType=<instance_type>
- نوع نمونه ابری (Cloud instance type). چندین نوع را میتوان با استفاده از نحوی مشابه عبارت بازهایِ گره (استفادهشده در NodeName) مشخص کرد. اگر چندین نوع مشخص شود، تعداد کل باید با تعداد گرههای در حال بهروزرسانی مطابقت داشته باشد.
- NodeAddr=<node address>
- نامی که گره برای برقراری مسیر ارتباطی باید با آن مورد ارجاع قرار گیرد. این نام به عنوان یک آرگومان برای تابع getaddrinfo() جهت شناسایی استفاده خواهد شد. اگر از یک عبارت بازهایِ گره برای تعیین چندین گره استفاده شود، آنها باید دقیقاً با مدخلهای موجود در NodeName مطابقت داشته باشند (مثلاً "NodeName=lx[0-7] NodeAddr=elx[0-7]"). NodeAddr همچنین میتواند شامل آدرسهای IP باشد.
- NodeHostname=<node hostname>
- معمولاً این همان رشتهای است که "/bin/hostname -s" برمیگرداند. همچنین میتواند نام دامنه کاملاً واجد شرایط (FQDN) بازگرداندهشده توسط "/bin/hostname -f" باشد (مثلاً "foo1.bar.com")، یا هر نام دامنه معتبر دیگری که بسته به تنظیمات تحلیلگر (resolver)، از طریق پایگاهداده میزبان (/etc/hosts) یا DNS با میزبان مرتبط است. توجه داشته باشید که اگر از فرم کوتاه نام میزبان استفاده نشود، ممکن است مانع استفاده از عبارتهای hostlist شود (بخش عددی درون براکت باید در انتهای رشته باشد). برای مشخص کردن مجموعهای از گرهها میتوان از یک عبارت بازهایِ گره استفاده کرد. در صورت استفاده از عبارت، تعداد گرههای مشخصشده توسط NodeHostname باید دقیقاً با تعداد گرههای مشخصشده توسط NodeName یکسان باشد.
- Reason=<reason>
- دلیل قرار داشتن گره در یکی از وضعیتهای "DOWN"، "DRAINED"، "DRAINING"، "FAILING" یا "FAIL" را مشخص میکند. برای احاطه کردن دلیلی که بیش از یک کلمه دارد از علامت نقلقول استفاده کنید.
- ResumeAfter=<seconds>
- هنگامی که
وضعیت گره
به "DOWN" یا "DRAIN"
بهروزرسانی
میشود،
ازسرگیری
وضعیت گره
را پس از
این تعداد
ثانیه
زمانبندی
میکند. پس
از
ازسرگیری
وضعیت،
وضعیت گره
از DRAIN، DRAINING، DOWN
یا REBOOT به IDLE و
NoResp تغییر
خواهد یافت.
سپس slurmctld تلاش
خواهد کرد
با slurmd تماس
بگیرد تا از
گره
درخواست
کند خود را
ثبت کند.
NOTE: مقدار -1 زمانبندی ازسرگیری وضعیت گره را لغو خواهد کرد.
- State=<state>
- یکی از وضعیتها/اقدامات زیر را به گره(های) مشخصشده توسط دستور بهروزرسانی اختصاص میدهد.
- CANCEL_REBOOT
- راهاندازی مجدد در انتظارِ گره را لغو میکند (مشابه scontrol cancel_reboot <node>).
- DOWN
- تمام کارهای در حال اجرا و تعلیقشده را متوقف کرده و گره را برای کارهای جدید در دسترسناپذیر میسازد.
- DRAIN
- نشان میدهد که هیچ کار جدیدی نباید روی این گره آغاز شود. به کارهای موجود اجازه داده میشود تا پایان اجرا شوند، و پس از اتمام تمام کارها گره در وضعیت DRAINED رها میشود..IP
- FAIL
- مشابه با DRAIN است، با این تفاوت که برخی برنامهها تلاش میکنند پیش از تکمیل کار، این گرهها را واگذار کنند.
- FUTURE
- نشان میدهد که گره هنوز بهطور کامل پیکربندی نشده است، اما انتظار میرود در مقطعی در آینده در دسترس قرار گیرد.
- IDLE
- وضعیتهای DOWN، DRAIN و FAIL را پاک میکند. وضعیت را روی IDLE و NoResp تنظیم خواهد کرد. سپس slurmctld تلاش میکند با slurmd ارتباط برقرار کند تا از گره بخواهد خود را ثبت کند. پس از ثبت، پرچم NoResp از وضعیت گره برداشته شده و عملیات عادی از سر گرفته میشود.
- NoResp
- این پرچم «Not Responding» (عدم پاسخگویی) را برای یک گره، بدون تغییر وضعیت بنیادین آن، تنظیم میکند.
- RESUME
- یک وضعیت واقعی برای گره نیست، بلکه وضعیت گره را از DRAIN، DRAINING، DOWN یا REBOOT به IDLE و NoResp تغییر میدهد. سپس slurmctld تلاش میکند با slurmd ارتباط برقرار کند تا از گره بخواهد خود را ثبت کند. پس از ثبت، پرچم NoResp از وضعیت گره برداشته شده و عملیات عادی از سر گرفته خواهد شد. همچنین وضعیت POWERING_DOWN یک گره را پاک کرده و آن را برای تخصیص واجد شرایط میسازد.
- UNDRAIN
- حالت تخلیه (drain) گره را پاک میکند (مشابه RESUME)، اما وضعیت پایه گره (مانند DOWN) را تغییر نمیدهد. UNDRAIN پیش از اینکه کارهای جدید بتوانند روی گره زمانبندی شوند، نیازمند یک ثبت معتبر گره است. قرار دادن یک گره در وضعیت DOWN باعث خاتمه یافتن تمام کارهای در حال اجرا و معلقشده روی آن گره خواهد شد.
-
اگرچه تمام وضعیتهای فوق معتبر هستند، اما با توجه به وضعیت پیشین گره، برخی از آنها بهعنوان وضعیت جدید معتبر نیستند.
نکته: دستور scontrol نباید برای تغییر وضعیت گره در سامانههای Cray استفاده شود. در عوض از ابزارهای Cray مانند xtprocadmin استفاده کنید.
- Topology=<topology_name>:<topology_unit>[,<topology_name>:<topology_unit>,...]
- که در آن <topology_unit> نام بلوک، سوئیچ برگ (leaf switch) یا حلقه (ring) است. نام حلقه باید با موقعیت عددی آن در حلقه دنبال شود (با دونقطه جدا میشود، مانند Topology=topo-ring:ring1:2). موقعیت حلقه هنگام ایجاد یک حلقه جدید باید 0 باشد. نام یک سوئیچ میتواند با یک یا چند نام سوئیچ میانی دنبال شود که در صورت نیاز ایجاد خواهند شد (با دونقطه جدا میشود، مانند Topology=topo-tree:sw_root:s1:s2). این پیکربندی، تنظیمات وابستگی توپولوژی گره از topology.conf و topology.yaml را بازنویسی میکند.
- Weight=<weight>
- وزنی را که باید به گرههای مشخصشده نسبت داده شود، تعیین میکند. این امکان تغییرات پویا در وزن مرتبط با گرهها را فراهم میسازد که برای تصمیمگیریهای بعدی در تخصیص گره استفاده خواهد شد. وزنی که از طریق scontrol تخصیص داده میشود، تنها در صورت راهاندازی مجدد دیمن slurmctld با گزینه -R و حفظ فایلهای وضعیت، یا دریافت سیگنال SIGHUP توسط slurmctld باقی میماند. برای هرگونه تغییری که قصد دارید در راهاندازیهای مجدد عادی slurmctld یا اجرای scontrol reconfig پایدار بماند، slurm.conf را بهروزرسانی کنید.
گرهها - مشخصات برای دستور SHOW (NODES - SPECIFICATIONS FOR SHOW COMMAND)
- AllocMem
- کل حافظه، به مبیبایت (MiB)، که در حال حاضر توسط کارها روی گره تخصیص یافته است.
- CPULoad
- بار پردازنده (CPU load) یک گره همانطور که توسط سیستمعامل گزارش شده است.
- CPUSpecList
- فهرست شناسههای انتزاعی CPU در Slurm روی این گره که برای استفاده اختصاصی دیمنهای گره محاسباتی Slurm (شامل slurmd و slurmstepd) رزرو شدهاند.
- FreeMem
- کل حافظه، به مبیبایت (MiB)، که در حال حاضر روی گره آزاد است، همانطور که توسط سیستمعامل گزارش شده است.
- LastBusyTime
- آخرین زمانی که گره مشغول بوده است (یعنی آخرین باری که گره کارهایی روی خود داشته است). این زمان در PowerSave برای تعیین زمان تعلیق گرهها استفاده میشود (بهعنوان مثال now - LastBusy > SuspendTime).
- MemSpecLimit
- حد ترکیبی حافظه، به مبیبایت، روی این گره برای دیمنهای گره محاسباتی Slurm (شامل slurmd و slurmstepd).
- RealMemory
- کل حافظه واقعی، به مبیبایت (MiB)، روی گره.
- State
- وضعیت(های)
اختصاصیافته
به گره را
با
پرچمهای
وضعیتی که
با «+» جدا
شدهاند،
مشخص
میکند.
وضعیتها:
- ALLOCATED
- نشان میدهد که تمام CPUهای گره به کار(های) در حال اجرا روی آن گره تخصیص یافته است.
- DOWN
- گره هیچ کار در حال اجرایی ندارد و برای کارهای جدید در دسترس نیست.
- ERROR
- گره در وضعیت خطا قرار دارد. برای اطلاعات بیشتر درباره علت بروز این وضعیت، لاگها را بررسی کنید.
- FUTURE
- گره در حال حاضر بهطور کامل پیکربندی نشده است، اما انتظار میرود در مقطعی نامشخص در آینده برای استفاده در دسترس قرار گیرد.
- IDLE
- نشان میدهد که گره برای کار در دسترس است اما در حال حاضر هیچ کاری به آن اختصاص داده نشده است.
- MIXED
- نشان میدهد که گره در چندین وضعیت قرار دارد. برای مثال، اگر تنها بخشی از گره ALLOCATED باشد و بقیه گره IDLE باشد، وضعیت MIXED خواهد بود.
- UNKNOWN
- گره هنوز نزد کنترلر ثبت نشده است و وضعیت آن مشخص نیست.
-
پرچمها:
- CLOUD
- نشان میدهد که گره بهعنوان یک گره ابری پیکربندی شده است تا در صورت نیاز راهاندازی شود، اما در حال حاضر در حال اجرا نیست.
- COMPLETING
- نشان میدهد که تنها کار موجود روی گره یا تمام کارهای روی آن در حال تکمیل شدن هستند.
- DRAIN
- گره هیچ کار جدیدی را نمیپذیرد و کارهای در حال اجرای فعلی به پایان خواهند رسید.
- DYNAMIC
- نرمافزار Slurm به شما امکان میدهد چندین نوع گره را در وضعیت FUTURE تعریف کنید. هنگام اجرای slurmd روی یک گره، میتوانید پرچم -F را تعیین کنید تا گره با یک تعریف موجود در فایل slurm.conf شما مطابقت پیدا کرده و از آن استفاده کند. وضعیت DYNAMIC نشان میدهد که گره بهعنوان یک گره Dynamic Future شروع به کار کرده است.
- INVALID_REG
- گره بهدرستی نزد کنترلر ثبت نشده است. این حالت زمانی رخ میدهد که یک گره با منابع کمتری نسبت به آنچه در فایل slurm.conf پیکربندی شده است ثبت شود. گره با یک ثبت معتبر از این وضعیت خارج خواهد شد (یعنی راهاندازی مجدد slurmd لازم است)..IP
- MAINTENANCE
- گره در حال حاضر در یک رزرو قرار دارد که شامل پرچم maintenance است.
- NOT_RESPONDING
- گره پاسخ نمیدهد.
- POWER_DOWN
- گره در انتظار خاموش شدن است.
- POWERED_DOWN
- گره در حال حاضر خاموش است و قادر به اجرای هیچ کاری نیست.
- POWERING_DOWN
- گره در حال طی مراحل خاموش شدن است.
- POWERING_UP
- گره در حال طی مراحل روشن شدن است.
- PLANNED
- گره برای کاری که در آینده آغاز خواهد شد نشانهگذاری شده است.
- REBOOT_ISSUED
- یک درخواست راهاندازی مجدد برای عاملی که جهت مدیریت این درخواست پیکربندی شده، ارسال شده است.
- REBOOT_REQUESTED
- درخواستی برای راهاندازی مجدد این گره ثبت شده، اما هنوز به آن رسیدگی نشده است.
- RESERVED
- نشاندهنده این است که گره در یک رزرو پیشرفته قرار دارد و به صورت عمومی در دسترس نیست.
- مفهوم اطلاعات انرژی به شرح زیر است:
- CurrentWatts
- توان مصرفی لحظهای گره در زمان آخرین نمونهبرداری حسابداری انرژی گره، بر حسب وات.
- LowestJoules
- انرژی مصرفشده توسط گره بین آخرین باری که روشن شده و آخرین باری که توسط slurmd ثبت شده است، بر حسب ژول.
- ConsumedJoules
- انرژی مصرفشده توسط گره بین آخرین باری که توسط دیمن slurmd ثبت شده و آخرین نمونهبرداری حسابداری انرژی گره، بر حسب ژول.
اگر مقدار گزارششده "n/s" (پشتیبانینشده) باشد، گره از پلاگین AcctGatherEnergyType پیکربندیشده پشتیبانی نمیکند. اگر مقدار گزارششده صفر باشد، حسابداری انرژی برای گرهها غیرفعال است.
پارتیشنها - مشخصات برای دستورات ساخت و بهروزرسانی (PARTITIONS - SPECIFICATIONS FOR CREATE AND UPDATE COMMANDS)
- PartitionName=<name>
- مشخص کردن پارتیشنی که باید بهروزرسانی شود. این مشخصه الزامی است.
- AllocNodes=<name>
- فهرستی از گرهها با جداکننده کاما که کاربران میتوانند از طریق آنها کارها را در پارتیشن اجرا کنند. نام گرهها میتواند با استفاده از نحو عبارت بازه گره که در بالا توضیح داده شده است، مشخص شود. مقدار پیشفرض "ALL" است.
- AllowAccounts=<name>
- فهرستی با جداکننده کاما از حسابهایی که مجاز به اجرای کارها در پارتیشن هستند. مقدار پیشفرض "ALL" است. این فهرست سلسلهمراتبی است، به این معنی که زیرحسابها به طور خودکار گنجانده میشوند. نکته: اگر از AllowAccounts استفاده شود، DenyAccounts اعمال نخواهد شد. همچنین به DenyAccounts مراجعه کنید.
- AllowGroups=<name>
- مشخص کردن گروههای کاربری که مجاز به استفاده از این پارتیشن هستند. چندین گروه را میتوان در یک فهرست با جداکننده کاما مشخص کرد. برای مجاز کردن تمامی گروهها به استفاده از پارتیشن، "AllowGroups=ALL" را مشخص کنید.
- AllowQOS=<name>
- مشخص کردن QOSهایی که مجاز به استفاده از این پارتیشن هستند. چندین QOS را میتوان در یک فهرست با جداکننده کاما مشخص کرد. برای مجاز کردن تمامی QOSها جهت استفاده از پارتیشن، "AllowQOS=ALL" را مشخص کنید.
- Alternate=<partition name>
- پارتیشن جایگزین برای استفاده در حالتی که وضعیت این پارتیشن "DRAIN" یا "INACTIVE" باشد. مقدار "NONE" پارتیشن جایگزینِ از پیش تنظیمشده را لغو میکند.
- CpuBind=<node>
- مشخص کردن حالت پیوند وظیفه (task binding) پیشفرض برای این پارتیشن. گزینههای پشتیبانیشده عبارتند از: "none"، "socket"، "ldom" (NUMA)، "core"، "thread" و "off" (حذف حالت پیوند قبلی).
- Default={yes|no}
- مشخص میکند که آیا این پارتیشن برای کارهایی که صراحتاً پارتیشنی را تعیین نکردهاند استفاده شود یا خیر. مقادیر خروجی ممکن "YES" و "NO" هستند. به منظور تغییر پارتیشن پیشفرض یک سیستم در حال اجرا، از دستور scontrol update استفاده کنید و برای پارتیشنی که میخواهید پیشفرض جدید شود مقدار Default=yes را قرار دهید.
- DefaultTime=<time>
- محدودیت زمان اجرا برای کارهایی که مقداری را تعیین نکردهاند. در صورت تنظیم نشدن، از MaxTime استفاده خواهد شد. قالب آن مشابه با MaxTime است.
- DefMemPerCPU=<MB>
- تنظیم حافظه پیشفرض تخصیصیافته به ازای هر CPU برای کارهای این پارتیشن. اندازه حافظه بر حسب مبیبایت مشخص میشود.
- DefMemPerNode=<MB>
- تنظیم حافظه پیشفرض تخصیصیافته به ازای هر گره برای کارهای این پارتیشن. اندازه حافظه بر حسب مبیبایت مشخص میشود.
- DenyAccounts=<name>
- فهرستی با جداکننده کاما از حسابهایی که مجاز به اجرای کارها در این پارتیشن نیستند. به طور پیشفرض، دسترسی هیچ حسابی رد نمیشود. این فهرست سلسلهمراتبی است، به این معنی که زیرحسابها به طور خودکار گنجانده میشوند. نکته: اگر از AllowAccounts استفاده شود، DenyAccounts اعمال نخواهد شد. همچنین به AllowAccounts مراجعه کنید.
- DenyQOS=<name>
- مشخص کردن QOSهایی که باید دسترسی آنها به این پارتیشن رد شود. چندین QOS را میتوان در یک فهرست با جداکننده کاما مشخص کرد.
- DisableRootJobs={yes|no}
- مشخص میکند که آیا کارها میتوانند توسط کاربر ریشه (root) اجرا شوند یا خیر. مقادیر ممکن "YES" و "NO" هستند.
- Exclusive={no|none|node|user|topo}
- تنظیم انحصاریسازی در سطح پارتیشن بر روی یک حالت واحد.
- NO (یا NONE): بدون انحصار در سطح پارتیشن (پیشفرض).
- NODE: تخصیص کامل گرهها (مشابه گزینه --exclusive در کارها).
- این حالت متضمن Oversubscribe=NO است.
- USER: فقط کارهای متعلق به یک کاربر میتوانند یک گره را به اشتراک بگذارند (مشابه
- --exclusive=user).
- TOPO: فقط یک کار به ازای هر بخش توپولوژی (مشابه
- --exclusive=topo)؛ همچنین متضمن NODE است. این حالت متضمن Oversubscribe=NO است..TP برای دیدن معانی و مفاهیم کامل، مدخل Exclusive را در slurm.conf(5) ببینید.
- GraceTime=<seconds>
- زمان مهلت پیشدستی (preemption) را بر حسب ثانیه مشخص میکند که به کاری که برای پیشدستی انتخاب شده داده میشود. مقدار پیشفرض صفر است؛ هیچ مهلت پیشدستیای در این پارتیشن یا qos مجاز نیست. (تنها برای PreemptMode=CANCEL و PreemptMode=REQUEUE معنادار است)
- Hidden={yes|no}
- مشخص میکند که آیا پارتیشن و کارهای آن باید از دید پنهان شوند یا خیر. پارتیشنهای پنهان بهطور پیشفرض توسط APIها یا دستورهای Slurm گزارش نمیشوند. مقادیر ممکن "YES" و "NO" هستند.
- JobDefaults=<specs>
- مقادیر پیشفرض کار را با استفاده از فهرستی از جفتهای "key=value" جداشده با ویرگول مشخص میکند. کلیدهای پشتیبانیشده شامل موارد زیر هستند:
- DefCpuPerGPU
- تعداد پیشفرض CPU به ازای هر GPU تخصیصیافته.
- DefMemPerGPU
- محدودیت حافظه پیشفرض (به مبیبایت) به ازای هر GPU تخصیصیافته.
- LLN={yes|no}
- زمانبندی کارها بر روی کمبارترین گرهها (بر اساس تعداد CPUهای بیکار).
- MaxCPUsPerNode=<count>
- حداکثر تعداد CPUهایی را که میتوان در هر گره به تمام کارهای این پارتیشن تخصیص داد، تعیین میکند.
- MaxCPUsPerSocket=<count>
- حداکثر تعداد CPUهایی را که میتوان در هر سوکت به تمام کارهای این پارتیشن تخصیص داد، تعیین میکند.
- MaxMemPerCPU=<MB>
- حداکثر حافظه قابل تخصیص به ازای هر CPU را برای کارهای این پارتیشن تنظیم میکند. اندازه حافظه به مبیبایت مشخص میشود.
- MaxMemPerNode=<MB>
- حداکثر حافظه قابل تخصیص به ازای هر گره را برای کارهای این پارتیشن تنظیم میکند. اندازه حافظه به مبیبایت مشخص میشود.
- MaxNodes=<count>
- حداکثر تعداد گرههایی را که به هر کار منفرد در این پارتیشن تخصیص مییابد تنظیم میکند. یک عدد، "INFINITE" یا "UNLIMITED" مشخص کنید. تغییر MaxNodes یک پارتیشن هیچ تأثیری بر کارهایی که اجرای آنها از قبل آغاز شده است ندارد.
- MaxTime=<time>
- حداکثر زمان اجرا برای کارها. قالب خروجی [days-]hours:minutes:seconds یا "UNLIMITED" است. قالب ورودی (برای دستور update) بهصورت minutes، minutes:seconds، hours:minutes:seconds، days-hours، days-hours:minutes یا days-hours:minutes:seconds است. دقت زمانی یک دقیقه است و مقادیر ثانیه به دقیقه بعدی گرد میشوند. تغییر MaxTime یک پارتیشن هیچ تأثیری بر کارهایی که اجرای آنها از قبل آغاز شده است ندارد.
- MinNodes=<count>
- حداقل تعداد گرههایی را که به هر کار منفرد در این پارتیشن تخصیص مییابد تنظیم میکند. تغییر MinNodes یک پارتیشن هیچ تأثیری بر کارهایی که اجرای آنها از قبل آغاز شده است ندارد. افزایش این مقدار ممکن است از شروع کارهای در حال انتظار جلوگیری کند، حتی اگر بدون مشخص کردن -N/--nodes ارسال شده باشند. اگر در چنین وضعیتی قرار گرفتید، بهروزرسانی مقدار MinNodes یک کار در حال انتظار با استفاده از دستور scontrol به آن کار اجازه میدهد تا زمانبندی شود.
- Nodes=<name>
- گره(ها)یی را که باید به این پارتیشن مرتبط شوند مشخص میکند. چندین نام گره را میتوان با استفاده از عبارتهای ساده بازه گره مشخص کرد (مثلاً "lx[10-20]"). مشخص کردن "ALL" همه گرهها را مرتبط خواهد کرد. میتوانید با افزودن علامت '+' یا '-' پیش از علامت '=' گرهها را اضافه یا حذف کنید. همچنین اگر میخواهید lx[2-4] را حذف و همزمان lx0 را اضافه کنید، استفاده از nodes=+lx0,-lx[2-4] نیز کار میکند. توجه داشته باشید که کارها در هر زمان فقط میتوانند با یک پارتیشن مرتبط باشند. برای حذف تمام گرهها از یک پارتیشن، یک مقدار خالی مشخص کنید: "Nodes=". تغییر Nodes در یک پارتیشن هیچ تأثیری بر کارهایی که اجرای آنها از قبل آغاز شده است ندارد.
- OverSubscribe={yes|no|force}[:<job_count>]
- مشخص میکند که آیا منابع محاسباتی (یعنی CPUهای مجزا) در این پارتیشن میتوانند بین چندین کار به اشتراک گذاشته شوند یا خیر. مقادیر ممکن "YES" ،"NO" و "FORCE" هستند. یک تعداد کار اختیاری مشخص میکند چه تعداد کار میتوانند برای استفاده از هر منبع تخصیص یابند. پارتیشنهای اختصاصی تمامگره را میتوان با Exclusive=node پیکربندی کرد (به بالا مراجعه کنید).
- OverTimeLimit=<count>
- تعداد دقیقههایی که یک کار میتواند از محدودیت زمانی خود فراتر رود پیش از آنکه لغو شود. محدودیت زمانی پیکربندیشده کار بهعنوان یک محدودیت نرم (soft) در نظر گرفته میشود. افزودن OverTimeLimit به محدودیت نرم، یک محدودیت سخت (hard) فراهم میکند که در آن نقطه کار لغو میشود. این مورد بهویژه برای زمانبندی backfill که بر اساس محدودیت زمانی نرم هر کار است، مفید میباشد. یک OverTimeLimit مخصوص پارتیشن بر هر مقدار سراسری OverTimeLimit برتری خواهد داشت. در صورت عدم تعیین، مقدار سراسری OverTimeLimit اولویت خواهد داشت. نباید از ۶۵۵۳۳ دقیقه تجاوز کند. مقدار ورودی "UNLIMITED" هر مقدار OverTimeLimit مخصوص پارتیشن که قبلاً پیکربندی شده بود را پاک خواهد کرد.
- PowerDownOnIdle
- اگر روی "YES"
تنظیم شود،
از گرههای
تخصیصیافته
از این
پارتیشن
بلافاصله
پس از تبدیل
شدن به
وضعیت IDLE،
درخواست
خاموش شدن
میشود. یک
درخواست
خاموش شدن
از
زمانبندیهای
بعدی روی
گره
جلوگیری
میکند تا
زمانی که
توسط SuspendProgram در
حالت ذخیره
انرژی قرار
گیرد.
همچنین SuspendTime را ببینید.
- PreemptMode=<mode>
- سازوکار مورد استفاده برای پیشدستی کارها در این پارتیشن را بازنشانی میکند، در صورتی که PreemptType روی preempt/partition_prio پیکربندی شده باشد. سازوکار پیشدستی پیشفرض توسط پارامتر پیکربندی سراسری کلاستر PreemptMode مشخص میشود. مقادیر ممکن عبارتند از "OFF" ،"CANCEL" ،"REQUEUE" و "SUSPEND".
- PriorityJobFactor=<count>
- ضریب پارتیشن مورد استفاده توسط افزونه priority/multifactor در محاسبه اولویت کار. مقدار نباید از ۶۵۵۳۳ تجاوز کند. همچنین PriorityTier را ببینید.
- PriorityTier=<count>
- کارهای ارسالشده به پارتیشنی با مقدار رتبه اولویت بالاتر، پیش از کارهای در حال انتظار در پارتیشن با مقدار رتبه اولویت پایینتر فرستاده خواهند شد و در صورت امکان، بر کارهای در حال اجرای پارتیشنهای با رتبه اولویت پایینتر پیشدستی خواهند کرد. توجه داشته باشید که رتبه اولویت یک پارتیشن نسبت به اولویت یک کار ارجحیت دارد. این مقدار نباید از ۶۵۵۳۳ بیشتر شود. همچنین PriorityJobFactor را ببینید.
- QOS=<QOSname|blank to remove>
- تعیین QOS پارتیشن با یک نام QOS، یا برای حذف QOS پارتیشن این گزینه را خالی بگذارید.
- ReqResv={yes|no}
- مشخص میکند که آیا تنها درخواستهای تخصیصی که یک رزرو را تعیین میکنند برآورده خواهند شد یا خیر. این گزینه برای محدود کردن استفاده از پارتیشن تنها در چارچوب یک رزرو به کار میرود. مقادیر ممکن "YES" و "NO" هستند.
- RootOnly={yes|no}
- مشخص میکند که آیا تنها درخواستهای تخصیص ایجادشده توسط کاربر root برآورده شوند یا خیر. این مورد میتواند برای محدود کردن کنترل پارتیشن به یک فرازمانبند استفاده شود. مقادیر ممکن "YES" و "NO" هستند..IP
- State={up|down|drain|inactive}
- مشخص میکند که آیا میتوان به کارها در این پارتیشن گره اختصاص داد یا آنها را در صف قرار داد یا خیر. مقادیر ممکن عبارتند از "UP"، "DOWN"، "DRAIN" و "INACTIVE".
- UP
- مشخص میکند که کارهای جدید میتوانند در پارتیشن در صف قرار گیرند، و کارها میتوانند گره تخصیص گرفته و از این پارتیشن اجرا شوند.
- DOWN
- مشخص میکند که کارهای جدید میتوانند در پارتیشن در صف قرار گیرند، اما کارهای موجود در صف نمیتوانند گره تخصیص بگیرند و از پارتیشن اجرا شوند. کارهایی که پیشتر روی پارتیشن در حال اجرا هستند به اجرای خود ادامه میدهند. برای خاتمه دادن به این کارها، باید صریحاً لغو شوند.
- DRAIN
- مشخص میکند که هیچ کار جدیدی نمیتواند در پارتیشن در صف قرار گیرد (درخواستهای ارسال کار با یک پیام خطا رد خواهند شد)، اما کارهایی که از قبل در پارتیشن در صف قرار دارند میتوانند گره تخصیص گرفته و اجرا شوند. همچنین مشخصه پارتیشن "Alternate" را ببینید.
- INACTIVE
- مشخص میکند که هیچ کار جدیدی نمیتواند در پارتیشن در صف قرار گیرد و کارهای موجود در صف نیز نمیتوانند گره تخصیص گرفته و اجرا شوند. همچنین مشخصه پارتیشن "Alternate" را ببینید.
- Topology=<topology name>
- نام توپولوژی، تعریفشده در topology.yaml، که توسط کارهای این پارتیشن استفاده میشود.
- TRESBillingWeights=<TRES Billing Weights>
- پارامتر TRESBillingWeights برای تعریف وزنهای صورتحساب هر نوع TRES استفاده میشود که در محاسبه میزان مصرف یک کار به کار میرود. مصرف محاسبهشده هنگام محاسبه سهم منصفانه (fairshare) و هنگام اعمال محدودیت صورتحساب TRES بر روی کارها استفاده میشود. بهروزرسانیها کارهای جدید را تحت تأثیر قرار میدهند و بر کارهای موجود اثر نمیگذارند. برای اطلاعات بیشتر به صفحه راهنمای slurm.conf مراجعه کنید.
رزروها - مشخصات برای دستورهای CREATE و UPDATE (RESERVATIONS - SPECIFICATIONS FOR CREATE AND UPDATE COMMANDS)
یک رزرو جدید باید حداقل یک فیلد کنترل دسترسی را مشخص کند: Users، Groups، Accounts، QOS و AllowedPartitions. با این حال، Users و Groups ناسازگار با یکدیگر (مانعةالجمع) هستند. اگر چند فیلد کنترل دسترسی مشخص شده باشد، یک کار برای استفاده از رزرو باید توسط همه آنها تأیید شود.
- ReservationName=<name>
- نام رزروی که باید ایجاد یا بهروزرسانی شود را مشخص میکند. این پارامتر برای بهروزرسانی الزامی است. اگر هنگام ایجاد رزرو نادیده گرفته شود، یک نام بهطور خودکار ایجاد خواهد شد (برای نمونه، "scontrol create reservation ...").
- Accounts=<account list>
- فهرست حسابهای مجاز برای استفاده از گرههای رزروشده، برای نمونه "Accounts=physcode1,physcode2". کاربر موجود در هر یک از حسابها یا زیرحسابهای مشخصشده میتواند از گرههای رزروشده استفاده کند. برای جزئیات عمومی درباره فیلدهای کنترل دسترسی به ابتدای این بخش مراجعه کنید. همچنین میتوان با قرار دادن '-' پیش از همه نامهای حساب، دسترسی آنها را به رزروها سلب کرد. به عنوان جایگزین، میتوان پیش از علامت مساوی از '-' استفاده کرد. برای نمونه، "Accounts=-physcode1,-physcode2" یا "Accounts-=physcode1,physcode2" به هر حسابی به جز physcode1 و physcode2 اجازه استفاده از رزرو را میدهد. میتوانید با استفاده از دستور update و افزودن علامت '+' یا '-' پیش از علامت '='، حسابهای جداگانه را از یک رزرو موجود اضافه یا حذف کنید. اگر دسترسی حسابهایی به یک رزرو سلب شود (پیش از نام حساب یک '-' قرار گیرد)، آنگاه به تمام حسابهای دیگر بهطور ضمنی اجازه استفاده از رزرو داده میشود و دیگر نمیتوان حسابهای مجاز را نیز بهطور صریح مشخص کرد. کاربر ریشه (Root) و SlurmUser، بدون در نظر گرفتن حسابهای تعیینشده در اینجا، به تمامی رزروها دسترسی دارند.
- AllowedPartitions=<partition list>
- فهرست پارتیشنهای مجاز برای استفاده از منابع رزروشده، برای نمونه "Partition=debug,low". کاربری که از هر یک از پارتیشنهای مشخصشده استفاده میکند میتواند از منابع رزروشده استفاده نماید. برای جزئیات عمومی درباره فیلدهای کنترل دسترسی به ابتدای این بخش مراجعه کنید. همچنین میتوان با قرار دادن '-' پیش از همه نامهای پارتیشن، دسترسی پارتیشنها را به رزرو سلب کرد. به عنوان روش جایگزین میتوان پیش از علامت مساوی از '-' استفاده نمود. برای نمونه، "AllowedPartitions=-debug,-low" یا "AllowedPartitions-=debug,low" به هر پارتیشنی به جز debug و low اجازه میدهد تا از رزرو استفاده کند. میتوانید با استفاده از دستور update و افزودن علامت '+' یا '-' پیش از علامت '='، پارتیشنهای مجزا را از یک رزرو موجود اضافه یا حذف کنید. اگر دسترسی هر پارتیشنی به یک رزرو سلب شود (پیش از نام پارتیشن یک '-' قرار گیرد)، آنگاه به همه پارتیشنهای دیگر بهطور ضمنی اجازه استفاده از رزرو داده میشود و دیگر امکان تعیین صریح پارتیشنهای مجاز وجود ندارد. کاربر ریشه (Root) و SlurmUser، بدون در نظر گرفتن پارتیشن(های) تعیینشده در اینجا، به تمامی رزروها دسترسی دارند.
- BurstBuffer=<buffer_spec>[,<buffer_spec>,...]
- مشخصات منابع burst buffer که باید رزرو شوند. عبارت "buffer_spec" از چهار بخش تشکیل شده است: [plugin:][type:]#[units] مقدار "plugin" نام افزونه بافر جهشی است که در حال حاضر "datawarp" یا "generic" میباشد. اگر هیچ افزونهای مشخص نشود، رزرو برای تمام افزونههای بافر جهشی پیکربندیشده اعمال میشود. مقدار "type" یک منبع بافر جهشی عمومی Cray را مشخص میکند، برای نمونه "nodes". اگر "type" مشخص نشود، این عدد معیاری برای فضای ذخیرهسازی خواهد بود. واحدهای "units" میتوانند "N" (گرهها)، "K|KiB"، "M|MiB"، "G|GiB"، "T|TiB"، "P|PiB" (برای توانهای ۱۰۲۴) و "KB"، "MB"، "GB"، "TB"، "PB" (برای توانهای ۱۰۰۰) باشند. واحد پیشفرض برای رزروهای فضای ذخیرهسازی، بایت (bytes) است. برای نمونه "BurstBuffer=datawarp:2TB" (رزرو ۲ ترابایت فضای ذخیرهسازی به علاوه ۳ گره از افزونه Cray) یا "BurstBuffer=100GB" (رزرو ۱۰۰ گیگابایت فضای ذخیرهسازی از تمامی افزونههای بافر جهشی پیکربندیشده). کارهایی که از این رزرو استفاده میکنند محدود به این منابع بافر جهشی نیستند، بلکه میتوانند علاوه بر هر منبعی که به صورت عمومی در دسترس است، از این منابع رزروشده نیز استفاده کنند. نکته: معمولاً Slurm واحدهای KB، MB، GB، TB، PB را به صورت توانهای ۱۰۲۴ تفسیر میکند، اما برای مشخصات اندازه Burst Buffers، اسلورم از هر دو قالب IEC/SI پشتیبانی میکند. این به این دلیل است که API مربوط به CRAY برای مدیریت DataWarps از هر دو قالب پشتیبانی میکند.
- CoreCnt=<num>
- این گزینه تنها زمانی پشتیبانی میشود که select/cons_tres استفاده شده باشد. تعداد هستههایی که باید رزرو شوند را مشخص میکند. اگر NodeCnt یا Nodelist استفاده شود، این مقدار کل هستهها برای رزرو است که در آن هستهها به ازای هر گره CoreCnt/NodeCnt خواهد بود.
- Duration=<time>
- طول مدت یک رزرو. یک رزرو جدید باید زمان پایان یا مدتزمان را مشخص کند. قالبهای معتبر عبارتند از minutes، minutes:seconds، hours:minutes:seconds، days-hours، days-hours:minutes، days-hours:minutes:seconds یا UNLIMITED. تفکیکپذیری زمان یک دقیقه است و مقادیر ثانیهها به دقیقه بعدی به بالا گرد میشوند. قالب خروجی همیشه [days-]hours:minutes:seconds است.
- EndTime=<time_spec>
- زمان پایان رزرو. یک رزرو جدید باید زمان پایان یا مدتزمان را مشخص کند. قالبهای معتبر همانند StartTime هستند.
- Flags=<flags>
- پرچمهای مرتبط با رزرو. میتوانید با قرار دادن یک علامت '+' یا '-' پیش از علامت '='، پرچمهای جداگانه را از یک رزرو موجود اضافه یا حذف کنید. برای نمونه: Flags-=DAILY (نکته: این میانبر برای همه پرچمها پشتیبانی نمیشود). پرچمهایی که در حال حاضر پشتیبانی میشوند عبارتند از:
- ANY_NODES
- این یک رزرو تنها برای بافرهای جهشی و/یا مجوزها است و گرههای محاسباتی را شامل نمیشود. اگر این پرچم تنظیم شود، کاری که از این رزرو استفاده میکند میتواند علاوه بر هر گره محاسباتی، از بافرهای جهشی و/یا مجوزهای مرتبط نیز استفاده کند. اگر این پرچم تنظیم نشود، کاری که از این رزرو استفاده میکند تنها میتواند از گرهها و مجوزهای مرتبط با رزرو استفاده کند.
- DAILY
- تکرار رزرو در همان زمان در هر روز.
- FLEX
- به کارهایی که رزرو را درخواست میکنند اجازه میدهد پیش از زمان شروع رزرو آغاز شوند، پس از زمان پایان رزرو به پایان برسند، و بدون توجه به هرگونه محدودیتی که احتمالاً در رزرو تعیین شده است، از هر منبعی در داخل و/یا خارج از رزرو استفاده کنند. یک کاربرد معمول این است که از استفاده منابع رزروشده توسط کارهایی که صریحاً رزرو را درخواست نکردهاند جلوگیری شود، به جای اینکه کارهای درخواستکننده رزرو مجبور شوند حتماً از آن منابع در بازه زمانی رزروشده استفاده کنند. کاربرد دیگر میتواند رزرو همیشگی تعداد مشخصی گره با یک ویژگی خاص برای یک حساب خاص باشد، به طوری که کاربران این حساب بتوانند از این گرهها به علاوه سایر گرههای فاقد این ویژگی استفاده کنند.
- FORCE_START
- اجازه میدهد رزروهای دورهای زمان شروعی در گذشته داشته باشند، بنابراین رزروهای تکرارشونده نیازی نخواهد بود از یک روز قبل ایجاد شوند. این پرچم باید همراه با یک پرچم رزرو دورهای استفاده شود. HOURLY تکرار رزرو در همان زمان در هر ساعت.
- IGNORE_JOBS
- نادیده گرفتن کارهای در حال اجرای فعلی هنگام ایجاد رزرو. این ویژگی میتواند بهویژه هنگام رزرو تمام گرههای سامانه برای نگهداری (maintenance) بسیار مفید باشد.
- LICENSE_ONLY
- نگاه کنید به ANY_NODES.
- MAGNETIC
- این پرچم به کارها اجازه میدهد برای این رزرو در نظر گرفته شوند، حتی اگر آن را درخواست نکرده باشند.
- MAINT
- حالت نگهداری (maintenance)، شامل محاسبات و حسابرسی (accounting) ویژهای میشود. این رزرو مجاز است از منابعی استفاده کند که هماکنون در رزرو دیگری قرار دارند. پرچم MAINT رفتاری مشابه با STATIC_ALLOC (پایین را ببینید) دارد، از این نظر که گرهها را پس از تنظیم شدن جایگزین نخواهد کرد.
- NO_HOLD_JOBS_AFTER
- بهطور پیشفرض، هنگامی که یک رزرو پایان مییابد، درخواست رزرو از تمام کارهای در انتظار ارسالشده به آن رزرو حذف شده و در وضعیت نگهداشتهشده (held) قرار میگیرند. از این پرچم برای اجازه دادن به اجرای کارها در خارج از رزرو، پس از پایان یافتن رزرو استفاده کنید. حذف پرچم با '-=' پشتیبانی نمیشود.
- OVERLAP
- به این رزرو میتوان منابعی را اختصاص داد که هماکنون در رزرو دیگری قرار دارند. حذف پرچم با '-=' پشتیبانی نمیشود.
- PART_NODES
- این پرچم میتواند برای رزرو تمام گرههای موجود در پارتیشن مشخصشده استفاده شود. PartitionName و Nodes=ALL باید همراه با این پرچم مشخص شوند.
- PURGE_COMP[=<timespec>]
- پاکسازی رزرو در صورتی که به مدت timespec بیکار بماند (هیچ کاری مرتبط با آن نباشد). اگر timespec داده نشود، ۵ دقیقه مقدار پیشفرض است. قالبهای معتبر timespec عبارتند از minutes، minutes:seconds، hours:minutes:seconds، days-hours، days-hours:minutes، days-hours:minutes:seconds. تفکیکپذیری زمان یک دقیقه است و مقادیر ثانیه به بالا، به دقیقه بعدی گرد میشوند. قالب خروجی همیشه به صورت [days-]hours:minutes:seconds است.
- REPLACE
- گرههایی
که در وضعیت
DOWN یا DRAINED
هستند، یا
به کارها
تخصیص
یافتهاند،
بهطور
خودکار با
استفاده از
منابع
بیکار
جایگزین و
تکمیل
میشوند.
این گزینه
میتواند
برای حفظ
تعداد
ثابتی از
منابع
بیکار در
دسترس برای
کارهای در
انتظار
استفاده
شود (مشروط
به در دسترس
بودن منابع
بیکار). این
پرچم باید
همراه با
گزینه رزرو
NodeCnt استفاده
شود؛
گرههای
خاصی را
برای
گنجانده
شدن در رزرو
مشخص نکنید.
حذف پرچم با
'-=' پشتیبانی
نمیشود.
NOTE: حذف یک گره از کلاستر در حالی که در یک رزرو با پرچم REPLACE قرار دارد، باعث جایگزینی آن نخواهد شد.
- REPLACE_DOWN
- گرههایی
که در وضعیت
DOWN یا DRAINED هستند
بهطور
خودکار با
استفاده از
منابع
بیکار
تکمیل
میشوند.
این رفتار
پیشفرض
است. این
گزینه
میتواند
برای حفظ یک
مخزن با
اندازه
ثابت از
منابع در
دسترس برای
کارهای در
انتظار
استفاده
شود (مشروط
به در دسترس
بودن منابع
بیکار).
گرههای در
حال
استفاده
توسط رزروی
دیگر، به
عنوان
گرههای
جایگزین
احتمالی در
نظر گرفته
نخواهند شد.
این پرچم
باید همراه
با گزینه
رزرو NodeCnt
استفاده
شود؛
گرههای
خاصی را
برای
گنجانده
شدن در رزرو
مشخص نکنید.
حذف پرچم با
'-=' پشتیبانی
نمیشود.
NOTE: حذف یک گره از کلاستر در حالی که در یک رزرو با پرچم REPLACE_DOWN قرار دارد، باعث جایگزینی آن نخواهد شد.
- SPEC_NODES
- رزرو برای گرههای خاص است (فقط خروجی).
- STATIC_ALLOC
- کاری میکند که پس از انتخاب گرهها برای یک رزرو، آنها تغییر نکنند. بدون این گزینه، هنگامی که گرهها برای یک رزرو انتخاب میشوند و یکی از آنها از کار میافتد (down میشود)، رزرو گره جدیدی را برای پر کردن جای خالی انتخاب خواهد کرد.
- TIME_FLOAT
- زمان شروع رزرو نسبت به زمان فعلی است و در طول زمان به جلو حرکت میکند (برای مثال StartTime=now+10minutes همواره ۱۰ دقیقه در آینده خواهد بود). رزروهای شناور تکرارشونده (مانند DAILY) پشتیبانی نمیشوند. این پرچم را نمیتوان به یک رزرو موجود اضافه یا از آن حذف کرد.
- USER_DELETE
- به هر
کاربری که
قادر به
اجرا در
رزرو باشد
اجازه
میدهد آن
را حذف کند.
NOTE: محدودیتهای QOS و AllowedPartitions روی رزرو برای این گزینه اعمال نمیشوند.
- WEEKDAY
- تکرار رزرو در همان زمان در تمام روزهای کاری هفته (دوشنبه، سهشنبه، چهارشنبه، پنجشنبه و جمعه).
- WEEKEND
- تکرار رزرو در همان زمان در تمام روزهای آخر هفته (شنبه و یکشنبه).
- WEEKLY
- تکرار رزرو در همان زمان در هر هفته.
- Features=<features>
- تنظیم
ویژگیهای
مورد نیاز
گرهها در
رزرو. در
صورتی که
همه
ویژگیها
مورد نیاز
باشند،
میتوان
مقادیر
چندگانه را
با "&" جدا
کرد (عملگر
AND)، یا اگر هر
یک از
ویژگیهای
مشخصشده
مورد نیاز
باشد،
آنها را با
"|" جدا کرد
(عملگر OR).
همچنین
پرانتزها
برای ترکیب
ویژگیها
با عملگر AND
به همراه
تعداد
گرههای
دارای آن
ویژگیهای
مشخصشده
پشتیبانی
میشوند.
برای مثال
"Features=[(knl&a2a&flat)*4&haswell*2]"
نشان
میدهد که
رزرو
پیشرفته
باید شامل ۴
گره با تمام
ویژگیهای
"knl"، "a2a" و "flat"
به همراه ۲
گره با
ویژگی "haswell"
باشد.
مقدار را میتوان با مقدار داده خالی پاک کرد: "Features=".
- Groups=<group list>
- فهرست
گروههایی
که مجاز به
استفاده از
گرههای
رزروشده
هستند،
برای مثال
"Group=bio,chem". برای
جزئیات کلی
درباره
فیلدهای
کنترل
دسترسی، به
ابتدای این
بخش مراجعه
کنید.
برخلاف
کاربران،
نمیتوانید
دسترسی به
رزروها را
بر اساس
عضویت در
گروه منع
کنید. کاربر
ریشه (root) و SlurmUser
بدون در نظر
گرفتن
گروههای
تنظیمشده
در اینجا،
به تمام
رزروها
دسترسی
دارند.
میتوانید با استفاده از دستور update و افزودن یک علامت '+' یا '-' پیش از علامت '='، گروههای جداگانه را از یک رزرو موجود اضافه یا حذف کنید. همچنین میتوانید با بهروزرسانی رزرو با یک رشته خالی، فیلد Groups را لغو (unset) کنید:
group=''
پیش از نگارش 25.05، اگر رزروی از کنترلهای دسترسی مبتنی بر کاربر یا گروه استفاده میکرد و slurmctld در اعتبارسنجی کاربر(ها) یا گروه(ها) با شکست مواجه میشد، رزرو را حذف میکرد. رزروها اکنون در برابر اختلالات موقتی اعتبارسنجی تابآور هستند.
- Licenses=<license>
- مشخص کردن مجوزها (یا منابع دیگری که در تمام گرههای کلاستر در دسترس هستند) که قرار است رزرو شوند. نامهای مجوز میتوانند با یک دونقطه و تعداد همراه باشند (تعداد پیشفرض یک است). نامهای چندگانه مجوز باید با کاما از هم جدا شوند (برای مثال "Licenses=foo:4,bar"). یک رزرو جدید باید یک یا چند منبع را برای گنجانده شدن مشخص کند: NodeCnt، Nodes و/یا Licenses. اگر یک رزرو شامل Licenses باشد اما فاقد NodeCnt یا Nodes باشد، آنگاه گزینه Flags=LICENSE_ONLY نیز باید مشخص شود. کارهایی که از این رزرو استفاده میکنند محدود به این مجوزها نیستند، بلکه میتوانند از این مجوزهای رزروشده به همراه هر مجوزی که بهطور عمومی در دسترس است استفاده کنند.
- MaxStartDelay[=<timespec>]
- تغییر مقدار MaxStartDelay که حداکثر زمانی را مشخص میکند که یک کار واجد شرایط که متقاضی این رزرو نیست میتواند کاری را که متقاضی آن است به تاخیر بیندازد. مقدار پیشفرض none است. قالبهای معتبر عبارتند از minutes، minutes:seconds، hours:minutes:seconds، days-hours، days-hours:minutes، days-hours:minutes:seconds. تفکیکپذیری زمان یک دقیقه است و مقادیر ثانیه به بالا، به دقیقه بعدی گرد میشوند. قالب خروجی همیشه به صورت [days-]hours:minutes:seconds است. NodeCnt=<num> تعداد گرههایی که باید رزرو شوند را مشخص میکند. این عدد میتواند شامل پسوند «k» یا «K» باشد، که در این صورت عدد مشخصشده در ۱۰۲۴ ضرب میشود. یک رزرو جدید باید یک یا چند منبع را برای گنجانده شدن مشخص کند: NodeCnt، Nodes و/یا Licenses.
- Nodes=<name>
- گره(های)
مورد نظر
برای رزرو
را مشخص
میکند. نام
چند گره را
میتوان با
استفاده از
عبارات
سادهٔ
بازهٔ گره
تعیین کرد
(برای نمونه
"Nodes=lx[10-20]"). هنگام
استفاده از
Nodes برای
تعیین
گرههای
بیشتر یا
کمتر، NodeCnt
برای اعمال
تعداد جدید
گرهها
بهروزرسانی
خواهد شد.
با این حال،
هنگام
تنظیم یک
فهرست خالی
("Nodes=")، فهرست
گرهها با
گرههای
تصادفی پر
میشود تا nodecnt
قبلی
برآورده
شود و پرچم
SPEC_NODES حذف
خواهد شد.
یک رزرو
جدید باید
یک یا چند
منبع را
برای
گنجانده
شدن مشخص
کند: NodeCnt، Nodes و/یا
Licenses. تعیین "ALL"
تمام
گرهها را
رزرو خواهد
کرد. مقدار
Flags=PART_NODES و PartitionName= را
تنظیم کنید
تا تغییرات
در گرههای
مرتبط با یک
پارتیشن،
در گرههای
مرتبط با
رزرو نیز
منعکس شود.
میتوانید
با افزودن
علامت '+' یا '-'
قبل از
علامت '='،
گرههایی
را به یک
رزرو موجود
اضافه یا از
آن حذف
کنید.
همچنین اگر
بخواهید lx[2-4]
را حذف و
همزمان lx0 را
اضافه
کنید،
استفاده از
nodes=+lx0,-lx[2-4] کار
خواهد کرد.
نکته: هنگام بهروزرسانی یک رزرو، اگر Nodes و Nodecnt بهطور همزمان تنظیم شوند، همواره nodecnt اعمال خواهد شد. اگر nodes > nodecnt باشد، رزرو زیرمجموعهای از گرهها را دریافت میکند، یا اگر nodes < nodecnt باشد، گرههای بیشتری به فهرست اضافه خواهد شد.
- PartitionName=<name>
- پارتیشنی که برای رزرو گرهها از آن استفاده میشود. این گزینه تلاش میکند تمام گرههای موجود در پارتیشن مشخصشده را تخصیص دهد مگر اینکه با CoreCnt، NodeCnt یا TRES منابع کمتری نسبت به منابع در دسترس درخواست کنید. اگر در زمان ارسال (submit) هیچ پارتیشنی مشخص نشود، این پارتیشن بر پارتیشن پیشفرض کار اولویت خواهد داشت. کارهایی که صراحتاً پارتیشن متفاوتی را درخواست میکنند همچنان مجاز به استفاده از این رزرو خواهند بود مادامی که گرههای همپوشان کافی میان هر دو پارتیشن برای تخصیص به کار وجود داشته باشد. شما نمیتوانید پارتیشن رزرو را پاک کنید. نکته: اگر از AllowedPartitions استفاده شود و PartitionName داده نشود، اولین پارتیشن در AllowedPartitions به عنوان PartitionName در نظر گرفته میشود.
- QOS=<qos list>
- فهرست QOSهای مجاز برای استفاده از منابع رزروشده، برای نمونه "QOS=normal,standby". کاربری که از هر یک از QOSهای مشخصشده استفاده کند میتواند از منابع رزروشده بهرهمند شود. برای جزئیات عمومی دربارهٔ فیلدهای کنترل دسترسی به ابتدای این بخش مراجعه کنید. دسترسی QOS به رزروها را میتوان با قرار دادن '-' پیش از تمام نامهای QOS نیز سلب کرد. به عنوان روش جایگزین، علامت منفی را پیش از علامت مساوی قرار دهید. برای مثال، "QOS=-normal,-standby" یا "QOS-=normal,standby" به هر QOS دیگری به جز normal و standby اجازه میدهد از رزرو استفاده کند. میتوانید با استفاده از دستور بهروزرسانی و افزودن علامت '+' یا '-' قبل از علامت '='، QOSهای تکی را به یک رزرو موجود اضافه یا از آن حذف کنید. اگر دسترسی برخی از QOSها به یک رزرو مسدود شود (نام QOS با '-' شروع شود)، آنگاه تمام QOSهای دیگر بهطور ضمنی مجاز به استفاده از رزرو هستند و امکان تعیین صریح QOSهای مجاز دیگر وجود ندارد. کاربر root و SlurmUser بدون توجه به QOS تنظیمشده در اینجا، به تمامی رزروها دسترسی دارند.
- Skip
- روی یک رزرو تکرارشونده استفاده میشود تا به تکرار بعدی رزرو جهش کند. نیازمند همان مجوزهای لازم برای حذف یک رزرو است. نکته: تنها برای بهروزرسانی (update) در دسترس است.
- StartTime=<time_spec>
- زمان شروع رزرو. یک رزرو جدید باید زمان شروع را مشخص کند. این گزینه زمانهایی به قالب HH:MM:SS را برای زمان مشخصی از روز میپذیرد (ثانیهها اختیاری هستند). (اگر آن زمان سپری شده باشد، روز بعد فرض میشود.) همچنین میتوانید midnight (نیمهشب)، noon (ظهر)، elevenses (ساعت ۱۱ صبح)، fika (ساعت ۳ بعدازظهر) یا teatime (ساعت ۴ بعدازظهر) را تعیین کنید و میتوانید زمان روز را با پسوند AM یا PM برای اجرا در صبح یا بعدازظهر مشخص نمایید. همچنین میتوانید با تعیین تاریخی به قالب MMDDYY یا MM/DD/YY یا MM.DD.YY، یا تاریخ و زمانی به صورت YYYY-MM-DD[THH:MM[:SS]] مشخص کنید که رزرو در چه روزی شروع شود. علاوه بر این میتوانید زمانهایی مانند now + count time-units را بدهید، که در آن time-units میتواند seconds (پیشفرض)، minutes، hours، days یا weeks باشد. کلمات کلیدی today و tomorrow نیز قابل استفاده هستند. نمیتوانید StartTime رزروی را که در وضعیت ACTIVE قرار دارد بهروزرسانی کنید.
- TRES=<tres_spec>
- فهرست
جداشده با
کاما از
TRESهای مورد
نیاز برای
رزرو. انواع
TRES
پشتیبانیشده
در رزروها
در حال حاضر
عبارتند از:
CPU، GRES، Node، License و BB.
پارامترهای
CPU و Node به
ترتیب از
همان قالب
پارامترهای
CoreCnt و NodeCnt پیروی
میکنند.
نامهای License
میتوانند
به دنبال یک
علامت
مساوی '=' و یک
تعداد مشخص
شوند:
License/<name1>=<count1>[,License/<name2>=<count2>,...]
پارامتر BurstBuffer را میتوان به روشی مشابه با پارامتر BurstBuffer مشخص کرد. تنها تفاوت این است که نماد دونقطه ':' باید با یک مساوی '=' جایگزین شود تا از قالب TRES پیروی کند.
چند نمونه از مشخصههای معتبر TRES:
TRES=cpu=5,bb/cray=4,license/iop1=1,license/iop2=3
TRES=node=5k,license/iop1=2
TRES=gres/gpu:a100=2
لطفاً توجه داشته باشید که CPU، Node، License و BB میتوانند به ترتیب بر پارامترهای CoreCnt، NodeCnt، Licenses و BurstBuffer تقدم پیدا کنند. همچنین در یک رزرو، CPU نشاندهندهٔ CoreCnt است و در صورتی که روی گرههای خود ریسه در هر هسته (threads per core) داشته باشید، تنظیم خواهد شد.
توجه داشته باشید که رزروی که شامل گرهها یا هستهها است به یک پارتیشن مرتبط است و نمیتواند منابع را در چندین پارتیشن بگستراند. تنها استثنا در این مورد زمانی است که رزرو با گرههای مشخصشدهٔ صریح ایجاد شود.
توجه داشته باشید که در صورت درخواست GRES، آن GRESها باید جزو TRESهای فهرستشده در AccountingStorageTRES باشند تا معتبر در نظر گرفته شوند.
نکته: رزروها بهطور خودکار تلاش خواهند کرد اتصال (binding) را روی GRES اعمال کنند. چندین GRES را نمیتوان در میان چندین سوکت رزرو کرد.
- TRESPerNode=<tres_spec>
- فهرست
جداشده با
کاما از
TRESهای مورد
نیاز در هر
گره برای
رزرو. برای
انواع
پشتیبانیشده،
TRES را در
بالا
ببینید.
TRESPerNode=gres/gpu:a100=2
دستور بالا به ازای هر گره، همانطور که در nodecnt مشخص شده است، ۲ عدد gpu:a100 تخصیص خواهد داد.
- Users=<user list>
- فهرست
کاربران
مجاز برای
استفاده از
گرههای
رزروشده،
برای نمونه
"User=jones1,smith2".
همچنین
میتوان با
قرار دادن
علامت '-' پیش
از نام
کاربران
دسترسی
آنها را به
رزرو سلب
کرد، مانند
"User=-jones1,-smith2". برای
جزئیات کلی
دربارهٔ
فیلدهای
کنترل
دسترسی به
ابتدای این
بخش مراجعه
کنید.
کاربر root و SlurmUser صرفنظر از کاربران تعیینشده در اینجا، به تمامی رزروها دسترسی دارند.
هر کاربر در سامانه ممکن است در یکی از سه وضعیت زیر برای یک رزرو باشد:
- صراحتاً مجاز (Explicitly allowed)
- نامشخص (Unspecified)
- صراحتاً رد شده (Explicitly denied)اگر کاربری صراحتاً مجاز به استفاده از یک رزرو باشد، دسترسی سایر کاربران بهطور ضمنی سلب میشود. اگر دسترسی کاربری صراحتاً به یک رزرو رد شود، تمامی کاربران دیگر بهطور ضمنی مجاز به دسترسی به رزرو خواهند بود.
هنگام بهروزرسانی رزروهای موجود، میتوانید از عملگرهای '+=' و '-=' برای جابهجایی کاربران به بالا (+) یا پایین (-) در فهرست وضعیتها استفاده کنید. با این حال، نمیتوانید ترکیبی از کاربران صراحتاً مجاز و صراحتاً ردشده را در یک رزرو داشته باشید، و دستور بهروزرسانیای که به چنین وضعیتی منجر شود با خطا مواجه خواهد شد. علامت '+' یا '-' میتواند مستقیماً پیش از نامکاربری نیز قرار گیرد. برای نمونه، موارد زیر یکسان هستند:
User-=jones1,smith2
User=-jones1,-smith2
در این مثالها، اگر کاربران قبلاً صراحتاً مجاز بودند، این انتساب نام آنها را از فهرست مجاز حذف کرده و در وضعیت نامشخص قرار میدهد. اگر دستور دوباره تکرار شود، کاربران صراحتاً از رزرو منع خواهند شد.
همچنین میتوانید فیلد Users را با بهروزرسانی رزرو با یک رشتهٔ خالی لغو کنید (همه به یک وضعیت خنثی/نامشخص بازگردانده میشوند):
user=''
پیش از نسخهٔ 25.05، اگر رزروی از کنترلهای دسترسی مبتنی بر کاربر یا گروه استفاده میکرد و slurmctld در اعتبارسنجی کاربر(ها) یا گروه(ها) ناموفق میشد، رزرو را حذف میکرد. اکنون رزروها در برابر قطعیهای موقت اعتبارسنجی تابآور هستند.
اجرای scontrol یک فراخوانی روال از دور (RPC) به slurmctld ارسال میکند. اگر فراخوانیهای متعددی از سوی scontrol یا دیگر دستورهای کلاینت Slurm که به دیمن slurmctld فراخوانی روال از دور میفرستند به طور همزمان دریافت شوند، این امر میتواند به افت کارایی دیمن slurmctld و احتمالاً بروز شرایط منع سرویس (denial of service) منجر گردد.
دستور scontrol یا سایر دستورهای کلاینت Slurm را که فراخوانی روال از دور به slurmctld ارسال میکنند، در حلقههای اسکریپتهای شل یا دیگر برنامهها اجرا نکنید. اطمینان حاصل کنید که برنامهها فراخوانیهای scontrol را به حداقل میزان لازم برای گردآوری اطلاعات مورد نظر محدود میکنند.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
برخی از گزینههای scontrol را میتوان از طریق متغیرهای محیطی مقداردهی کرد. این متغیرهای محیطی، به همراه گزینههای متناظرشان، در زیر فهرست شدهاند. (توجه: گزینههای خط فرمان همواره بر این تنظیمات اولویت خواهند داشت.)
- SCONTROL_ALL
- -a, --all
- SCONTROL_FEDERATION
- --federation
- SCONTROL_FUTURE
- -F, --future
- SCONTROL_LOCAL
- --local
- SCONTROL_SIBLING
- --sibling
- SLURM_BITSTR_LEN
- طول رشتهای را که برای نگهداری عبارت شناسهٔ تسک (task ID) در یک آرایهٔ کار (job array) استفاده میشود، مشخص میکند. مقدار پیشفرض 64 بایت است. مقدار 0 کل عبارت را با هر طولی که لازم باشد چاپ خواهد کرد. مقادیر بزرگتر ممکن است تأثیر منفی بر کارایی برنامه بگذارند.
- SLURM_CLUSTERS
- مشابه --clusters
- SLURM_CONF
- مسیر فایل پیکربندی Slurm.
- SLURM_CONF_OUT
- هنگام اجرای 'write config'، مسیری را که فایل پیکربندی Slurm باید در آن نوشته شود مشخص میکند.
- SLURM_DEBUG_FLAGS
- پرچمهای اشکالزدایی مورد استفاده توسط scontrol را مشخص میکند. برای دیدن فهرست کامل پرچمها به بخش DebugFlags در صفحهٔ راهنمای slurm.conf(5) مراجعه کنید. این متغیر محیطی بر تنظیمات موجود در slurm.conf تقدم دارد.
- SLURM_JSON
- کنترل سریالسازی JSON:
- compact
- تولید خروجی JSON تا حد امکان فشرده.
- pretty
- تولید خروجی JSON در قالبی خوانا و زیبا (pretty) برای درک بهتر آن.
- SLURM_TIME_FORMAT
- قالب مورد
استفاده
برای گزارش
برچسبهای
زمانی را
مشخص
میکند.
مقدار standard،
که مقدار
پیشفرض
است، خروجی
را به صورت
"year-month-dateThour:minute:second"
تولید
میکند.
مقدار relative
چنانچه
تاریخ
مربوط به
روز جاری
باشد، تنها
"hour:minute:second" را
برمیگرداند.
برای سایر
تاریخها
در سال
جاری، "hour:minute"
را چاپ
میکند که
پیش از آن
"Tomorr" (فردا)،
"Ystday" (دیروز)،
نام روز
برای هفتهٔ
پیشرو
(مانند "Mon"،
"Tue" و غیره)،
و در غیر
این صورت
تاریخ
(مانند "25 Apr")
درج میشود.
برای
سالهای
دیگر، روز،
ماه و سال
را بدون
زمان
برمیگرداند
(مانند "6 Jun 2012").
تمامی
برچسبهای
زمانی از
قالب ۲۴
ساعته
استفاده
میکنند.
همچنین میتوان یک قالب معتبر برای strftime() مشخص کرد. برای نمونه، مقدار "%a %T" روز هفته و برچسب زمانی را گزارش خواهد کرد (مانند "Mon 12:34:56").
- SLURM_TOPO_LEN
- حداکثر اندازهٔ خط را هنگام چاپ وضعیت توپولوژی (Topology) مشخص میکند. در صورت عدم تنظیم، مقدار پیشفرض نامحدود است.
- SLURM_YAML
- کنترل سریالسازی YAML:
اسلورم (Slurm)
بهطور کلی
کاربران را
به سه سطح
مجوز (سطح
دسترسی)
طبقهبندی
میکند:
- مدیران (Administrators)
شامل root، SlurmUser و
هر کاربری
با "AdminLevel=Administrator"
هستند.
- کاربران
دارای
امتیاز (Privileged Users)
شامل تمام
مدیران و هر
کاربری با
"AdminLevel=Operator" هستند.
- مالکان
مؤثر (Effective Owners) یک
کار (job) یا گام
(step) شامل مالک
مستقیم و
تمام
هماهنگکنندههای
(Coordinators) حساب
مربوطه
هستند.
توجه داشته باشید که پیکربندی AdminLevels یا Coordinators مستلزم استفاده از SlurmDBD است. سطوح مجوز مورد نیاز برای اجرای دستورهای مختلف در جدول زیر مشخص شده است.
scontrol update job:
کاربر
دارای
امتیاز یا
مالک مؤثر
scontrol requeue: کاربر
دارای
امتیاز یا
مالک مؤثر
scontrol update step: کاربر
دارای
امتیاز یا
مالک مؤثر
scontrol suspend: کاربر
دارای
امتیاز یا
هماهنگکننده
(Coordinator)
scontrol resume: کاربر
دارای
امتیاز یا
هماهنگکننده
(Coordinator)
scontrol notify: کاربر Root،
SlurmUser یا مالک
مستقیم
scontrol write batch_script:کاربر
دارای
امتیاز یا
مالک
مستقیم
scontrol create node: مدیر
(Admin)
scontrol update node: مدیر (Admin)
scontrol delete node: مدیر (Admin)
scontrol create partition: مدیر
(Admin)
scontrol update partition: مدیر (Admin)
scontrol delete partition: مدیر (Admin)
scontrol create
reservation:کاربر
دارای
امتیاز (Privileged)
scontrol update reservation:کاربر
دارای
امتیاز (Privileged)
scontrol delete reservation:کاربر
دارای
امتیاز (Privileged)
scontrol reconfig: مدیر (Admin)
scontrol shutdown: مدیر (Admin)
scontrol takeover: مدیر (Admin)
دستورهای scontrol show بهطور پیشفرض در دسترس همه کاربران هستند. اگر هرگونه محدودیت PrivateData در فایل slurm.conf تعریف شده باشد، برای دسترسی به دادههای مربوطه سطوح مجوز ذکر شده الزامی خواهد بود.
scontrol show job(s):
کاربر
دارای
امتیاز یا
مالک مؤثر
scontrol show step(s): کاربر
دارای
امتیاز یا
مالک مؤثر
scontrol show node:
کاربر
دارای
امتیاز (Privileged)
scontrol show host*: کاربر
دارای
امتیاز (Privileged)
scontrol show partition:
کاربر
دارای
امتیاز (Privileged)
scontrol show reservation: کاربر
دارای
امتیاز یا
دارای
دسترسی (Privileged
یا Access)
scontrol show assoc_mgr: برای جزئیات به شرح assoc_mgr مراجعه کنید
مثالها (EXAMPLES)
$ scontrol scontrol: show part debug PartitionName=debug AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL AllocNodes=ALL Default=YES QoS=N/A DefaultTime=NONE DisableRootJobs=NO Exclusive=NO GraceTime=0 Hidden=NO MaxNodes=UNLIMITED MaxTime=UNLIMITED MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED MaxCPUsPerSocket=UNLIMITED NodeSets=ALL Nodes=snowflake[0-48] PriorityJobFactor=100 PriorityTier=100 RootOnly=NO ReqResv=NO OverSubscribe=NO OverTimeLimit=NONE PreemptMode=REQUEUE State=UP TotalCPUs=588 TotalNodes=49 SelectTypeParameters=NONE JobDefaults=(null) DefMemPerNode=UNLIMITED MaxMemPerNode=UNLIMITED TRES=cpu=588,mem=1204224M,node=49,billing=49 scontrol: update PartitionName=debug MaxTime=60:00 MaxNodes=4 scontrol: show job 71701 JobId=71701 Name=hostname UserId=da(1000) GroupId=da(1000) Priority=66264 Account=none QOS=normal WCKey=*123 JobState=COMPLETED Reason=None Dependency=(null) TimeLimit=UNLIMITED Requeue=1 Restarts=0 BatchFlag=0 ExitCode=0:0 SubmitTime=2010-01-05T10:58:40 EligibleTime=2010-01-05T10:58:40 StartTime=2010-01-05T10:58:40 EndTime=2010-01-05T10:58:40 SuspendTime=None SecsPreSuspend=0 Partition=debug AllocNode:Sid=snowflake:4702 ReqNodeList=(null) ExcNodeList=(null) NodeList=snowflake0 NumNodes=1 NumCPUs=10 CPUs/Task=2 ReqS:C:T=1:1:1 MinCPUsNode=2 MinMemoryNode=0 MinTmpDiskNode=0 Features=(null) Reservation=(null) OverSubscribe=OK Exclusive=NO Contiguous=0 Licenses=(null) Network=(null) scontrol: update JobId=71701 TimeLimit=30:00 Priority=500 scontrol: show hostnames tux[1-3] tux1 tux2 tux3 scontrol: create res StartTime=2009-04-01T08:00:00 Duration=5:00:00 Users=dbremer NodeCnt=10 Reservation created: dbremer_1 scontrol: update Reservation=dbremer_1 Flags=Maint NodeCnt=20 scontrol: delete Reservation=dbremer_1 scontrol: quit حق نشر (C) 2002-2007 متعلق به The Regents of the University of California. تولیدشده در Lawrence Livermore National Laboratory (به DISCLAIMER مراجعه کنید). حق نشر (C) 2008-2010 متعلق به Lawrence Livermore National Security. حق نشر (C) 2010-2022 متعلق به SchedMD LLC.
این فایل بخشی از Slurm، یک برنامه مدیریت منابع است. برای جزئیات بیشتر، <https://slurm.schedmd.com> را ببینید.
برنامه Slurm یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط پروانه عمومی همگانی گنو (GNU General Public License) منتشرشده توسط بنیاد نرمافزارهای آزاد (Free Software Foundation)؛ چه نسخهٔ ۲ پروانه و چه (به انتخاب خودتان) هر نسخهٔ بعدی دیگری بازتوزیع کرده و/یا تغییر دهید.
برنامه Slurm با این امید که مفید واقع شود توزیع شده است، اما بدون هیچگونه ضمانتی؛ حتی بدون ضمانت ضمنی قابلیت فروش یا تناسب با یک هدف خاص. برای جزئیات بیشتر به پروانه عمومی همگانی گنو مراجعه کنید.
فایلها (FILES)
/etc/slurm.conf
همچنین ببینید (SEE ALSO)
scancel(1), sinfo(1), squeue(1), slurm_create_partition (3), slurm_delete_partition (3), slurm_load_ctl_conf (3), slurm_load_jobs (3), slurm_load_node (3), slurm_load_partitions (3), slurm_reconfigure (3), slurm_requeue (3), slurm_resume (3), slurm_shutdown (3), slurm_suspend (3), slurm_takeover (3), slurm_update_job (3), slurm_update_node (3), slurm_update_partition (3), slurm.conf(5), slurmctld(8)
| Slurm Commands | Slurm 26.05 |