В настоящее время я пишу приложение в C, в котором я намерен имитировать загрузку процессора в ubuntu менее 100%. Я использовал алгоритм факториалов, чтобы подчеркнуть мой CPU и функцию nanosleep
для регулирования использования ЦП. Цель состоит в том, чтобы иметь постоянное использование ЦП с разумным допуском, который может варьироваться поэтапно, т. Е. 20%, 30% и т. Д. Проблема заключается в том, что когда я запускаю свое приложение, я получаю отсканированную нагрузку 45-53%, где я хочу иметь нагрузку 50% использования процессора. Из-за моих исследований мне нужно получить стабильное использование ЦП, когда я вычисляю время отклика, отслеживая отметку времени между двумя исполнениями.Нестабильное использование ЦП
EDIT Я использую рабочую станцию VmWare с Ubuntu 14.04 VM для своих исследований. Вот код
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
int main(void)
{
struct timeval t1;
int milisec = 5; // length of time to sleep, in miliseconds
struct timespec req = {0};
req.tv_sec = 0;
req.tv_nsec = milisec * 1000000L;
FILE *file;
file = fopen("trace.txt", "w");
//int j = 0;
while(1)
{
gettimeofday(&t1, NULL);
int i;
int res = 1;
for(i = 0; i < 580000; i++)
{
res = res*i;
}
nanosleep(&req, (struct timespec *)NULL);
fprintf(file, "%llu%llu\n", (unsigned long long)t1.tv_sec, (unsigned long long)t1.tv_usec);
fflush(file);
//j++;
}
}
Ммм, это не '' C++, вам лучше изменить тег 'C'. – kebs
'которые могут варьироваться поэтапно, т. Е. 20%, 30% и т. Д.: Как это должно произойти? Вы не получаете никаких аргументов командной строки. – kebs
И ваш цикл до 580000, вероятно, будет оптимизирован компилятором, если вы не добавите коммутатор, говоря ему, чтобы он этого не делал. Какой компилятор? – kebs