/** * sets the cpufreq governor * * @param governor cpufreq governor name * @param cpu cpu for which the governor should be set * * @retval 0 on success * @retval -1 when failed
**/
int set_cpufreq_governor(char *governor, unsignedint cpu)
{
dprintf("set %s as cpufreq governor\n", governor);
if (cpupower_is_cpu_online(cpu) != 1) {
perror("cpufreq_cpu_exists");
fprintf(stderr, "error: cpu %u does not exist\n", cpu); return -1;
}
if (cpufreq_modify_policy_governor(cpu, governor) != 0) {
perror("cpufreq_modify_policy_governor");
fprintf(stderr, "error: unable to set %s governor\n", governor); return -1;
}
return 0;
}
/** * sets cpu affinity for the process * * @param cpu cpu# to which the affinity should be set * * @retval 0 on success * @retval -1 when setting the affinity failed
**/
int set_cpu_affinity(unsignedint cpu)
{
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(cpu, &cpuset);
dprintf("set affinity to cpu #%u\n", cpu);
if (sched_setaffinity(getpid(), sizeof(cpu_set_t), &cpuset) < 0) {
perror("sched_setaffinity");
fprintf(stderr, "warning: unable to set cpu affinity\n"); return -1;
}
return 0;
}
/** * sets the process priority parameter * * @param priority priority value * * @retval 0 on success * @retval -1 when setting the priority failed
**/
int set_process_priority(int priority)
{ struct sched_param param;
dprintf("set scheduler priority to %i\n", priority);
param.sched_priority = priority;
if (sched_setscheduler(0, SCHEDULER, ¶m) < 0) {
perror("sched_setscheduler");
fprintf(stderr, "warning: unable to set scheduler priority\n"); return -1;
}
return 0;
}
/** * notifies the user that the benchmark may run some time * * @param config benchmark config values *
**/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.