| sdiag(1) | Slurm Commands | sdiag(1) |
نام (NAME)
sdiag - ابزار عیبیابی و پایش زمانبندی برای Slurm
خلاصه دستور (SYNOPSIS)
sdiag
توضیحات (DESCRIPTION)
دستور sdiag اطلاعات مربوط به اجرای slurmctld را درباره موضوعات زیر نمایش میدهد: رشتهها (threads)، کارگزارها (agents)، کارها (jobs)، و الگوریتمهای زمانبندی. هدف، بهدست آوردن دادههایی از رفتار slurmctld برای کمک به تنظیم پارامترهای پیکربندی یا سیاستهای صفها است. انگیزهٔ اصلی، شناخت رفتار Slurm در سامانههایی با توان عملیاتی (throughput) بالا است.
این دستور دارای دو حالت اجرا است. حالت پیشفرض --all چندین شمارنده و آمار را نشان میدهد که در ادامه توضیح داده شدهاند، و گزینهٔ اجرای دیگری به نام --reset برای بازنشانی این مقادیر وجود دارد.
مقادیر بهطور پیشفرض در نیمهشب به وقت ساعت هماهنگ جهانی (UTC) بازنشانی میشوند.
نخستین بخش اطلاعات مربوط به اجرای سراسری slurmctld است:
- Server thread count
- تعداد رشتههای فعال کنونی slurmctld. عدد بالا نشاندهنده بار کاری زیاد در پردازش رویدادهایی نظیر ثبت کارها (job submissions)، اعزام کارها (jobs dispatching)، تکمیل کارها (jobs completing) و غیره است. اگر این مقدار اغلب نزدیک به MAX_SERVER_THREADS باشد، میتواند نشاندهنده یک گلوگاه (bottleneck) بالقوه باشد.
- Agent queue size
- طراحی Slurm مقیاسپذیری را مد نظر داشته است و ارسال پیامها به هزاران گره کاری ساده نیست. سازوکار کارگزار (agent) به کنترل بهینهٔ ارتباطات بین slurmctld و دیمنهای slurmd با بهترین تلاش ممکن (best effort) کمک میکند. این مقدار بیانگر تعداد درخواستهای خروجی RPC صفبندیشده در یک فهرست تلاش مجدد داخلی است.
- Agent count
- تعداد رشتههای عامل (agent threads). هر یک از این رشتههای عامل به نوبه خود میتوانند گروهی تا سقف 2 + AGENT_THREAD_COUNT رشتهٔ فعال را در یک زمان ایجاد کنند.
- Agent thread count
- تعداد کل رشتههای فعالی که توسط تمام رشتههای عامل ایجاد شدهاند.
- DBD Agent queue size
- سامانه Slurm
پیامهای
ارسالی
برای SlurmDBD را
صفبندی
کرده و آنها
را در یک
رشتهٔ
جداگانه
پردازش
میکند. در
صورتی که SlurmDBD
یا
پایگاهداده
از کار
بیفتد، این
عدد افزایش
خواهد یافت.
حداکثر اندازهٔ صف در slurm.conf با MaxDBDMsgs پیکربندی میشود. اگر این مقدار شروع به رشد کرده و از نیمی از حداکثر اندازهٔ صف بیشتر شود، slurmdbd و پایگاهداده باید فوراً بررسی شوند.
- Jobs submitted
- تعداد کارهای ثبتشده از زمان آخرین بازنشانی.
- Jobs started
- تعداد کارهای آغازشده از زمان آخرین بازنشانی. این مقدار شامل کارهای پسپر شده (backfilled) نیز میشود.
- Jobs completed
- تعداد کارهای تکمیلشده از زمان آخرین بازنشانی.
- Jobs canceled
- تعداد کارهای لغوشده از زمان آخرین بازنشانی.
- Jobs failed
- تعداد کارهایی که به دلیل slurmd یا سایر مشکلات داخلی از زمان آخرین بازنشانی با شکست مواجه شدهاند.
- Job states ts:
- برچسب زمانی (timestamp) زمان جمعآوری شمارشهای وضعیت کارِ زیر را فهرست میکند.
- Jobs pending:
- تعداد کارهای در انتظار در زمان مشخصشده در برچسب زمانی بالا.
- Jobs running:
- تعداد کارهای در حال اجرا در زمان مشخصشده در برچسب زمانی بالا.
بخش بعدی اطلاعات مربوط به الگوریتم اصلی زمانبندی بر اساس اولویت کارها است. یک چرخهٔ زمانبندی مستلزم گرفتن قفل job_write_lock و سپس تلاش برای دریافت منابع برای کارهای در انتظار است؛ از کارهایی با بیشترین اولویت شروع شده و به ترتیب نزولی پیش میرود. هنگامی که یک کار نتواند منابع را دریافت کند، حلقه فقط برای کارهایی که پارتیشنهای دیگری را درخواست میکنند ادامه مییابد. کارهایی که دارای وابستگی هستند یا تحت تأثیر محدودیتهای حسابها (accounts limits) قرار دارند پردازش نمیشوند.
- Last cycle
- زمان آخرین چرخهٔ زمانبندی به میکروثانیه.
- Max cycle
- حداکثر زمان به میکروثانیه برای هر چرخهٔ زمانبندی از زمان آخرین بازنشانی.
- Total cycles
- مجموع زمان اجرا به میکروثانیه برای تمام چرخههای زمانبندی از زمان آخرین بازنشانی. زمانبندی بهصورت دورهای و (بسته به پیکربندی) هنگام ثبت یا تکمیل یک کار انجام میشود.
- Mean cycle
- میانگین زمان به میکروثانیه برای تمام چرخههای زمانبندی از زمان آخرین بازنشانی.
- Mean depth cycle
- میانگین عمق چرخه. عمق بیانگر تعداد کارهای پردازششده در یک چرخهٔ زمانبندی است.
- Cycles per minute
- شمارندهٔ دفعات اجرای زمانبندی در هر دقیقه.
- Last queue length
- طول صف کارهای در انتظار.
بخش بعدی اطلاعات مربوط به الگوریتم زمانبندی پسپر کردن (backfilling) است. یک چرخهٔ زمانبندی backfilling مستلزم گرفتن قفلها برای اشیاء کارها، گرهها و پارتیشنها و سپس تلاش برای دریافت منابع برای کارهای در انتظار است. کارها بر اساس اولویت پردازش میشوند. اگر کاری نتواند منابع را دریافت کند، الگوریتم زمان امکان دریافت آنها را محاسبه کرده و زمان شروع آینده را برای کار به دست میآورد. سپس کار بعدی پردازش میشود و الگوریتم تلاش میکند منابع را برای آن کار دریافت کند، اما به گونهای که بر کارهای قبلی تأثیر نگذارد، و در صورتی که منابع فعلی در دسترس نباشد، مجدداً زمان شروع در آینده را محاسبه میکند. الگوریتم backfilling برای پردازش هر کار جدید زمان بیشتری میبرد، زیرا نباید بر کارهای با اولویت بالاتر تأثیر بگذارد. خود الگوریتم تمهیداتی را برای جلوگیری از چرخهٔ اجرای طولانی و نگهداشتن بیش از حد تمام قفلها به کار میگیرد.
- Total backfilled jobs (since last slurm start)
- تعداد کارهای آغازشده با روش backfilling از زمان آخرین راهاندازی slurm.
- Total backfilled jobs (since last stats cycle start)
- تعداد کارهای آغازشده با روش backfilling از زمان آخرین بازنشانی آمارها. این مقادیر بهطور پیشفرض در نیمهشب به وقت UTC بازنشانی میشوند.
- Total backfilled heterogeneous job components
- تعداد مؤلفههای کارهای ناهمگن (heterogeneous job components) آغازشده با روش backfilling از زمان آخرین راهاندازی Slurm.
- Total cycles
- تعداد چرخههای زمانبندی backfill از زمان آخرین بازنشانی.
- Last cycle when
- زمان وقوع آخرین چرخهٔ زمانبندی backfill در قالب "weekday Month MonthDay hour:minute.seconds year"
- Last cycle
- زمان آخرین چرخهٔ زمانبندی backfill به میکروثانیه. تنها زمان اجرا محاسبه میشود و زمان خواب (sleep time) درون یک چرخهٔ زمانبندی هنگام اجرای طولانیمدت کسر میگردد. توجه داشته باشید که قفلها در طول زمان خواب آزاد میشوند تا سایر کارها بتوانند ادامه یابند.
- Max cycle
- حداکثر زمان اجرای چرخهٔ زمانبندی backfill از زمان آخرین بازنشانی به میکروثانیه. تنها زمان اجرا محاسبه میشود و زمان خواب (sleep time) درون یک چرخهٔ زمانبندی هنگام اجرای طولانیمدت کسر میگردد. توجه داشته باشید که قفلها در طول زمان خواب آزاد میشوند تا سایر کارها بتوانند ادامه یابند..IP
- Mean cycle
- میانگین زمان چرخههای زمانبندی backfilling بر حسب میکروثانیه از زمان آخرین بازنشانی.
- Last depth cycle
- تعداد کارهای پردازششده در طول آخرین چرخهٔ زمانبندی backfilling. این مقدار تمام کارها را شمارش میکند، حتی اگر کاری به دلیل وابستگیها یا محدودیتها قابل شروع نباشد.
- Last depth cycle (try sched)
- تعداد کارهای پردازششده در طول آخرین چرخهٔ زمانبندی backfilling. این مقدار تنها کارهایی را محاسبه میکند که شانس شروع با استفاده از منابع در دسترس را داشته باشند. این کارها نسبت به کارهایی که مشخص میشود به دلیل وابستگیها یا محدودیتها نمیتوانند شروع شوند، زمان بیشتری از زمانبندی را مصرف میکنند.
- Depth Mean
- میانگین تعداد کارهای پردازششده در تمام چرخههای زمانبندی backfilling از زمان آخرین بازنشانی. کارهایی که هنگام بررسی توسط زمانبند backfill فاقد شرایط لازم برای اجرا تشخیص داده شوند، شمارش نمیشوند (مانند کارهایی که به چند پارتیشن ارسال شده و از پیش آغاز شدهاند، کارهایی که به محدودیت QOS یا حسابی مانند حداکثر کارهای در حال اجرا برای یک حساب رسیدهاند، و غیره).
- Depth Mean (try sched)
- زیرمجموعهای از Depth Mean که زمانبند backfill تلاش کرده است آنها را زمانبندی کند.
- Last queue length
- تعداد کارهای در انتظار پردازش توسط الگوریتم backfilling. یک کار به ازای هر پارتیشنی که برای استفاده در صف آن قرار دارد، یکبار شمرده میشود. یک آرایهٔ کاری (job array) در وضعیت تعلیق به طور معمول به عنوان یک کار محاسبه میشود (وظایف یک آرایه کاری که پیشتر آغاز/مجدداً صفبندی شده یا به طور مجزا تغییر یافتهاند، دارای رکوردهای کاری مستقل بوده و هر یک به عنوان یک کار جداگانه شمرده میشوند).
- Queue length Mean
- میانگین تعداد کارهای در انتظار پردازش توسط الگوریتم backfilling. یک کار به ازای هر پارتیشنی که درخواست کرده است، یکبار شمرده میشود. یک آرایهٔ کاری در وضعیت تعلیق به طور معمول به عنوان یک کار محاسبه میشود (وظایف یک آرایه کاری که پیشتر آغاز/مجدداً صفبندی شده یا به طور مجزا تغییر یافتهاند، دارای رکوردهای کاری مستقل بوده و هر کدام به عنوان یک کار جداگانه به حساب میآیند).
- Last table size
- تعداد بازههای زمانی (time slots) متفاوتی که توسط زمانبند backfill در آخرین تکرار آن بررسی شده است.
- Mean table size
- میانگین تعداد بازههای زمانی متفاوتی که توسط زمانبند backfill بررسی شده است. مقادیر بزرگتر، زمان مورد نیاز برای عملیات backfill را افزایش میدهند. اندازه جدول تحت تأثیر پارامترهای زمانبندی متعددی است، از جمله: bf_min_age_reserve، bf_min_prio_reserve، bf_resolution و bf_window.
- Latency for 1000 calls to gettimeofday()
- میزان تأخیر ۱۰۰۰ فراخوانی سیستمی gettimeofday() بر حسب میکروثانیه، اندازهگیریشده در زمان راهاندازی کنترلر.
بلوکهای بعدی اطلاعات، پرتکرارترین فراخوانیهای رویه از راه دور (RPC) صادرشده را گزارش میدهند؛ فراخوانیهایی که برای دیمن Slurmctld جهت انجام برخی اقدامات ارسال شدهاند. بلوک چهارم RPCهای صادرشده را بر اساس نوع پیام گزارش میکند. برای بررسی این کدهای RPC در کد منبع Slurm، باید به فایل src/common/slurm_protocol_defs.h مراجعه کنید. این گزارش شامل تعداد دفعات فراخوانی هر RPC، مجموع زمان مصرفشده توسط تمام آن RPCها به همراه میانگین زمان مصرفشده توسط هر RPC بر حسب میکروثانیه است. بلوک پنجم RPCهای صادرشده را بر اساس شناسه کاربری (user ID)، تعداد کل RPCهای صادرشده توسط آنها، مجموع زمان مصرفشده توسط تمام آن RPCها به همراه میانگین زمان مصرفشده توسط هر RPC بر حسب میکروثانیه گزارش میدهد. آمار RPCها در طول مدت حیات فرایند slurmctld جمعآوری میشود، مگر اینکه صریحاً با --reset بازنشانی شود.
بلوک ششم اطلاعات که با برچسب Pending RPC Statistics مشخص شده است، اطلاعات مربوط به RPCهای خروجیِ در انتظار را در صف عامل (agent) slurmctld نمایش میدهد. بخش اول این بلوک، انواع RPCهای موجود در صف و تعداد هر یک را نشان میدهد. بخش دوم تا ۲۵ RPC اول معلق در صف عامل را شامل نوع و فهرست میزبان مقصد نمایش میدهد. این اطلاعات ذخیرهٔ موقت (cache) شده و فقط در فواصل زمانی ۳۰ ثانیهای بهروزرسانی میشوند.
گزینهها (OPTIONS)
- -a, --all
- دریافت و گزارش اطلاعات. این حالت پیشفرض عملکرد است.
- -M, --cluster=<string>
- خوشهای که دستورها باید به آن ارسال شوند. تنها یک نام خوشه را میتوان مشخص کرد. توجه داشته باشید که slurmdbd باید فعال و در حال اجرا باشد تا این گزینه به درستی کار کند، مگر اینکه در یک فدراسیون با پیکربندی FederationParameters=fed_display اجرا شود.
- -h, --help
- چاپ توضیحات گزینهها و خروج.
- --json, --json=list, --json=<data_parser>
- تخلیه اطلاعات در قالب JSON با استفاده از افزونه پیشفرض data_parser یا یک data_parser مشخص همراه با پارامترها. آرگومانهای مرتبسازی و قالببندی نادیده گرفته خواهند شد.
- --no-trunc
- خطوط طولانی به ۸۰ نویسه کوتاه و بریده نشوند.
- -r, --reset
- بازنشانی شمارندههای زمانبند و RPC به 0. تنها برای اپراتورها و مدیران سیستم Slurm پشتیبانی میشود.
- -i, --sort-by-id
- مرتبسازی دادههای فراخوانی رویه از راه دور (RPC) بر اساس شناسه نوع پیام و شناسه کاربری (user ID).
- -t, --sort-by-time
- مرتبسازی دادههای فراخوانی رویه از راه دور (RPC) بر اساس کل زمان اجرا.
- -T, --sort-by-time2
- مرتبسازی دادههای فراخوانی رویه از راه دور (RPC) بر اساس میانگین زمان اجرا.
- --usage
- چاپ فهرست گزینهها و خروج.
- -V, --version
- چاپ شماره نسخه فعلی و خروج.
- --yaml, --yaml=list, --yaml=<data_parser>
- تخلیه اطلاعات در قالب YAML با استفاده از افزونه پیشفرض data_parser یا یک data_parser مشخص همراه با پارامترها. آرگومانهای مرتبسازی و قالببندی نادیده گرفته خواهند شد.
اجرای sdiag یک فراخوانی روال از راهدور (RPC) را به slurmctld میفرستد. در صورتی که فراخوانیهای همزمانِ زیادی از سوی sdiag یا سایر دستورهای کلاینت Slurm که فراخوانیهای روال از راهدور به دیمن slurmctld ارسال میکنند به این سرویس برسد، میتواند منجر به افت کارایی دیمن slurmctld و احتمالأ بروز منع سرویس (denial of service) شود.
دستور sdiag یا سایر دستورهای کلاینت Slurm را که فراخوانیهای روال از راهدور به slurmctld ارسال میکنند، در حلقههای اسکریپتهای شل یا دیگر برنامهها اجرا نکنید. اطمینان حاصل کنید که برنامهها فراخوانیهای sdiag را به حداقل میزان مورد نیاز برای جمعآوری اطلاعات لازم محدود کنند.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
برخی از گزینههای sdiag ممکن است از طریق متغیرهای محیطی تنظیم شوند. این متغیرهای محیطی، به همراه گزینههای متناظرشان، در زیر فهرست شدهاند. (توجه: گزینههای خط فرمان همیشه این تنظیمات را رونویسی میکنند.)
- SLURM_CLUSTERS
- مشابه --cluster
- SLURM_CONF
- محل فایل پیکربندی Slurm.
- SLURM_JSON
- کنترل قالببندی و سریالسازی JSON:
- SLURM_YAML
- کنترل قالببندی و سریالسازی YAML:
کپیرایت و تکثیر (COPYING)
Copyright (C) 2010-2011 Barcelona Supercomputing Center.
Copyright (C) 2010-2022 SchedMD LLC.
نرمافزار Slurm یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) که توسط بنیاد نرمافزارهای آزاد منتشر شده است، چه نسخهٔ ۲ پروانه یا (به انتخاب خودتان) هر نسخهٔ بعدی دیگر، بازتوزیع کرده و/یا تغییر دهید.
نرمافزار Slurm به این امید که مفید باشد توزیع شده است، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای اطلاعات بیشتر «پروانه عمومی همگانی گنو» را مطالعه کنید.
همچنین ببینید (SEE ALSO)
sinfo(1), squeue(1), scontrol(1), slurm.conf(5),
| Slurm Commands | Slurm 26.05 |