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." نام‌گذاری شده و در همان دایرکتوری فایل اصلی "slurm.conf" قرار خواهد گرفت. برای انجام این کار، دایرکتوری حاوی slurm.conf اصلی باید قابل نوشتن باشد. گزینه‌ها (OPTIONS) -a, --all هنگامی که دستور show استفاده می‌شود، تمامی پارتیشن‌ها، کارها و گام‌های کاری آن‌ها نمایش داده می‌شوند. این گزینه باعث می‌شود اطلاعات مربوط به پارتیشن‌هایی که به عنوان مخفی پیکربندی شده‌اند و پارتیشن‌هایی که برای گروه کاربر در دسترس نیستند نیز نمایش داده شوند. -M, --clusters= خوشه‌ای که دستورها باید به آن ارسال شوند. تنها یک نام خوشه را می‌توان مشخص کرد. توجه داشته باشید که برای کارکرد صحیح این گزینه، slurmdbd باید فعال باشد، مگر اینکه اجرا در یک فدراسیون با پیکربندی FederationParameters=fed_display یا تنظیم گزینهٔ --federation انجام شود. این گزینه به طور ضمنی گزینهٔ --local را تنظیم می‌کند. -d, --details باعث می‌شود دستور show در صورت وجود، جزئیات بیشتری را ارائه دهد. --federation در صورت عضویت در یک فدراسیون، کارهای مربوط به فدراسیون را گزارش می‌دهد. -F, --future گره‌ها را در وضعیت FUTURE گزارش می‌دهد. -h, --help یک پیام راهنما برای شرح نحوهٔ استفاده از scontrol چاپ می‌کند. --hide اطلاعات مربوط به پارتیشن‌های مخفی، کارها و گام‌های کاری آن‌ها را نمایش نمی‌دهد. به‌طور پیش‌فرض، نه پارتیشن‌های پیکربندی‌شده به عنوان مخفی و نه پارتیشن‌های غیرقابل‌دسترس برای گروه کاربر نمایش داده نخواهند شد (یعنی این رفتار پیش‌فرض است). --json, --json=list, --json= استخراج اطلاعات به صورت JSON با استفاده از افزونهٔ پیش‌فرض data_parser یا data_parser مشخص با پارامترها. تمام اطلاعات استخراج می‌شوند، حتی مواردی که به‌طور معمول نمایش داده نمی‌شوند. آرگومان‌های مرتب‌سازی و قالب‌بندی ارسالی به گزینه‌های دیگر نادیده گرفته می‌شوند؛ با این حال، بیشتر آرگومان‌های فیلترسازی همچنان اعمال می‌شوند. این گزینه برای تمامی دستورها در دسترس نیست. این گزینه به طور ضمنی گزینهٔ --details را تنظیم می‌کند. --local تنها اطلاعات محلی مربوط به این خوشه را نمایش می‌دهد. در صورت عضویت در یک فدراسیون، سایر خوشه‌ها را نادیده می‌گیرد. بر --federation اولویت دارد. -o, --oneliner اطلاعات را در قالب یک خط به ازای هر رکورد چاپ می‌کند. -Q, --quiet هیچ پیام هشدار یا اطلاعیه‌ای چاپ نمی‌کند، تنها پیام‌های خطای مهلک را نمایش می‌دهد. --sibling تمامی کارهای همزاد (sibling jobs) را در یک خوشهٔ فدراسیونی نمایش می‌دهد. به طور ضمنی گزینهٔ --federation را به همراه دارد. -u, --uid= تلاش می‌کند یک کار را به‌جای شناسهٔ کاربری فراخواننده، به عنوان کاربر به‌روزرسانی کند. -v, --verbose ثبت تفصیلی رویدادها را چاپ می‌کند. استفاده از چندین '-v' سطح تفصیل گزارش‌گیری را بیشتر افزایش می‌دهد. به‌طور پیش‌فرض تنها خطاها نمایش داده خواهند شد. -V , --version اطلاعات نسخه را چاپ کرده و خارج می‌شود. --yaml, --yaml=list, --yaml= استخراج اطلاعات به صورت YAML با استفاده از افزونهٔ پیش‌فرض data_parser یا data_parser مشخص با پارامترها. تمام اطلاعات استخراج می‌شوند، حتی مواردی که به‌طور معمول نمایش داده نمی‌شوند. آرگومان‌های مرتب‌سازی و قالب‌بندی ارسالی به گزینه‌های دیگر نادیده گرفته می‌شوند؛ با این حال، بیشتر آرگومان‌های فیلترسازی همچنان اعمال می‌شوند. این گزینه برای تمامی دستورها در دسترس نیست. این گزینه به طور ضمنی گزینهٔ --details را تنظیم می‌کند. cancel_reboot لغو راه‌اندازی‌های مجدد معلق روی گره‌ها. اگر گره در اثر یک راه‌اندازی مجدد ASAP تخلیه شده باشد (drained)، گره از حالت تخلیه خارج شده (undrain) و دلیل آن پاک می‌شود. create ایجاد یک گره، پارتیشن یا رزرو جدید. فهرست کامل پارامترها را در ادامه ببینید. completing نمایش همهٔ کارهای در وضعیت COMPLETING به همراه گره‌های مرتبط که در وضعیت COMPLETING یا DOWN هستند. delete حذف مدخل با SPECIFICATION مشخص‌شده. گزینه‌های SPECIFICATION زیر در دسترس هستند: NodeName= نام گره یا فهرستی از نام‌های گره‌ها برای حذف. تنها گره‌های پویایی که هیچ کار در حال اجرایی ندارند و بخشی از یک رزرو نیستند، قابل حذف هستند. چندین نام گره را می‌توان با استفاده از عبارت‌های بازه‌ای ساده برای گره‌ها مشخص کرد (مانند “lx[10-20]”). مجموعه‌گره‌ها (Nodesets) را نیز می‌توان به‌تنهایی یا همراه با عبارت‌های بازه‌ای گره، با استفاده از ویرگول به عنوان جداکننده فهرست، مشخص کرد. اگر کلمهٔ کلیدی “ALL” به‌تنهایی مشخص شود، عملیات حذف برای تمام گره‌های کلاستر محلی تلاش خواهد شد (و برای گره‌هایی که واجد شرایط حذف نیستند، با شکست مواجه می‌شود). PartitionName= نام پارتیشن برای حذف. پارتیشن نباید هیچ کار مرتبط در حال اجرا یا معلقی داشته باشد، در غیر این صورت درخواست رد می‌شود. ممکن است تغییر دادن کارهای معلق یا تغییر وضعیت پارتیشن از قبل مفید باشد. توجه داشته باشید که اگر این پارتیشن در فایل slurm.conf موجود باشد، در دفعهٔ بعدی که کنترل‌کننده راه‌اندازی مجدد یا بازپیکربندی شود، دوباره ایجاد خواهد شد. ReservationName= نام رزرو برای حذف. رزرو نباید هیچ کار مرتبطی داشته باشد، در غیر این صورت درخواست رد می‌شود. ممکن است تغییر دادن کارهای معلق به‌گونه‌ای که از رزرو استفاده نکنند مفید باشد. همچنین می‌توانید حذف رزرو را از قبل با تنظیم EndTime یا Duration برنامه‌ریزی کنید. یک کاربر ممتاز می‌تواند هر رزروی را حذف کند. یک کاربر غیرممتاز ممکن است بتواند رزروی را که به آن دسترسی دارد حذف کند، مشروط بر اینکه SlurmctldParameters=user_resv_delete در slurm.conf تنظیم شده باشد یا Flags=USER_DELETE روی رزرو تنظیم شده باشد. errnumstr با دریافت یک شماره خطای Slurm، یک رشتهٔ توصیفی برمی‌گرداند. fsdampeningfactor تنظیم FairShareDampeningFactor در slurmctld. getaddrs دریافت آدرس‌های IP مربوط به از slurmctld. getent [] چاپ موجودیت‌ها (کاربران و گروه‌ها) مرتبط با هر گام در حال اجرا روی میزبانی که این دستور را فراخوانی می‌کند. این دستور با تمام slurmstepdهای در حال اجرای محلی ارتباط برقرار می‌کند و با slurmctld ارتباطی برقرار نمی‌کند. در صورت استفاده از --enable-multiple-slurmd، از استفاده کنید. نکته: این دستور برای هیچ گامی که در زمان فعال بودن LaunchParameters=disable_send_gids در slurm.conf راه‌اندازی شده باشد کار نخواهد کرد. help نمایش توضیحی دربارهٔ گزینه‌ها و دستورهای scontrol. hold جلوگیری از شروع یک کار معلق (اولویت آن را روی ۰ تنظیم می‌کند). آرگومان job_list فهرستی جداشده با فاصله از شناسه‌های کار (عددی یا SLUID) یا “jobname=” به همراه نام کار است که برای نگه‌داشتن همهٔ کارهای دارای آن نام تلاش می‌کند. تنها یک کاربر ممتاز، هماهنگ‌کنندهٔ حساب یا مالک کار می‌تواند کارها را نگه دارد. اگر توسط یک کاربر ممتاز صادر شود، یک admin-hold روی کار اعمال می‌شود، در غیر این صورت یک user-hold روی کار اعمال خواهد شد. نوع نگه‌داشت تعیین می‌کند کدام کاربران می‌توانند با دستور release آن را آزاد کنند (همچنین uhold را ببینید). علاوه بر این، تلاش برای نگه‌داشتن یک کار در حال اجرا، آن را معلق یا لغو نخواهد کرد؛ اما اولویت کار را روی ۰ قرار داده و فیلد دلیل کار را به‌روزرسانی می‌کند، که در صورت صف‌بندی مجدد کار در زمانی دیگر، کار در حالت نگه‌داشته قرار خواهد گرفت. listjobs [] چاپ کارهای در حال اجرا روی میزبانی که این دستور را اجرا می‌کند. این دستور با تمام slurmstepdهای در حال اجرای محلی تماس می‌گیرد و با slurmctld تماسی برقرار نمی‌کند. در صورت استفاده از --enable-multiple-slurmd از استفاده کنید. listpids [[.]] [] چاپ شناسه‌های فرایند (PIDها) در یک گام کار (اگر JOBID.STEPID ارائه شده باشد)، یا تمام گام‌های یک کار (اگر job_id ارائه شده باشد)، یا تمام گام‌های تمام کارها روی گره محلی (اگر job_id ارائه نشده باشد یا job_id برابر “*” باشد). این دستور تنها برای فرایندهای روی گره‌ای که scontrol بر روی آن اجرا شده و تنها برای فرایندهای ایجادشده توسط Slurm و نوادگان آن‌ها کار خواهد کرد. توجه داشته باشید که برخی از پیکربندی‌های Slurm (مقدار pgid برای ProctrackType) قادر به شناسایی همهٔ فرایندهای مرتبط با یک کار یا گام کار نیستند. توجه داشته باشید که گزینهٔ NodeName فقط زمانی واقعاً مفید است که چندین دیمون slurmd روی همان ماشین میزبان اجرا شده باشند. چندین دیمون slurmd روی یک میزبان عموماً فقط توسط توسعه‌دهندگان Slurm استفاده می‌شود. liststeps [] چاپ گام‌های در حال اجرا روی میزبانی که این دستور را اجرا می‌کند. این دستور با تمام slurmstepdهای در حال اجرای محلی تماس می‌گیرد و با slurmctld تماسی برقرار نمی‌کند. در صورت استفاده از --enable-multiple-slurmd از استفاده کنید. notify ارسال یک پیام به خطای استاندارد دستور salloc یا srun یا کار دسته‌ای (batch job) مرتبط با job_id مشخص‌شده. pidinfo چاپ شناسهٔ کار Slurm و زمان خاتمهٔ زمان‌بندی‌شدهٔ متناظر با شناسهٔ فرایند ارائه‌شده، proc_id، روی گره فعلی. این دستور تنها روی فرایندهای گره‌ای که scontrol بر روی آن اجرا شده و فقط برای فرایندهای ایجادشده توسط Slurm و نوادگان آن‌ها کار خواهد کرد. ping ارسال پینگ به دیمون‌های اولیه و ثانویهٔ slurmctld و گزارش اینکه آیا پاسخ می‌دهند یا خیر. اگر --clusters مشخص شده باشد، فقط دیمون اصلی slurmctld کلاستر مشخص‌شده را پینگ می‌کند. power {up|down} [asap|force] {ALL||} [Action=] [Reason=] کنترل وضعیت برق (power) فهرست/مجموعه گره ارائه‌شده. برای 'power down'، پرچم اختیاری ASAP به درخواست خاموش‌سازی اضافه خواهد شد، اما در غیر این صورت برای درخواست‌های power up رد می‌شود. تمام آرگومان‌ها به جز فهرست/مجموعه گره، بدون حساسیت به حروف بزرگ و کوچک پردازش خواهند شد. مقدار اختیاری reason تنها هنگام خاموش کردن (power down) می‌تواند مشخص شود. اگر “action” تنظیم شده باشد، PowerAction با نام مشخص‌شده به جای ResumeProgram یا SuspendProgram پیکربندی‌شده برای این درخواست استفاده خواهد شد. کنش‌های power up باید با Location=slurmctld پیکربندی شوند. این زیردستور، کاربرد قبلی دستور update در scontrol را منسوخ می‌کند: scontrol update NodeName= 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=][action=] {ALL||} هنگامی که گره‌های سیستم بیکار (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 " یا تنظیم وضعیت گره روی "CANCEL_REBOOT" لغو کرد. اگر گره‌ای ظرف مدت ResumeTimeout بازراه‌اندازی نشود، وضعیت آن "DOWN" علامت‌گذاری خواهد شد. reconfigure به تمام دیمن‌های slurmctld و slurmd دستور می‌دهد که فایل پیکربندی را دوباره بخوانند. این سازوکار می‌تواند برای تغییر پارامترهای پیکربندی تعیین‌شده در slurm.conf(5) بدون قطع کارهای در حال اجرا استفاده شود. از نسخه 23.11 به بعد، این دستور با ایجاد فرآیندهای جدید برای دیمن‌ها عمل می‌کند، سپس در صورت شروع موفقیت‌آمیز، کنترل را به فرآیندهای جدید منتقل می‌نماید. این قابلیت اجازه می‌دهد تا مشکلات پیکربندی به‌خوبی مهار شوند و در صورت بروز خطا، اجرای برنامه با پیکربندی قبلی ادامه یابد. این دستور قادر به تغییر تنظیمات پورت شنود TCP یا سازوکار احراز هویت دیمن‌ها نخواهد بود. release کاری را که قبلاً نگه داشته شده بود (held) برای آغاز اجرا آزاد می‌کند. آرگومان job_list فهرستی از شناسه کارهای جداشده با فاصله (عددی یا SLUID) یا "jobname=" همراه با نام کار است که تلاش می‌کند تمام کارهای دارای آن نام را آزاد نماید. توجه داشته باشید که یک کاربر ممتاز می‌تواند admin-hold یا user-hold را آزاد کند. یک مالک یا هماهنگ‌کننده غیرممتاز کار تنها می‌تواند user-hold را آزاد کند. همچنین ببینید hold. requeue [