|
@@ -656,8 +656,10 @@ int get_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p)
|
|
|
{
|
|
|
int cpu = t->cpu_id;
|
|
|
|
|
|
- if (cpu_migrate(cpu))
|
|
|
+ if (cpu_migrate(cpu)) {
|
|
|
+ fprintf(stderr, "Could not migrate to CPU %d\n", cpu);
|
|
|
return -1;
|
|
|
+ }
|
|
|
|
|
|
t->tsc = rdtsc(); /* we are running on local CPU of interest */
|
|
|
|
|
@@ -1088,15 +1090,22 @@ int mark_cpu_present(int cpu)
|
|
|
void turbostat_loop()
|
|
|
{
|
|
|
int retval;
|
|
|
+ int restarted = 0;
|
|
|
|
|
|
restart:
|
|
|
+ restarted++;
|
|
|
+
|
|
|
retval = for_all_cpus(get_counters, EVEN_COUNTERS);
|
|
|
if (retval < -1) {
|
|
|
exit(retval);
|
|
|
} else if (retval == -1) {
|
|
|
+ if (restarted > 1) {
|
|
|
+ exit(retval);
|
|
|
+ }
|
|
|
re_initialize();
|
|
|
goto restart;
|
|
|
}
|
|
|
+ restarted = 0;
|
|
|
gettimeofday(&tv_even, (struct timezone *)NULL);
|
|
|
|
|
|
while (1) {
|