#include <errno.h>
#include <iostream>
#include <fstream>
-#ifdef HAVE_SCHED
-#include <sched.h>
-#endif
#include "AsyncMessenger.h"
{
ldout(cct, 10) << __func__ << " starting" << dendl;
if (cct->_conf->ms_async_set_affinity) {
-#ifdef HAVE_SCHED
- int cpuid;
- cpu_set_t cpuset;
- CPU_ZERO(&cpuset);
-
- cpuid = pool->get_cpuid(id);
- if (cpuid < 0) {
- cpuid = sched_getcpu();
+ int cid = pool->get_cpuid(id);
+ if (cid >= 0 && set_affinity(cid)) {
+ ldout(cct, 0) << __func__ << " sched_setaffinity failed: "
+ << cpp_strerror(errno) << dendl;
}
-
- if (cpuid < CPU_SETSIZE) {
- CPU_SET(cpuid, &cpuset);
-
- if (sched_setaffinity(0, sizeof(cpuset), &cpuset) < 0) {
- ldout(cct, 0) << __func__ << " sched_setaffinity failed: "
- << cpp_strerror(errno) << dendl;
- }
- /* guaranteed to take effect immediately */
- sched_yield();
- }
-#endif
}
center.set_owner(pthread_self());