2010-05-06 2 views
4

Как я могу настроить тестовый проект визуальной студии, чтобы использовать ядро ​​центрального процессора.Стресс-тест визуальной студии с многоядерным процессором

Когда я запускаю тест, я могу видеть на моем индикаторе производительности, что используется только одно ядро ​​(100%), а остальные 7 ядер не используются.

У меня внутри тестового проекта есть тест нагрузки, который вызывает унитарный тест.

Я установил 200 пользователей для вызова одного метода. Но мне нужно использовать все ядра.

+2

Какой тестовый проект? – cjk

+0

- тест нагрузки внутри проекта тестирования. – shinji14

+0

Я нашел это благодаря Fouz: «Когда вы выполняете тесты нагрузки на многоядерных компьютерах, загрузка нагрузки ограничена следующим образом: Если на компьютере установлена ​​Visual Studio Team System Test Edition или Visual Studio Team System, генерация нагрузки ограничена одним ядром. Если на компьютере установлен агент загрузки тестовой системы Visual Studio Team System, генерация нагрузки не ограничена, она работает на всех ядрах и процессорах ». Но im Использование Visual Studio 2010 Ultimate, и это сообщение относится к Visual 2008. – shinji14

ответ

5

Деннис, согласно MSDN:

«Добавление Visual Studio Load Test Virtual User пакет 2010 в nontest сценарии контроллер имеет дополнительное преимущество отпирания всех процессоров машины для использования Без Visual Studio Load Test. Virtual User Pack 2010, ваш локальный компьютер может использовать только первый процессор. После того, как вы добавили тест загрузки Visual Studio Virtual User Pack 2010, тесты нагрузки могут использовать все процессоры на машине, когда они запускаются ».

Таким образом, вы не сможете разблокировать свои дополнительные ядра, если у вас нет лицензии на пакет пользователя.

-1

Скорее всего, ваш тестовый код является однопоточным. Единичные тесты запускаются последовательно, поэтому, если код в каждом тесте многопоточен, он будет работать только в одном потоке.

Будьте осторожны, чтобы выполняемые тесты в нескольких потоках могли иметь неблагоприятные последствия, модульные тесты должны тестировать только устройство, а если это многопоточное, то испытание должно быть однопоточным.

2

См. Принятый ответ here. Резюме: для этого нужен Visual Studio Team System Test Load Agent.

-1

Вам необходимо выполнить работу в нескольких потоках. Попробуйте это:

class Program 
{ 
    static bool isRunning = true; 

    static void Main(string[] args) 
    { 
     BackgroundWorker bw1 = new BackgroundWorker(); 
     BackgroundWorker bw2 = new BackgroundWorker(); 

     bw1.DoWork += delegate(object sender, DoWorkEventArgs e) 
     { while (isRunning) { } }; 

     bw2.DoWork += delegate(object sender, DoWorkEventArgs e) 
     { while (isRunning) { } }; 

     bw1.RunWorkerAsync(); 
     bw2.RunWorkerAsync(); 

     Console.ReadLine(); 
     isRunning = false; 

    } 
} 

Вы можете увеличить число фоновых работников в зависимости от того, сколько ядер у вас есть (в этом примере исчерпан мой двухъядерный компьютер). Вы можете поместить свой код после запуска рабочих, а затем остановить их, изменив значение isRunning.

+0

Мой модульный тест может быть выполнен на одном ядре. Мне нужно, чтобы Visual Studio использовала все мои ядра, чтобы подключить пользователей к модульному тесту. – shinji14

Смежные вопросы