Мой вопрос основан на Имитировать постоянную загрузку процессора и скачки .Используя код, упомянутый в качестве ответа, я смог смоделировать загрузку процессора.
Вот как выглядит мой код:
static void Main(string[] args)
{
int chaoseThreshold = 50;//Default threshold is 50%.
int chaosDuration = 1;//Default test duration is 1 minute.
List<Thread> threads = new List<Thread>();
for (int i = 0; i < Environment.ProcessorCount + 1; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(LoadCpu));
t.Start(chaoseThreshold);
threads.Add(t);
}
Thread.Sleep(chaosDuration * 60000);
foreach (var t in threads)
{
t.Abort();
}
}
public static void LoadCpu(object cpuUsage)
{
Stopwatch watch = new Stopwatch();
watch.Start();
while (true)
{
if (watch.ElapsedMilliseconds > (int)cpuUsage)
{
Thread.Sleep(100 - (int)cpuUsage);
watch.Reset();
watch.Start();
}
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что, даже если я установилзагрузка процессора должна составить 50%, я замечаю, что нагрузка будет намного выше 50%.
Например, если загрузка процессора до того, как я запустил эту программу, составляла 10%, я ожидаю, что при запуске этой программы нагрузка возрастет примерно на 60-65%.Однако нагрузка при выполнении программы колеблется в пределах 80-100%.Что интересно, процессор, используемый моей программой, остается около 50%.
Это ожидаемое поведение?Мне интересно, есть ли способ точно установить загрузку процессора программно?