.TH sdiag "1" "Slurm Commands" "Slurm 26.05" "Slurm Commands" .SH "نام (NAME)" sdiag \- ابزار عیب‌یابی و پایش زمان‌بندی برای Slurm .SH "خلاصه دستور (SYNOPSIS)" sdiag .SH "توضیحات (DESCRIPTION)" دستور sdiag اطلاعات مربوط به اجرای slurmctld را درباره موضوعات زیر نمایش می‌دهد: رشته‌ها (threads)، کارگزارها (agents)، کارها (jobs)، و الگوریتم‌های زمان‌بندی. هدف، به‌دست آوردن داده‌هایی از رفتار slurmctld برای کمک به تنظیم پارامترهای پیکربندی یا سیاست‌های صف‌ها است. انگیزهٔ اصلی، شناخت رفتار Slurm در سامانه‌هایی با توان عملیاتی (throughput) بالا است. .LP این دستور دارای دو حالت اجرا است. حالت پیش‌فرض \fB\-\-all\fR چندین شمارنده و آمار را نشان می‌دهد که در ادامه توضیح داده شده‌اند، و گزینهٔ اجرای دیگری به نام \fB\-\-reset\fR برای بازنشانی این مقادیر وجود دارد. .LP مقادیر به‌طور پیش‌فرض در نیمه‌شب به وقت ساعت هماهنگ جهانی (UTC) بازنشانی می‌شوند. .LP نخستین بخش اطلاعات مربوط به اجرای سراسری slurmctld است: .TP \fBServer thread count\fR تعداد رشته‌های فعال کنونی slurmctld. عدد بالا نشان‌دهنده بار کاری زیاد در پردازش رویدادهایی نظیر ثبت کارها (job submissions)، اعزام کارها (jobs dispatching)، تکمیل کارها (jobs completing) و غیره است. اگر این مقدار اغلب نزدیک به MAX_SERVER_THREADS باشد، می‌تواند نشان‌دهنده یک گلوگاه (bottleneck) بالقوه باشد. .IP .TP \fBAgent queue size\fR طراحی Slurm مقیاس‌پذیری را مد نظر داشته است و ارسال پیام‌ها به هزاران گره کاری ساده نیست. سازوکار کارگزار (agent) به کنترل بهینهٔ ارتباطات بین slurmctld و دیمن‌های slurmd با بهترین تلاش ممکن (best effort) کمک می‌کند. این مقدار بیانگر تعداد درخواست‌های خروجی RPC صف‌بندی‌شده در یک فهرست تلاش مجدد داخلی است. .IP .TP \fBAgent count\fR تعداد رشته‌های عامل (agent threads). هر یک از این رشته‌های عامل به نوبه خود می‌توانند گروهی تا سقف 2 + AGENT_THREAD_COUNT رشتهٔ فعال را در یک زمان ایجاد کنند. .IP .TP \fBAgent thread count\fR تعداد کل رشته‌های فعالی که توسط تمام رشته‌های عامل ایجاد شده‌اند. .IP .TP \fBDBD Agent queue size\fR سامانه Slurm پیام‌های ارسالی برای SlurmDBD را صف‌بندی کرده و آنها را در یک رشتهٔ جداگانه پردازش می‌کند. در صورتی که SlurmDBD یا پایگاه‌داده از کار بیفتد، این عدد افزایش خواهد یافت. حداکثر اندازهٔ صف در slurm.conf با MaxDBDMsgs پیکربندی می‌شود. اگر این مقدار شروع به رشد کرده و از نیمی از حداکثر اندازهٔ صف بیشتر شود، slurmdbd و پایگاه‌داده باید فوراً بررسی شوند. .IP .TP \fBJobs submitted\fR تعداد کارهای ثبت‌شده از زمان آخرین بازنشانی. .IP .TP \fBJobs started\fR تعداد کارهای آغاز‌شده از زمان آخرین بازنشانی. این مقدار شامل کارهای پس‌پر شده (backfilled) نیز می‌شود. .IP .TP \fBJobs completed\fR تعداد کارهای تکمیل‌شده از زمان آخرین بازنشانی. .IP .TP \fBJobs canceled\fR تعداد کارهای لغوشده از زمان آخرین بازنشانی. .IP .TP \fBJobs failed\fR تعداد کارهایی که به دلیل slurmd یا سایر مشکلات داخلی از زمان آخرین بازنشانی با شکست مواجه شده‌اند. .IP .TP \fBJob states ts:\fR برچسب زمانی (timestamp) زمان جمع‌آوری شمارش‌های وضعیت کارِ زیر را فهرست می‌کند. .IP .TP \fBJobs pending:\fR تعداد کارهای در انتظار در زمان مشخص‌شده در برچسب زمانی بالا. .IP .TP \fBJobs running:\fR تعداد کارهای در حال اجرا در زمان مشخص‌شده در برچسب زمانی بالا. .IP .LP بخش بعدی اطلاعات مربوط به الگوریتم اصلی زمان‌بندی بر اساس اولویت کارها است. یک چرخهٔ زمان‌بندی مستلزم گرفتن قفل job_write_lock و سپس تلاش برای دریافت منابع برای کارهای در انتظار است؛ از کارهایی با بیشترین اولویت شروع شده و به ترتیب نزولی پیش می‌رود. هنگامی که یک کار نتواند منابع را دریافت کند، حلقه فقط برای کارهایی که پارتیشن‌های دیگری را درخواست می‌کنند ادامه می‌یابد. کارهایی که دارای وابستگی هستند یا تحت تأثیر محدودیت‌های حساب‌ها (accounts limits) قرار دارند پردازش نمی‌شوند. .TP \fBLast cycle\fR زمان آخرین چرخهٔ زمان‌بندی به میکروثانیه. .IP .TP \fBMax cycle\fR حداکثر زمان به میکروثانیه برای هر چرخهٔ زمان‌بندی از زمان آخرین بازنشانی. .IP .TP \fBTotal cycles\fR مجموع زمان اجرا به میکروثانیه برای تمام چرخه‌های زمان‌بندی از زمان آخرین بازنشانی. زمان‌بندی به‌صورت دوره‌ای و (بسته به پیکربندی) هنگام ثبت یا تکمیل یک کار انجام می‌شود. .IP .TP \fBMean cycle\fR میانگین زمان به میکروثانیه برای تمام چرخه‌های زمان‌بندی از زمان آخرین بازنشانی. .IP .TP \fBMean depth cycle\fR میانگین عمق چرخه. عمق بیانگر تعداد کارهای پردازش‌شده در یک چرخهٔ زمان‌بندی است. .IP .TP \fBCycles per minute\fR شمارندهٔ دفعات اجرای زمان‌بندی در هر دقیقه. .IP .TP \fBLast queue length\fR طول صف کارهای در انتظار. .IP .LP بخش بعدی اطلاعات مربوط به الگوریتم زمان‌بندی پس‌پر کردن (backfilling) است. یک چرخهٔ زمان‌بندی backfilling مستلزم گرفتن قفل‌ها برای اشیاء کارها، گره‌ها و پارتیشن‌ها و سپس تلاش برای دریافت منابع برای کارهای در انتظار است. کارها بر اساس اولویت پردازش می‌شوند. اگر کاری نتواند منابع را دریافت کند، الگوریتم زمان امکان دریافت آن‌ها را محاسبه کرده و زمان شروع آینده را برای کار به دست می‌آورد. سپس کار بعدی پردازش می‌شود و الگوریتم تلاش می‌کند منابع را برای آن کار دریافت کند، اما به گونه‌ای که بر \fIکارهای قبلی\fR تأثیر نگذارد، و در صورتی که منابع فعلی در دسترس نباشد، مجدداً زمان شروع در آینده را محاسبه می‌کند. الگوریتم backfilling برای پردازش هر کار جدید زمان بیشتری می‌برد، زیرا نباید بر کارهای با اولویت بالاتر تأثیر بگذارد. خود الگوریتم تمهیداتی را برای جلوگیری از چرخهٔ اجرای طولانی و نگه‌داشتن بیش از حد تمام قفل‌ها به کار می‌گیرد. .TP \fBTotal backfilled jobs (since last slurm start)\fR تعداد کارهای آغاز‌شده با روش backfilling از زمان آخرین راه‌اندازی slurm. .IP .TP \fBTotal backfilled jobs (since last stats cycle start)\fR تعداد کارهای آغاز‌شده با روش backfilling از زمان آخرین بازنشانی آمارها. این مقادیر به‌طور پیش‌فرض در نیمه‌شب به وقت UTC بازنشانی می‌شوند. .IP .TP \fBTotal backfilled heterogeneous job components\fR تعداد مؤلفه‌های کارهای ناهمگن (heterogeneous job components) آغاز‌شده با روش backfilling از زمان آخرین راه‌اندازی Slurm. .IP .TP \fBTotal cycles\fR تعداد چرخه‌های زمان‌بندی backfill از زمان آخرین بازنشانی. .IP .TP \fBLast cycle when\fR زمان وقوع آخرین چرخهٔ زمان‌بندی backfill در قالب "weekday Month MonthDay hour:minute.seconds year" .IP .TP \fBLast cycle\fR زمان آخرین چرخهٔ زمان‌بندی backfill به میکروثانیه. تنها زمان اجرا محاسبه می‌شود و زمان خواب (sleep time) درون یک چرخهٔ زمان‌بندی هنگام اجرای طولانی‌مدت کسر می‌گردد. توجه داشته باشید که قفل‌ها در طول زمان خواب آزاد می‌شوند تا سایر کارها بتوانند ادامه یابند. .IP .TP \fBMax cycle\fR حداکثر زمان اجرای چرخهٔ زمان‌بندی backfill از زمان آخرین بازنشانی به میکروثانیه. تنها زمان اجرا محاسبه می‌شود و زمان خواب (sleep time) درون یک چرخهٔ زمان‌بندی هنگام اجرای طولانی‌مدت کسر می‌گردد. توجه داشته باشید که قفل‌ها در طول زمان خواب آزاد می‌شوند تا سایر کارها بتوانند ادامه یابند..IP .TP \fBMean cycle\fR میانگین زمان چرخه‌های زمان‌بندی backfilling بر حسب میکروثانیه از زمان آخرین بازنشانی. .IP .TP \fBLast depth cycle\fR تعداد کارهای پردازش‌شده در طول آخرین چرخهٔ زمان‌بندی backfilling. این مقدار تمام کارها را شمارش می‌کند، حتی اگر کاری به دلیل وابستگی‌ها یا محدودیت‌ها قابل شروع نباشد. .IP .TP \fBLast depth cycle (try sched)\fR تعداد کارهای پردازش‌شده در طول آخرین چرخهٔ زمان‌بندی backfilling. این مقدار تنها کارهایی را محاسبه می‌کند که شانس شروع با استفاده از منابع در دسترس را داشته باشند. این کارها نسبت به کارهایی که مشخص می‌شود به دلیل وابستگی‌ها یا محدودیت‌ها نمی‌توانند شروع شوند، زمان بیشتری از زمان‌بندی را مصرف می‌کنند. .IP .TP \fBDepth Mean\fR میانگین تعداد کارهای پردازش‌شده در تمام چرخه‌های زمان‌بندی backfilling از زمان آخرین بازنشانی. کارهایی که هنگام بررسی توسط زمان‌بند backfill فاقد شرایط لازم برای اجرا تشخیص داده شوند، شمارش نمی‌شوند (مانند کارهایی که به چند پارتیشن ارسال شده و از پیش آغاز شده‌اند، کارهایی که به محدودیت QOS یا حسابی مانند حداکثر کارهای در حال اجرا برای یک حساب رسیده‌اند، و غیره). .IP .TP \fBDepth Mean (try sched)\fR زیرمجموعه‌ای از Depth Mean که زمان‌بند backfill تلاش کرده است آن‌ها را زمان‌بندی کند. .IP .TP \fBLast queue length\fR تعداد کارهای در انتظار پردازش توسط الگوریتم backfilling. یک کار به ازای هر پارتیشنی که برای استفاده در صف آن قرار دارد، یک‌بار شمرده می‌شود. یک آرایهٔ کاری (job array) در وضعیت تعلیق به طور معمول به عنوان یک کار محاسبه می‌شود (وظایف یک آرایه کاری که پیش‌تر آغاز/مجدداً صف‌بندی شده یا به طور مجزا تغییر یافته‌اند، دارای رکوردهای کاری مستقل بوده و هر یک به عنوان یک کار جداگانه شمرده می‌شوند). .IP .TP \fBQueue length Mean\fR میانگین تعداد کارهای در انتظار پردازش توسط الگوریتم backfilling. یک کار به ازای هر پارتیشنی که درخواست کرده است، یک‌بار شمرده می‌شود. یک آرایهٔ کاری در وضعیت تعلیق به طور معمول به عنوان یک کار محاسبه می‌شود (وظایف یک آرایه کاری که پیش‌تر آغاز/مجدداً صف‌بندی شده یا به طور مجزا تغییر یافته‌اند، دارای رکوردهای کاری مستقل بوده و هر کدام به عنوان یک کار جداگانه به حساب می‌آیند). .IP .TP \fBLast table size\fR تعداد بازه‌های زمانی (time slots) متفاوتی که توسط زمان‌بند backfill در آخرین تکرار آن بررسی شده است. .IP .TP \fBMean table size\fR میانگین تعداد بازه‌های زمانی متفاوتی که توسط زمان‌بند backfill بررسی شده است. مقادیر بزرگتر، زمان مورد نیاز برای عملیات backfill را افزایش می‌دهند. اندازه جدول تحت تأثیر پارامترهای زمان‌بندی متعددی است، از جمله: bf_min_age_reserve، bf_min_prio_reserve، bf_resolution و bf_window. .IP .TP \fBLatency for 1000 calls to gettimeofday()\fR میزان تأخیر ۱۰۰۰ فراخوانی سیستمی gettimeofday() بر حسب میکروثانیه، اندازه‌گیری‌شده در زمان راه‌اندازی کنترلر. .IP .LP بلوک‌های بعدی اطلاعات، پرتکرارترین فراخوانی‌های رویه از راه دور (RPC) صادرشده را گزارش می‌دهند؛ فراخوانی‌هایی که برای دیمن Slurmctld جهت انجام برخی اقدامات ارسال شده‌اند. بلوک چهارم RPCهای صادرشده را بر اساس نوع پیام گزارش می‌کند. برای بررسی این کدهای RPC در کد منبع Slurm، باید به فایل src/common/slurm_protocol_defs.h مراجعه کنید. این گزارش شامل تعداد دفعات فراخوانی هر RPC، مجموع زمان مصرف‌شده توسط تمام آن RPCها به همراه میانگین زمان مصرف‌شده توسط هر RPC بر حسب میکروثانیه است. بلوک پنجم RPCهای صادرشده را بر اساس شناسه کاربری (user ID)، تعداد کل RPCهای صادرشده توسط آن‌ها، مجموع زمان مصرف‌شده توسط تمام آن RPCها به همراه میانگین زمان مصرف‌شده توسط هر RPC بر حسب میکروثانیه گزارش می‌دهد. آمار RPCها در طول مدت حیات فرایند slurmctld جمع‌آوری می‌شود، مگر اینکه صریحاً با \fB\-\-reset\fR بازنشانی شود. .LP بلوک ششم اطلاعات که با برچسب Pending RPC Statistics مشخص شده است، اطلاعات مربوط به RPCهای خروجیِ در انتظار را در صف عامل (agent) slurmctld نمایش می‌دهد. بخش اول این بلوک، انواع RPCهای موجود در صف و تعداد هر یک را نشان می‌دهد. بخش دوم تا ۲۵ RPC اول معلق در صف عامل را شامل نوع و فهرست میزبان مقصد نمایش می‌دهد. این اطلاعات ذخیرهٔ موقت (cache) شده و فقط در فواصل زمانی ۳۰ ثانیه‌ای به‌روزرسانی می‌شوند. .SH "گزینه‌ها (OPTIONS)" .TP \fB\-a\fR, \fB\-\-all\fR دریافت و گزارش اطلاعات. این حالت پیش‌فرض عملکرد است. .IP .TP \fB\-M\fR, \fB\-\-cluster\fR=<\fIstring\fR> خوشه‌ای که دستورها باید به آن ارسال شوند. تنها یک نام خوشه را می‌توان مشخص کرد. توجه داشته باشید که \fBslurmdbd\fR باید فعال و در حال اجرا باشد تا این گزینه به درستی کار کند، مگر اینکه در یک فدراسیون با پیکربندی \fBFederationParameters=fed_display\fR اجرا شود. .IP .TP \fB\-h\fR, \fB\-\-help\fR چاپ توضیحات گزینه‌ها و خروج. .IP .TP \f3\-\-json\fP, \f3\-\-json\fP=\fIlist\fR, \f3\-\-json\fP=<\fIdata_parser\fR> تخلیه اطلاعات در قالب JSON با استفاده از افزونه پیش‌فرض data_parser یا یک data_parser مشخص همراه با پارامترها. آرگومان‌های مرتب‌سازی و قالب‌بندی نادیده گرفته خواهند شد. .IP .TP \fB\-\-no-trunc\fR خطوط طولانی به ۸۰ نویسه کوتاه و بریده نشوند. .IP .TP \fB\-r\fR, \fB\-\-reset\fR بازنشانی شمارنده‌های زمان‌بند و RPC به 0. تنها برای اپراتورها و مدیران سیستم Slurm پشتیبانی می‌شود. .IP .TP \fB\-i\fR, \fB\-\-sort\-by\-id\fR مرتب‌سازی داده‌های فراخوانی رویه از راه دور (RPC) بر اساس شناسه نوع پیام و شناسه کاربری (user ID). .IP .TP \fB\-t\fR, \fB\-\-sort\-by\-time\fR مرتب‌سازی داده‌های فراخوانی رویه از راه دور (RPC) بر اساس کل زمان اجرا. .IP .TP \fB\-T\fR, \fB\-\-sort\-by\-time2\fR مرتب‌سازی داده‌های فراخوانی رویه از راه دور (RPC) بر اساس میانگین زمان اجرا. .IP .TP \fB\-\-usage\fR چاپ فهرست گزینه‌ها و خروج. .IP .TP \fB\-V\fR, \fB\-\-version\fR چاپ شماره نسخه فعلی و خروج. .IP .TP \f3\-\-yaml\fP, \f3\-\-yaml\fP=\fIlist\fR, \f3\-\-yaml\fP=<\fIdata_parser\fR> تخلیه اطلاعات در قالب YAML با استفاده از افزونه پیش‌فرض data_parser یا یک data_parser مشخص همراه با پارامترها. آرگومان‌های مرتب‌سازی و قالب‌بندی نادیده گرفته خواهند شد. .IP.SH "کارایی (PERFORMANCE)" .PP اجرای \fBsdiag\fR یک فراخوانی روال از راه‌دور (RPC) را به \fBslurmctld\fR می‌فرستد. در صورتی که فراخوانی‌های هم‌زمانِ زیادی از سوی \fBsdiag\fR یا سایر دستورهای کلاینت Slurm که فراخوانی‌های روال از راه‌دور به دیمن \fBslurmctld\fR ارسال می‌کنند به این سرویس برسد، می‌تواند منجر به افت کارایی دیمن \fBslurmctld\fR و احتمالأ بروز منع سرویس (denial of service) شود. .PP دستور \fBsdiag\fR یا سایر دستورهای کلاینت Slurm را که فراخوانی‌های روال از راه‌دور به \fBslurmctld\fR ارسال می‌کنند، در حلقه‌های اسکریپت‌های شل یا دیگر برنامه‌ها اجرا نکنید. اطمینان حاصل کنید که برنامه‌ها فراخوانی‌های \fBsdiag\fR را به حداقل میزان مورد نیاز برای جمع‌آوری اطلاعات لازم محدود کنند. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .PP برخی از گزینه‌های \fBsdiag\fR ممکن است از طریق متغیرهای محیطی تنظیم شوند. این متغیرهای محیطی، به همراه گزینه‌های متناظرشان، در زیر فهرست شده‌اند. (توجه: گزینه‌های خط فرمان همیشه این تنظیمات را رونویسی می‌کنند.) .TP 20 \fBSLURM_CLUSTERS\fR مشابه \fB\-\-cluster\fR .IP .TP 20 \fBSLURM_CONF\fR محل فایل پیکربندی Slurm. .TP \fBSLURM_JSON\fR کنترل قالب‌بندی و سریال‌سازی JSON: .IP .RS .TP \fBcompact\fR خروجی دادن JSON به فشرده‌ترین شکل ممکن. .IP .TP \fBpretty\fR خروجی دادن JSON با قالب‌بندی مرتب و خوانا. .IP .RE .TP \fBSLURM_YAML\fR کنترل قالب‌بندی و سریال‌سازی YAML: .IP .RS .TP \fBcompact\fR خروجی دادن YAML به فشرده‌ترین شکل ممکن. .IP .TP \fBpretty\fR خروجی دادن YAML با قالب‌بندی مرتب و خوانا. .RE .IP .SH "کپی‌رایت و تکثیر (COPYING)" Copyright (C) 2010\-2011 Barcelona Supercomputing Center. .br Copyright (C) 2010\-2022 SchedMD LLC. .LP نرم‌افزار Slurm یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نسخهٔ ۲ پروانه یا (به انتخاب خودتان) هر نسخهٔ بعدی دیگر، بازتوزیع کرده و/یا تغییر دهید. .LP نرم‌افزار Slurm به این امید که مفید باشد توزیع شده است، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای اطلاعات بیشتر «پروانه عمومی همگانی گنو» را مطالعه کنید. .SH "همچنین ببینید (SEE ALSO)" .LP sinfo(1), squeue(1), scontrol(1), slurm.conf(5),