diff --git a/src/sw/redis++/event_loop.cpp b/src/sw/redis++/event_loop.cpp index 270ec459..b9f2a2bb 100644 --- a/src/sw/redis++/event_loop.cpp +++ b/src/sw/redis++/event_loop.cpp @@ -31,7 +31,10 @@ EventLoop::EventLoop() { _event_async = _create_uv_async(_event_callback); _stop_async = _create_uv_async(_stop_callback); - _loop_thread = std::thread([this]() { uv_run(this->_loop.get(), UV_RUN_DEFAULT); }); + _loop_thread = std::thread([this]() { + pthread_setname_np(pthread_self(), "redis-ev"); + uv_run(this->_loop.get(), UV_RUN_DEFAULT); + }); } EventLoop::~EventLoop() { @@ -56,6 +59,13 @@ void EventLoop::stop() { } } +int EventLoop::bind_cpu(int cpu_id) { + cpu_set_t cpuset; + CPU_ZERO(&cpuset); + CPU_SET(cpu_id, &cpuset); + return pthread_setaffinity_np(_loop_thread.native_handle(), sizeof(cpu_set_t), &cpuset); +} + void EventLoop::unwatch(AsyncConnectionSPtr connection, std::exception_ptr err) { assert(connection); diff --git a/src/sw/redis++/event_loop.h b/src/sw/redis++/event_loop.h index e867d8fd..d21b5514 100644 --- a/src/sw/redis++/event_loop.h +++ b/src/sw/redis++/event_loop.h @@ -54,6 +54,8 @@ class EventLoop { void stop(); + int EventLoop::bind_cpu(int cpu_id) + private: static void _connect_callback(const redisAsyncContext *ctx, int status);