slurmd(8) Slurm Daemon slurmd(8)

slurmd - دیمن گره محاسباتی برای Slurm.

slurmd [OPTIONS...]

slurmd دیمن گره محاسباتی Slurm است. این دیمن بر تمام وظایف (tasks) در حال اجرا روی گره محاسباتی نظارت می‌کند، کارها (وظایف) را می‌پذیرد، آن‌ها را راه‌اندازی می‌کند و در صورت درخواست، وظایف در حال اجرا را خاتمه می‌دهد (kill می‌کند).

همراه با configless برای تعیین پارامتر جایگزین AuthInfo به منظور برقراری ارتباط با slurmctld پیش از دریافت فایل پیکربندی به کار می‌رود. (برای نمونه، جهت تعیین مسیر سوکت جایگزین MUNGE.)
گزارش راه‌اندازی مجدد گره (reboot) هنگام ری‌استارت شدن دیمن. برای اهداف آزمایشی استفاده می‌شود.
پاکسازی قفل‌های سیستم در صورت نیاز. این گزینه در صورتی که slurmd به صورت غیرعادی متوقف شده باشد ممکن است ضروری باشد.
چاپ پیکربندی واقعی سخت‌افزار (نه پیکربندی مندرج در فایل slurm.conf) و خروج. قالب خروجی مشابه قالبی است که در slurm.conf برای توصیف پیکربندی گره به علاوه زمان فعالیت (uptime) آن استفاده می‌شود. می‌توانید از --parameters برای تعیین گزینه‌هایی مانند 'l3cache_as_socket' که ممکن است ساختار توپولوژی گزارش‌شده گره را تغییر دهند، استفاده کنید.
مسیر مطلق به گواهی CA که برای دریافت پیکربندی هنگام اجرای configless در یک کلاستر فعال با TLS استفاده می‌شود.
در ترکیب با گزینه -Z استفاده می‌شود. برای بازنویسی یا تعیین پارامترهای اضافی یک گره پویا (dynamic node) با استفاده از همان ساختار نحوی و پارامترهای به‌کاررفته برای تعریف گره‌ها در slurm.conf استفاده می‌شود. مشخص کردن هر یک از موارد CPUs، Boards، SocketsPerBoard، CoresPerSocket یا ThreadsPerCore مقادیر پیش‌فرض تعیین‌شده توسط گزینه -C را بازنویسی خواهد کرد. گزینه‌های NodeName و Port پشتیبانی نمی‌شوند. این گزینه همچنین می‌تواند برای مشخص کردن توپولوژی گره ابری (cloud node) استفاده شود، که در این حالت پرچم -Z نباید استفاده شود (برای نمونه: --conf="topology=topo-switch:s1")

برای مثال اگر slurmd -C مقدار زیر را گزارش دهد:

NodeName=node1 CPUs=16 Boards=1 SocketsPerBoard=1 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=31848

مشخصه‌های --conf زیر تعاریف متناظر گره را ایجاد خواهند کرد:

--conf "Gres=gpu:2"
NodeName=node1 CPUs=16 Boards=1 SocketsPerBoard=1 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=31848 Gres=gpu:2
--conf "RealMemory=30000"
NodeName=node1 CPUs=16 Boards=1 SocketsPerBoard=1 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=30000
--conf "CPUs=16"
NodeName=node1 CPUs=16 RealMemory=331848
--conf "CPUs=16 RealMemory=30000 Gres=gpu:2"
NodeName=node1 CPUs=16 RealMemory=30000 Gres=gpu:2"

تشخیص GPU به صورت خودکار رخ می‌دهد اگر:

• گزینه --conf هیچ GPU GRES مشخص نکرده باشد
• فایل gres.conf حاوی هیچ رکورد صریح GPU GRES برای این گره نباشد
• فایل gres.conf حاوی AutoDetect=off نباشد

اگر AutoDetect در gres.conf سازوکار تشخیص خاصی را مشخص کند (مانند NVML، NVIDIA، RSMI، oneAPI، NRT)، از همان سازوکار برای تلاش جهت تشخیص GPU استفاده خواهد کرد. اگر هیچ AutoDetect مشخص نشده باشد، slurmd به صورت پیش‌فرض از روش تشخیص full برای GPU استفاده می‌کند.

موارد زیر رفتار تشخیص خودکار GPU را برای گره‌ای با ۲ پردازنده گرافیکی محلی A100 نشان می‌دهد:

بدون --conf و بدون AutoDetect در gres.conf:

NodeName=node1 CPUs=16 Boards=1 SocketsPerBoard=1 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=31848 Gres=gpu:a100:2

همراه با --conf "Gres=tmpfs:1000" و بدون AutoDetect در gres.conf:

NodeName=node1 CPUs=16 Boards=1 SocketsPerBoard=1 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=31848 Gres=tmpfs:1000,gpu:a100:2

همراه با --conf "Gres=tmpfs:1000" و AutoDetect=nvml در gres.conf:

NodeName=node1 CPUs=16 Boards=1 SocketsPerBoard=1 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=31848 Gres=tmpfs:1000,gpu:a100:2

همراه با --conf "Gres=tmpfs:1000" و AutoDetect=off در gres.conf:

NodeName=node1 CPUs=16 Boards=1 SocketsPerBoard=1 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=31848 Gres=tmpfs:1000
فهرست جداشده با کاما از کنترلرها، که اولین آن‌ها slurmctld اصلی است. یک پورت را می‌توان (به صورت اختیاری) برای هر کنترلر مشخص کرد. این میزبان‌ها همان‌هایی هستند که slurmd هنگام اجرا در حالت "configless" پیکربندی را از آن‌ها دریافت می‌کند. نکته: در صورت تعیین یک آدرس IPv6، عبارت <ip address> را داخل [] قرار دهید تا آدرس از پورت متمایز گردد. این کار حتی اگر هیچ پورتی مشخص نشده باشد الزامی است.
مسیر کاملاً مشخص به برنامه slurmstepd را که برای سرپرستی و هدایت مراحل کار کاربران استفاده می‌شود مشخص می‌کند. این گزینه می‌تواند برای اهداف آزمایشی مفید باشد.
اجرای slurmd در پیش‌زمینه همراه با کپی گزارش‌ها در خروجی خطای استاندارد (stderr).
تنظیم داده‌های "extra" هنگام راه‌اندازی گره. اگر این مقدار یک رشته json باشد و SchedulerParameters=extra_constraints در slurm.conf تنظیم شده باشد، مشاغل می‌توانند از گزینه --extra برای فیلتر کردن بر اساس این داده‌های "extra" استفاده کنند.
خواندن پیکربندی از فایل مشخص‌شده. بخش نکات (NOTES) در ادامه را ببینید.
راه‌اندازی این گره به عنوان یک Dynamic Future node. تلاش خواهد کرد تا با یک تعریف گره با وضعیت FUTURE مطابقت یابد، و به صورت اختیاری از ویژگی مشخص‌شده برای تطابق با تعریف گره استفاده می‌کند.
چاپ پیکربندی منبع عمومی (Generic RESource - GRES) (بر پایه GRES در slurm.conf ادغام‌شده با محتویات gres.conf برای این گره) و خروج.
راهنما؛ چاپ خلاصه‌ای کوتاه از گزینه‌های دستور.
تنظیم شناسه نمونه ابری (cloud instance ID) هنگام راه‌اندازی گره.
تنظیم نوع نمونه ابری (cloud instance type) هنگام راه‌اندازی گره.
نوشتن پیام‌های لاگ در فایل مشخص‌شده.
قفل کردن صفحات slurmd در حافظه سیستم با استفاده از mlockall (2) به منظور غیرفعال کردن صفحه‌بندی (paging) فرآیند slurmd. این کار در مواردی که گره‌ها در طول دوره‌های فعالیت سنگین swap به عنوان DOWN علامت‌گذاری می‌شوند ممکن است کمک کند. اگر فراخوان سیستمی mlockall (2) در دسترس نباشد، خطایی در لاگ چاپ خواهد شد و slurmd به کار عادی خود ادامه می‌دهد.

پیشنهاد می‌شود هنگام تنظیم -M، پارامتر LaunchParameters=slurmstepd_memlock را نیز در slurm.conf(5) تنظیم نمایید.

تنظیم مقدار nice دیمن روی مقدار مشخص‌شده، معمولاً یک عدد منفی. همچنین به پارامتر پیکربندی PropagatePrioProcess توجه داشته باشید.
اجرای دیمن با نام گره داده‌شده. برای شبیه‌سازی یک سیستم بزرگ‌تر با بیش از یک دیمن slurmd در هر گره استفاده می‌شود. مستلزم آن است که Slurm با گزینه پیکربندی --enable-multiple-slurmd کامپایل شده باشد.
امکان تغییرات موقت مختص گره را در SlurmdParameters فراهم می‌کند. می‌تواند همراه با -C برای تعیین گزینه‌هایی مانند 'l3cache_as_socket' که ممکن است توپولوژی گزارش‌شده گره را تغییر دهند استفاده شود. این پارامترها به هر پارامتر مختص گره تعریف‌شده در slurm.conf افزوده می‌شوند.
تغییر دایرکتوری کاری slurmd به مسیر SlurmdLogFile در صورت امکان، یا به SlurmdSpoolDir در غیر این صورت. اگر هر دو ناموفق باشند، به مسیر /var/tmp بازمی‌گردد.
هنگام راه‌اندازی دیمن با systemd استفاده می‌شود. این کار به slurmd امکان می‌دهد تا هنگام استفاده از 'scontrol reconfigure'، شناسه فرآیند (PID) جدید را به systemd اطلاع دهد.
عملیات پرجزئیات (verbose). استفاده مکرر از -v سطح جزئیات را افزایش می‌دهد.
چاپ اطلاعات نگارش و خروج.
راه‌اندازی این گره به عنوان یک Dynamic Normal node. اگر هیچ --conf مشخص نشده باشد، آن‌گاه slurmd با همان پیکربندی سخت‌افزاری (به جز GRES) که توسط گزینه -C تعریف شده است ثبت نام خواهد کرد.

متغیرهای محیطی زیر می‌توانند برای بازنویسی تنظیمات کامپایل‌شده در slurmd استفاده شوند.

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

مگر اینکه از طریق CommunicationParameters=disable_http در slurm.conf غیرفعال شده باشد، slurmd درخواست‌های منطبق با HTTP/1.1 ورودی را به هر سوکت در حال شنود طبق پیکربندی SlurmdPort در slurm.conf خواهد پذیرفت. احراز هویت درخواست‌های HTTP پشتیبانی نمی‌شود. پوشش‌دهی با TLS به صورت اختیاری و بدون نیاز به TLSType در slurm.conf پشتیبانی می‌شود. در حال حاضر نقاط پایانی (endpoints) زیر پشتیبانی می‌شوند:

دریافت فهرست نقاط پایانی.
آزمایش اینکه آیا slurmd با موفقیت بارگذاری شده است یا خیر.
آزمایش اینکه آیا slurmd با موفقیت بارگذاری شده است یا خیر.
آزمایش اینکه آیا slurmd آماده پذیرش RPCهای ورودی است یا خیر. افزودن پارامتر پرس‌وجوی verbose خروجی پرجزئیات مربوط به هر بررسی را در پاسخ بازمی‌گرداند.

slurmd به صورت تمیز خاموش خواهد شد.
فایل‌های پیکربندی slurm را مشابه 'scontrol reconfigure' مجدداً بارگذاری می‌کند.
سطح لاگ را مجدداً از پیکربندی‌ها خوانده و سپس فایل لاگ را بازگشایی می‌کند. این گزینه هنگام تنظیم logrotate(8) باید استفاده شود.
این سیگنال به طور صریح نادیده گرفته می‌شود.

اگر slurmd با گزینه -D راه‌اندازی شود، فایل core در دایرکتوری کاری جاری نوشته خواهد شد. در غیر این صورت، اگر SlurmdLogFile یک مسیر کامل و مطلق (که با اسلش شروع می‌شود) باشد، فایل core در همان دایرکتوری فایل لاگ نوشته خواهد شد. در غیر این صورت، فایل core در دایرکتوری SlurmdSpoolDir یا به عنوان آخرین راهکار در "/var/tmp/" نوشته خواهد شد. اگر نوشتن در هیچ‌یک از دایرکتوری‌های فوق امکان‌پذیر نباشد، هیچ فایل core تولید نخواهد شد.

آزمایش پارامترهای پیکربندی خاص slurmd با استفاده از یک فایل پیکربندی جداگانه (برای نمونه، مهلت‌های زمانی) ممکن است مفید باشد. با این حال، این فایل پیکربندی ویژه توسط دیمن slurmctld یا برنامه‌های Slurm استفاده نخواهد شد، مگر اینکه به طور مشخص به هر یک از آن‌ها دستور استفاده از آن را بدهید. اگر مایل به تغییر درگاه‌های ارتباطی، مکان فایل‌سیستم موقت، یا سایر پارامترهای مورد استفاده توسط سایر اجزای Slurm هستید، فایل پیکربندی مشترک، یعنی slurm.conf را تغییر دهید.

اگر از حالت configless به همراه یک گره ورود (login node) که دستورات کاربری زیادی را اجرا می‌کند استفاده می‌کنید، می‌توانید اجرای slurmd را روی آن ماشین مد نظر قرار دهید تا بتواند نسخه‌ای کش‌شده از فایل‌های پیکربندی را مدیریت کند. در غیر این صورت، هر دستور کاربر از رکورد DNS برای ارتباط با کنترلر و دریافت اطلاعات پیکربندی استفاده خواهد کرد که می‌تواند بار مضاعفی را روی کنترلر تحمیل کند.

Copyright (C) 2002-2007 The Regents of the University of California.
Copyright (C) 2008-2010 Lawrence Livermore National Security.
Copyright (C) 2010-2022 SchedMD LLC.
Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).

این فایل بخشی از Slurm، یک برنامه مدیریت منابع است. برای جزئیات بیشتر، https://slurm.schedmd.com را ببینید.

Slurm یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU GPL) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نگارش 2 مجوز و چه (به انتخاب خودتان) هر نگارش بالاتری بازتوزیع کرده یا تغییر دهید.

نرم‌افزار Slurm به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

/etc/slurm.conf

slurm.conf(5), slurmctld(8)

Slurm Daemon Slurm 26.05