Запускайте службы Windows на ядрах P от Intel

Вопрос или проблема

У меня есть ПК, превращенный в домашний сервер, который я использую для запуска самохостинговых сборок для Azure Pipeline. У меня есть 3 агента сборки, работающие на одном ПК. ПК/сервер имеет процессор Intel i7-12700f с 8 P ядрами и 4 E ядрами. Когда я запускаю несколько задач Pipeline, все 4 E ядра загружаются на полную мощность, но P ядра остаются неактивными.

Чтобы создать сервисы, я просто запускаю run.cmd, загруженный из Azure.

Если я отключу E ядра в BIOS, сервисы будут использовать 8 P ядер. Но в этом случае потребление энергии ПК увеличивается, и я не хочу ненужным образом потреблять энергию и выделять CO2.

Я пытался установить “Выбрать, как распределять ресурсы процессора” (в Настройках, Система, О системе. Системная информация. Расширенные системные настройки. Вкладка “Дополнительно”) на Фоновая служба, но это не оказало никакого влияния на распределение ядер.

План электропитания Windows сбалансированный, и я не хочу менять его на Высокую производительность, потому что этот ПК не работает 99% времени.

Как заставить эти три сервиса использовать только P ядра и при этом сохранить E ядра активными?

Ответ или решение

Запуск служб Windows на P-ядрах Intel: запрос, ответ и решение

Введение

Ваша текущая задача заключается в оптимизации работы служб Windows на вашем сервере домашнего ПК с процессором Intel i7-12700f. Этот процессор имеет 8 производительных (P) ядер и 4 эффективных (E) ядра, и вы столкнулись с проблемой: E-ядра перегружены, тогда как P-ядра остаются неактивными. Настройка распределения нагрузки между ядрами CPU — это важная задача для повышения производительности и снижения углекислого газа, что соответствует вашим экологическим принципам.

Проблема

Вы заметили, что при запуске нескольких агентов сборки Azure E-ядра сильно загружены, в то время как P-ядра остаются неиспользованными. Вы отключили E-ядра в BIOS, и это решило проблему, однако это привело к увеличению потребления электроэнергии, что нежелательно. Параметры управления ресурсами процессора в Windows и выбранный план питания "Сбалансированный" не привели к нужному результату.

Решение

Чтобы наладить эффективную работу служб на P-ядрах, одновременно оставляя E-ядра активными, воспользуйтесь следующими методами:

  1. Установка приоритетов процессов:
    Вы можете задать более высокий приоритет для процессов, связанных с вашими службами. Откройте диспетчер задач (Ctrl+Shift+Esc), найдите вашу службу, щелкните правой кнопкой мыши, выберите "Установить приоритет" и выберите "Высокий". Это увеличит вероятность того, что Windows выделит для этих процессов P-ядра.

  2. Использование PowerShell для управления процессами:
    Если вы предпочитаете автоматизацию, создайте скрипт PowerShell для задания привязки процессов к определенным ядрам. Используйте команду Start-Process, чтобы запустить службы с привязкой к ядрам. Вот как это можно сделать:

    $process = Start-Process "C:\path\to\your\service.exe" -ArgumentList "your arguments" -PassThru
    $parentId = $process.Id
    $affinity = [int64] 255 # Устанавливаем маску для P-ядер (например, 11111111)
    (Get-WmiObject Win32_Process | Where-Object {$_.ProcessId -eq $parentId}).SetProcessorAffinity($affinity)
  3. Тонкая настройка планов питания:
    Хотя вы используете сбалансированный план, настройте его для более активного использования P-ядр, оптимизировав параметры производительности для вашего приложения. Настройте план питания, избегая излишней производительности, когда система не загружена, и активируйте ресурсы P-ядр при выполнении задач.

  4. Управление через BIOS и ОС:
    Проверьте настройки BIOS. Некоторые материнки позволяют настраивать, какие ядра могут быть использованы в определенных режимах. Убедитесь, что нет ограничений на использование P-ядр. Вдобавок изучите возможность настройки управляемых приоритетов на уровне ОС.

  5. Мониторинг производительности:
    Используйте инструменты мониторинга, такие как Windows Performance Monitor и Resource Monitor, для отслеживания использования ядер в реальном времени. Это позволит вам понять, как система распределяет задачи и при необходимости корректировать подход.

Заключение

Необходимо тщательно анализировать и настраивать использование ресурсов для достижения оптимальной производительности, избегая избыточного потребления энергии. Комбинация приоритетов процессов, использование PowerShell, адаптация настроек BIOS и тонкая настройка планов питания позволит вам эффективно управлять использованием P-ядр на вашем сервере при одновременной работе E-ядр. Эти шаги помогут вам соблюсти баланс между производительностью разработки и экологической ответственностью.

Оцените материал
Добавить комментарий

Капча загружается...