strigger(1) Slurm Commands strigger(1)

strigger - برای تنظیم، دریافت یا پاک‌سازی اطلاعات تریگرهای Slurm استفاده می‌شود.

strigger --set [OPTIONS...]
strigger --get [OPTIONS...]
strigger --clear [OPTIONS...]

دستور strigger برای تنظیم، دریافت یا پاک‌سازی اطلاعات تریگرهای Slurm به‌کار می‌رود. تریگرها شامل رویدادهایی نظیر از کار افتادن یک گره، رسیدن یک کار به محدودیت زمانی خود، یا پایان یافتن یک کار هستند. این رویدادها می‌توانند اقداماتی مانند اجرای یک اسکریپت دلخواه را راه‌اندازی کنند. از کاربردهای متداول می‌توان به اطلاع‌رسانی خرابی گره‌ها به مدیران سیستم و پایان دادن مسالمت‌آمیز به یک کار در هنگام نزدیک شدن به محدودیت زمانی آن اشاره کرد. یک عبارت hostlist برای فهرست گره‌ها یا شناسه کار به‌عنوان آرگومان به برنامه ارسال می‌شود.

رویدادهای تریگر به‌صورت آنی پردازش نمی‌شوند، بلکه بررسی رویدادهای تریگر به‌طور دوره‌ای (در حال حاضر هر ۱۵ ثانیه یک‌بار) انجام می‌پذیرد. هر رویداد تریگری که در طول این بازه زمانی رخ دهد، در پایان بازه با برنامه‌های تریگر تنظیم‌شده مقایسه خواهد شد. برنامه تریگر برای هر رویدادی که در آن بازه رخ دهد، یک‌بار اجرا خواهد شد. سپس سابقه آن رویدادها (برای مثال، گره‌هایی که در ۱۵ ثانیه گذشته به وضعیت DOWN رفته‌اند) پاک خواهد شد. برنامه تریگر برای اطمینان از اینکه هیچ رویدادی از دست نرود، باید پیش از پایان بازه بعدی یک تریگر جدید تنظیم کند، یا اینکه تریگر باید با آرگومان «--flags=PERM» ایجاد شده باشد. در صورت تمایل، می‌توان چندین برنامه تریگر را برای یک رویداد یکسان تنظیم کرد.

نکته: این دستور تنها زمانی می‌تواند تریگرها را تنظیم کند که توسط کاربر SlurmUser اجرا شود، مگر اینکه SlurmUser به‌عنوان کاربر root پیکربندی شده باشد. این امر برای دیمن slurmctld ضروری است تا بتواند شناسه‌های کاربری و گروهی مناسب را برای برنامه در حال اجرا تنظیم کند. همچنین توجه داشته باشید که برنامه تریگر بر روی همان گره‌ای اجرا می‌شود که دیمن slurmctld استفاده می‌کند، نه بر روی یک گره محاسباتی تخصیص‌یافته. برای بررسی مقدار SlurmUser، دستور زیر را اجرا کنید:

scontrol show config | grep SlurmUser

فعال‌سازی رویداد هنگامی که slurmctld پشتیبان کنترل را در دست می‌گیرد.
فعال‌سازی یک رویداد هنگامی که slurmctld پشتیبان با شکست مواجه می‌شود.
فعال‌سازی یک رویداد هنگامی که slurmctld پشتیبان پس از شکست، عملکرد خود را از سر می‌گیرد.
فعال‌سازی رویداد هنگامی که خطای burst buffer رخ می‌دهد.
پاک‌سازی یا حذف یک تریگر رویداد که از پیش تعریف شده است. برای تعیین تریگر(های) مورد نظر جهت پاک‌سازی، باید گزینه --id، --jobid یا --user مشخص شود. تنها کاربر root یا ایجادکننده تریگر می‌تواند یک تریگر را حذف کند.
خوشه‌هایی که دستورها باید به آن‌ها ارسال شوند. توجه داشته باشید که slurmdbd باید فعال باشد تا این گزینه به‌درستی کار کند، مگر اینکه در یک فدراسیون با پیکربندی FederationParameters=fed_display اجرا شود.
فعال‌سازی یک رویداد در صورتی که گره مشخص‌شده به وضعیت DOWN برود.
فعال‌سازی یک رویداد در صورتی که گره مشخص‌شده به وضعیت DRAINED برود.
فعال‌سازی یک رویداد در صورتی که گره مشخص‌شده پیش از تبدیل شدن به DRAINED، به وضعیت DRAINING برود.
فعال‌سازی یک رویداد در صورتی که گره مشخص‌شده به وضعیت FAILING برود.
فعال‌سازی یک رویداد هنگامی که اجرای کار مشخص‌شده به پایان می‌رسد.
مرتبط ساختن پرچم‌ها با رزرو. چندین پرچم باید با کاما از یکدیگر جدا شوند. پرچم‌های معتبر عبارتند از:
دائمی کردن تریگر؛ پس از وقوع رویداد آن را پاک نکنید.
نمایش تریگرهای رویداد ثبت‌شده. می‌توان از گزینه‌ها برای اهداف فیلتر کردن استفاده کرد.
شماره شناسه (ID) تریگر.
فعال‌سازی یک رویداد در صورتی که گره مشخص‌شده حداقل به مدت زمان تعیین‌شده توسط گزینه --offset در وضعیت IDLE باقی بماند. این گزینه می‌تواند برای به خواب بردن (hibernate) گره‌ای که بی‌کار مانده و در نتیجه کاهش مصرف برق مفید باشد.
شناسه کار (Job ID) مورد نظر. به‌جای شناسه عددی کار، می‌توان از یک SLUID نیز استفاده کرد. مقدار RES_ID به همان صورتی که مشخص شده است ذخیره می‌شود. اگر برای تنظیم تریگر از SLUID استفاده شود، تریگر باید با همان SLUID پرس‌وجو یا پاک شود، نه با شناسه عددی کار (و برعکس). نکته: گزینه --jobid نمی‌تواند همراه با گزینه --node استفاده شود. هنگامی که گزینه --jobid در ترکیب با گزینه --up یا --down استفاده شود، تمام گره‌های تخصیص‌یافته به آن کار به‌عنوان گره‌های استفاده‌شده برای رویداد تریگر در نظر گرفته می‌شوند.
نام میزبان(های) مورد نظر. به‌طور پیش‌فرض، تمام گره‌های مرتبط با کار (در صورت مشخص بودن --jobid) یا موجود در سامانه برای تریگرهای رویداد در نظر گرفته می‌شوند. نکته: گزینه --node نمی‌تواند همراه با گزینه --jobid استفاده شود. هنگامی که گزینه --jobid در ترکیب با گزینه --up، --down یا --drained استفاده شود، تمام گره‌های تخصیص‌یافته به آن کار به‌عنوان گره‌های استفاده‌شده برای رویداد تریگر در نظر گرفته خواهند شد. از آنجا که آرگومان این گزینه اختیاری است، برای تجزیه صحیح، مقدار باید بلافاصله پس از گزینه تک‌حرفی بیاید و فاصله‌ای میان آن‌ها نباشد؛ برای مثال «-ntux» و نه «-n tux».
هنگام نمایش فهرست تریگرها، سربرگ چاپ نشود.
اقدام مشخص‌شده باید پس از گذشت این فاصله زمانی از رویداد انجام شود. در صورتی که اقدام باید پیش از رویداد انجام پذیرد، مقداری منفی مشخص کنید. اگر هیچ گزینه --offset مشخص نشده باشد، مقدار پیش‌فرض صفر است. دقت تفکیک زمانی این مقدار حدود ۲۰ ثانیه است؛ بنابراین برای اجرای یک اسکریپت در زمانی نه کمتر از پنج دقیقه پیش از رسیدن کار به محدودیت زمانی‌اش، مقدار --offset=320 (۵ دقیقه به‌علاوه ۲۰ ثانیه) را مشخص کنید.
فعال‌سازی یک رویداد هنگامی که پایگاه داده اصلی با شکست مواجه می‌شود. این رویداد زمانی فعال می‌شود که افزونه حساب‌رسی (accounting plugin) تلاش می‌کند اتصالی با mysql برقرار کند اما با شکست مواجه می‌شود و slurmctld برای برخی از عملیات خود به پایگاه داده نیاز دارد.
فعال‌سازی یک رویداد هنگامی که پایگاه داده اصلی پس از شکست، عملکرد خود را از سر می‌گیرد. این امر زمانی رخ می‌دهد که اتصال به mysql از سوی افزونه حساب‌رسی بازیابی شود. -g, --primary_slurmdbd_failure هنگامی که slurmdbd اصلی از کار بیفتد، رویدادی را فعال می‌کند. این محرک توسط slurmctld در مواقعی اجرا می‌شود که تلاش می‌کند به slurmdbd متصل شود، اما هیچ پاسخی روی سوکت دریافت نمی‌کند.
هنگامی که slurmdbd اصلی پس از یک خرابی فعالیت خود را از سر می‌گیرد، رویدادی را فعال می‌کند. این رویداد زمانی فعال می‌شود که برقراری اتصال از slurmctld به slurmdbd منجر به دریافت پاسخ شود. این امر می‌تواند در شرایط مختلف دیگری نیز رخ دهد، به‌صورت دوره‌ای هر ۱۵ ثانیه هنگام بررسی وضعیت اتصال، هنگام ذخیره وضعیت، زمانی که صف کارگزار (agent) در حال پر شدن است و موارد دیگر.
هنگامی که بافر حسابداری slurmctld اصلی پر شود، رویدادی را فعال می‌کند.
هنگامی که slurmctld اصلی از کار بیفتد، رویدادی را فعال می‌کند.
هنگامی که slurmctld اصلی کنترل را از سر بگیرد، رویدادی را فعال می‌کند.
هنگامی که slurmctld اصلی پس از یک خرابی فعالیت خود را از سر بگیرد، رویدادی را فعال می‌کند.
هنگام وقوع رویداد، برنامه را در مسیر کامل (fully qualified pathname) مشخص‌شده اجرا می‌کند. در صورت تمایل می‌توانید مسیر را در علامت نقل‌قول قرار داده و آرگومان‌های اضافی برنامه را اضافه کنید. برنامه با هویت کاربری که محرک را تنظیم کرده است اجرا خواهد شد. اگر برنامه ظرف مدت ۵ دقیقه خاتمه نیابد، به همراه تمام فرایندهای ایجادشده متوقف (kill) خواهد شد.
خطاهای غیرمهلک (non-fatal) را گزارش نمی‌کند. این گزینه می‌تواند برای پاکسازی محرک‌هایی که ممکن است قبلاً حذف شده باشند مفید باشد.
هنگامی که پیکربندی سیستم تغییر کند، رویدادی را فعال می‌کند. این رویداد زمانی فعال می‌شود که دیمن slurmctld فایل پیکربندی خود را می‌خواند یا زمانی که وضعیت یک گره (node) تغییر می‌کند.
اگر گره مشخص‌شده در وضعیت RESUME قرار گیرد، رویدادی را فعال می‌کند.
یک محرک رویداد را بر اساس گزینه‌های ارائه‌شده ثبت می‌کند. توجه: هر رویداد تنها یک بار فعال می‌شود. برای پردازش رویدادهای بعدی از همان نوع، باید یک محرک رویداد جدید تنظیم و برقرار شود. محرک‌ها تنها در صورتی قابل تنظیم هستند که دستور توسط کاربر SlurmUser اجرا شود، مگر اینکه SlurmUser به عنوان کاربر ریشه (root) پیکربندی شده باشد.
هنگامی که محدودیت زمانی کار (job) مشخص‌شده فرا برسد، رویدادی را فعال می‌کند. این گزینه باید همراه با گزینه --jobid استفاده شود.
اگر گره مشخص‌شده از وضعیت DOWN به وضعیت سرویس‌دهی بازگردد، رویدادی را فعال می‌کند.
محرک‌های ایجادشده توسط کاربر مشخص‌شده را پاک کرده یا دریافت می‌کند. به عنوان مثال، محرکی که توسط کاربر root برای کاری ایجادشده توسط کاربر adam ساخته شده است، می‌تواند با گزینه --user=root پاک شود. یک نام کاربری یا شناسه کاربری (user ID) را مشخص کنید.
گزارش‌گیری مفصل رویدادها را چاپ می‌کند. این شامل برچسب‌های زمانی روی ساختارهای داده، شمارش رکوردها و غیره است.
اطلاعات نسخه را چاپ کرده و خارج می‌شود.

شماره شناسه محرک (Trigger ID).
نوع منبع: job یا node
شناسه منبع: شناسه job، نام‌های میزبان یا "*" برای هر میزبانی
نوع محرک: time یا fini (تنها برای کارها)، down یا up (برای کارها یا گره‌ها)، یا drained، idle یا reconfig (تنها برای گره‌ها)
انحراف زمانی (offset) بر حسب ثانیه. اعداد منفی نشان می‌دهند که اقدام باید قبل از رویداد رخ دهد (در صورت امکان)
نام کاربری که اقدام را درخواست کرده است
مسیر برنامه‌ای که باید هنگام وقوع رویداد اجرا شود

اجرای strigger یک فراخوانی روال از راه دور (remote procedure call) به slurmctld ارسال می‌کند. اگر تعداد فراخوانی‌های هم‌زمان از سوی strigger یا سایر دستورهای کلاینت Slurm که فراخوانی روال از راه دور به دیمن slurmctld ارسال می‌کنند به حد کافی زیاد باشد، می‌تواند منجر به افت عملکرد دیمن slurmctld شده و احتمالاً به منع سرویس (denial of service) بیانجامد.

از اجرای strigger یا سایر دستورهای کلاینت Slurm که فراخوانی روال از راه دور به slurmctld ارسال می‌کنند در حلقه‌های اسکریپت‌های شل یا برنامه‌های دیگر خودداری کنید. اطمینان حاصل کنید که برنامه‌ها، فراخوانی‌های strigger را به حداقل میزان لازم برای جمع‌آوری اطلاعات مورد نظر محدود می‌کنند.

برخی از گزینه‌های strigger را می‌توان از طریق متغیرهای محیطی تعیین کرد. این متغیرهای محیطی به همراه گزینه‌های متناظرشان در زیر فهرست شده‌اند. (توجه: گزینه‌های خط فرمان همیشه این تنظیمات را بازنویسی خواهند کرد.)

مکان فایل پیکربندی Slurm.
فلگ‌های اشکال‌زدایی را برای استفاده توسط strigger مشخص می‌کند. برای مشاهده فهرست کامل فلگ‌ها، به DebugFlags در صفحه راهنمای slurm.conf(5) مراجعه کنید. این متغیر محیطی بر تنظیمات موجود در slurm.conf اولویت دارد.

اجرای برنامه "/usr/sbin/primary_slurmctld_failure" هر زمان که slurmctld اصلی دچار خرابی شود.
$ cat /usr/sbin/primary_slurmctld_failure
#!/bin/bash
# Submit trigger for next primary slurmctld failure event
strigger --set --primary_slurmctld_failure \
         --program=/usr/sbin/primary_slurmctld_failure
# Notify the administrator of the failure using e-mail
/bin/mail slurm_admin@site.com -s Primary_SLURMCTLD_FAILURE
$ strigger --set --primary_slurmctld_failure \
           --program=/usr/sbin/primary_slurmctld_failure
اجرای برنامه "/usr/sbin/slurm_admin_notify" هر زمان که هر گره‌ای در کلاستر از کار بیفتد (down شود). موضوع ایمیل شامل نام گره‌هایی خواهد بود که وارد وضعیت down شده‌اند (توسط Slurm به عنوان آرگومان به اسکریپت ارسال می‌شود).
$ cat /usr/sbin/slurm_admin_notify
#!/bin/bash
# Submit trigger for next event
strigger --set --node --down \
         --program=/usr/sbin/slurm_admin_notify
# Notify administrator using by e-mail
/bin/mail slurm_admin@site.com -s NodesDown:$*
$ strigger --set --node --down \
           --program=/usr/sbin/slurm_admin_notify
اجرای برنامه "/usr/sbin/slurm_suspend_node" هر زمان که هر گره‌ای در کلاستر دست‌کم به مدت ۶۰۰ ثانیه در وضعیت بیکار (idle) باقی بماند.
$ strigger --set --node --idle --offset=600 \
           --program=/usr/sbin/slurm_suspend_node
اجرای برنامه "/home/joe/clean_up" هنگامی که ۱۰ دقیقه تا رسیدن کار 1234 به محدودیت زمانی‌اش باقی مانده باشد.
$ strigger --set --jobid=1234 --time --offset=-600 \
           --program=/home/joe/clean_up
اجرای برنامه "/home/joe/node_died" هنگامی که هر گره اختصاص‌یافته به کار 1234 وارد وضعیت DOWN شود.
$ strigger --set --jobid=1234 --down \
           --program=/home/joe/node_died
نمایش تمام تریگرهای مرتبط با کار 1235.
$ strigger --get --jobid=1235
TRIG_ID RES_TYPE RES_ID TYPE OFFSET USER PROGRAM
    123      job   1235 time   -600  joe /home/bob/clean_up
    125      job   1235 down      0  joe /home/bob/node_died
حذف تریگر رویداد 125.
$ strigger --clear --id=125
اجرای /home/joe/job_fini پس از اتمام کار 1237.
$ strigger --set --jobid=1237 --fini --program=/home/joe/job_fini
Copyright (C) 2007 The Regents of the University of California.
تولیدشده در Lawrence Livermore National Laboratory (ر.ک. DISCLAIMER).
Copyright (C) 2008-2010 Lawrence Livermore National Security.
Copyright (C) 2010-2022 SchedMD LLC.
این فایل بخشی از Slurm، یک برنامه مدیریت منابع است.
برای جزئیات، <https://slurm.schedmd.com> را ببینید.
نرم‌افزار Slurm یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) همان‌گونه که توسط «بنیاد نرم‌افزارهای آزاد» (Free Software Foundation) منتشر شده است، بازتوزیع کرده یا تغییر دهید؛ چه نسخه ۲ پروانه، یا (به انتخاب خودتان) هر نسخه بالاتری از آن.
نرم‌افزار Slurm با این امید توزیع شده است که مفید باشد، اما بدون هیچ‌گونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر «پروانه عمومی همگانی گنو» را ببینید.

scontrol(1), sinfo(1), squeue(1)

Slurm Commands Slurm 26.05