Как найти количество ядер, которые в настоящее время используются службой Windows?

#c# #multithreading #windows-services #task-parallel-library #threadpool

#c# #многопоточность #windows-services #задача-параллельная-библиотека #threadpool

Вопрос:

Я создал многопоточное приложение, которое запускается через службы Windows. Ранее в моей системе было 2 ядра, которые я увеличил до 6 ядер. Даже после увеличения количества ядер производительность моего приложения не оптимизирована. Я пробовал потоки, а также задачи для достижения многопоточности в моем приложении, но существенной разницы в производительности моего приложения нет. Как я могу найти количество потоков и ядер, запущенных или используемых в моей системе моим приложением, чтобы я мог знать, используются ли все мои ядра или нет?

Комментарии:

1. Вы просите что-то более конкретное, чем Environment.ProcessorCount ?

2. «нет существенной разницы в производительности моего приложения». — во-первых, вы подтвердили, что процессор является узким местом? Если ваша проблема, например, связана с вводом-выводом, не имеет значения, сколько ядер доступно для нее.

3. Окружающая среда. ProcessorCount указывает количество ядер, а не количество используемых ядер ОС

Ответ №1:

Это зависит от планировщика ОС. Ваша служба Windows не единственная, запущенная на компьютере. ОС решает, как распределить процессорное время для всех потоков, которые необходимо запустить.

Если вы хотите сделать свое приложение более «дружественным к многоядерности», вам нужно поделиться более подробной информацией о нем и о том, что он делает.