Hi!
On 11/11/2014 05:45 PM, Cyril Hrubis wrote:
> Hi!
>> -void *thread_fn(void *val)
>> +static int load_cpu(int max_freq_khz)
>> {
>> - struct timeval tv_start;
>> - struct timeval tv_end;
>> - int i, res = 0;
>> - intptr_t timeout = (intptr_t) val;
>> -
>> - gettimeofday(&tv_start, NULL);
>> - tst_resm(TINFO, "load CPU0 for %ld sec...", timeout);
>> + int sum = 0, i = 0, total_time_ms;
>> + struct timespec tv_start, tv_end;
>>
>> - do {
>> - for (i = 1; i < 10000; ++i)
>> - res += i * i;
>> - gettimeofday(&tv_end, NULL);
>> - sched_yield();
>> - } while ((tv_end.tv_sec - tv_start.tv_sec) < timeout);
>> -
>> - tst_resm(TINFO, "CPU0 load done: insignificant value '%d'", res);
>> + const int max_sum = max_freq_khz / 1000;
>> + const int units = 1000000; /* Mhz */
>>
>> - return NULL;
>> -}
>> + clock_gettime(CLOCK_MONOTONIC_RAW, &tv_start);
>>
>> -static int load_cpu(intptr_t timeout)
>> -{
>> - pthread_t thread_id;
>> + do {
>> + for (i = 0; i < units; ++i)
>> + asm ("" : : : "memory");
>> + } while (++sum < max_sum);
>>
>> - if (pthread_create(&thread_id, 0, thread_fn,
>> - (void *) timeout) != 0) {
>> - tst_brkm(TBROK | TERRNO, cleanup,
>> - "pthread_create failed at %s:%d",
>> - __FILE__, __LINE__);
>> - }
>> + clock_gettime(CLOCK_MONOTONIC_RAW, &tv_end);
>>
>> - sleep(2 * timeout / 3);
>> + total_time_ms = (tv_end.tv_sec - tv_start.tv_sec) * 1000 +
>> + (tv_end.tv_nsec - tv_start.tv_nsec) / 1000000;
>>
>> - int cur_freq;
>> - SAFE_FILE_SCANF(cleanup, curspeed, "%d", &cur_freq);
>> - tst_resm(TINFO, "got cpu freq under load: %d", cur_freq);
>> + if (!total_time_ms)
>> + tst_brkm(TBROK, cleanup, "can't calc freq, time period is 0");
>>
>> - pthread_join(thread_id, NULL);
>> + tst_resm(TINFO, "elapsed time is %d ms", total_time_ms);
>>
>> - return cur_freq;
>> + return sum * 1000 / total_time_ms;
> Is this conversion really necessary? I guess that we can also return
> the elapsed time here and test that the time is shorted by a few
> percents with boost enabled in the test_run() function.
I guess not really necessary as sum is a constant, just wanted to keep
the function returning frequency which is more interesting result then
time spent. OK, I'll change it to return total_time_ms.
>
> Otherwise it looks good.
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list