فا نیکسی

7.3. تنظیم دقیق تعداد پردازنده‌ها و کارها

نیکس دو تنظیم مرتبط در خصوص نحوه استفاده از هسته‌های پردازنده (CPU) شما دارد: cores و max-jobs. این فصل درباره‌ی ماهیت آن‌ها، نحوه تعاملشان و مباحث مربوط به پیکربندی آن‌ها بحث خواهد کرد.

  • max-jobs\ تعیین می‌کند چه تعداد درایویشن مجزا به‌طور هم‌زمان ساخته شوند. اگر این مقدار را روی صفر تنظیم کنید، ماشین محلی هیچ ساختی انجام نخواهد داد. با این حال، نیکس همچنان جایگزینی را از کش‌های باینری انجام خواهد داد و در صورت پیکربندی سازنده‌های راه دور، به‌صورت راه دور می‌سازد.

  • cores\ پیشنهاد می‌کند که هر درایویشن باید از چند هسته استفاده کند. مشابه make -j.

تنظیم cores مقدار NIX_BUILD_CORES را تعیین می‌کند. مقدار NIX_BUILD_CORES برابر با cores است، مگر اینکه cores برابر با 0 باشد؛ در این صورت NIX_BUILD_CORES برابر با تعداد کل هسته‌های موجود در سیستم خواهد بود.

حداکثر تعداد هسته‌های مصرف‌شده یک ضرب ساده است: max-jobs * NIX_BUILD_CORES.

تعادل در نحوه تنظیم این دو متغیر مستقل به بار کاری و سخت‌افزار هر سازنده (builder) بستگی دارد. در ادامه چند سناریوی نمونه روی ماشینی با ۲۴ هسته آورده شده است:

max-jobscoresNIX_BUILD_CORESفرآیندهای حداکثرنتیجه
1242424در هر لحظه یک درایویشن ساخته خواهد شد و هر کدام می‌توانند از ۲۴ هسته استفاده کنند. اگر کاری نتواند از ۲۴ هسته استفاده کند، ظرفیت کمتر از حد معمول استفاده می‌شود.
46624چهار درایویشن به طور همزمان ساخته می‌شوند و به هر کدام دسترسی به شش هسته داده می‌شود.
126672۱۲ درایویشن به طور همزمان ساخته می‌شوند و به هر کدام دسترسی به شش هسته داده می‌شود. این پیکربندی بیش‌ازحد ظرفیت فروخته شده است (over-sold). اگر هر ۱۲ درایویشنی که به طور همزمان ساخته می‌شوند سعی کنند از هر شش هسته استفاده کنند، عملکرد ماشین به دلیل تعویض زمینه (context switching) گسترده بین ۱۲ ساخت، افت خواهد کرد.
241124۲۴ درایویشن می‌توانند همزمان ساخته شوند و هر کدام از یک هسته استفاده کنند. هرگز بیش‌ازحد ظرفیت نیست، اما درایویشن‌هایی که به هسته‌های زیادی نیاز دارند، بسیار کند کامپایل خواهند شد.
24024576۲۴ درایویشن می‌توانند همزمان ساخته شوند و هر کدام از تمام هسته‌های موجود ماشین استفاده کنند. بسیار محتمل است که بیش‌ازحد ظرفیت باشد و بسیار محتمل است که از تعویض‌های زمینه رنج ببرد.

این بر عهده اسکریپت ساخت درایویشن‌ها است که با پیروی از مقدار متغیر محیطی NIX_BUILD_CORES، به تعداد هسته‌های درخواستی هاست برای هر ساخت احترام بگذارد.

nix.dev/manual/nix/stable/advanced-topics/cores-vs-jobs.html

نیکسی · یادداشت‌های فارسی Nix local fonts