Имитация предсказуемой загрузки процессора - PullRequest
0 голосов
/ 27 сентября 2019

Мой вопрос основан на Имитировать постоянную загрузку процессора и скачки .Используя код, упомянутый в качестве ответа, я смог смоделировать загрузку процессора.

Вот как выглядит мой код:

    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%.

Это ожидаемое поведение?Мне интересно, есть ли способ точно установить загрузку процессора программно?

...