Affinity - fix B

This commit is contained in:
fireice-uk
2017-10-12 12:38:14 +01:00
parent 329a6d9ad1
commit 73482f3065
2 changed files with 9 additions and 8 deletions
+9 -7
View File
@@ -106,6 +106,9 @@ minethd::minethd(miner_work& pWork, size_t iNo, bool double_work, bool no_prefet
oWorkThd = std::thread(&minethd::double_work_main, this);
else
oWorkThd = std::thread(&minethd::work_main, this);
if(!thd_setaffinity(oWorkThd.native_handle(), affinity))
printer::inst()->print_msg(L1, "WARNING setting affinity failed.");
}
cryptonight_ctx* minethd::minethd_alloc_ctx()
@@ -258,7 +261,13 @@ std::vector<iBackend*> minethd::thread_starter(uint32_t threadOffset, miner_work
pvThreads.push_back(thd);
if(cfg.iCpuAff >= 0)
{
#if defined(__APPLE__)
printer::inst()->print_msg(L1, "WARNING on MacOS thread affinity is only advisory.");
#endif
printer::inst()->print_msg(L1, "Starting %s thread, affinity: %d.", cfg.bDoubleMode ? "double" : "single", (int)cfg.iCpuAff);
}
else
printer::inst()->print_msg(L1, "Starting %s thread, no affinity.", cfg.bDoubleMode ? "double" : "single");
}
@@ -296,15 +305,8 @@ minethd::cn_hash_fun minethd::func_selector(bool bHaveAes, bool bNoPrefetch)
void minethd::pin_thd_affinity()
{
//Lock is needed because we need to use oWorkThd
std::lock_guard<std::mutex> lock(work_thd_mtx);
#if defined(__APPLE__)
printer::inst()->print_msg(L1, "WARNING on MacOS thread affinity is only advisory.");
#endif
if(!thd_setaffinity(oWorkThd.native_handle(), affinity))
printer::inst()->print_msg(L1, "WARNING setting affinity failed.");
// pin memory to NUMA node
bindMemoryToNUMANode(affinity);
}
-1
View File
@@ -46,7 +46,6 @@ private:
miner_work oWork;
void pin_thd_affinity();
// Held by the creating context to prevent a race cond with oWorkThd = std::thread(...)
std::mutex work_thd_mtx;
std::thread oWorkThd;