Added CPU option "yield".

This commit is contained in:
XMRig 2019-12-03 09:04:20 +07:00
parent cf48a34065
commit c3fd5835c3
No known key found for this signature in database
GPG key ID: 446A53638BE94409
7 changed files with 14 additions and 0 deletions

View file

@ -38,6 +38,7 @@ static const char *kHwAes = "hw-aes";
static const char *kMaxThreadsHint = "max-threads-hint";
static const char *kMemoryPool = "memory-pool";
static const char *kPriority = "priority";
static const char *kYield = "yield";
#ifdef XMRIG_FEATURE_ASM
static const char *kAsm = "asm";
@ -70,6 +71,7 @@ rapidjson::Value xmrig::CpuConfig::toJSON(rapidjson::Document &doc) const
obj.AddMember(StringRef(kHwAes), m_aes == AES_AUTO ? Value(kNullType) : Value(m_aes == AES_HW), allocator);
obj.AddMember(StringRef(kPriority), priority() != -1 ? Value(priority()) : Value(kNullType), allocator);
obj.AddMember(StringRef(kMemoryPool), m_memoryPool < 1 ? Value(m_memoryPool < 0) : Value(m_memoryPool), allocator);
obj.AddMember(StringRef(kYield), m_yield, allocator);
if (m_threads.isEmpty()) {
obj.AddMember(StringRef(kMaxThreadsHint), m_limit, allocator);
@ -120,6 +122,7 @@ void xmrig::CpuConfig::read(const rapidjson::Value &value)
m_enabled = Json::getBool(value, kEnabled, m_enabled);
m_hugePages = Json::getBool(value, kHugePages, m_hugePages);
m_limit = Json::getUint(value, kMaxThreadsHint, m_limit);
m_yield = Json::getBool(value, kYield, m_yield);
setAesMode(Json::getValue(value, kHwAes));
setPriority(Json::getInt(value, kPriority, -1));

View file

@ -55,6 +55,7 @@ public:
inline bool isEnabled() const { return m_enabled; }
inline bool isHugePages() const { return m_hugePages; }
inline bool isShouldSave() const { return m_shouldSave; }
inline bool isYield() const { return m_yield; }
inline const Assembly &assembly() const { return m_assembly; }
inline const String &argon2Impl() const { return m_argon2Impl; }
inline const Threads<CpuThreads> &threads() const { return m_threads; }
@ -72,6 +73,7 @@ private:
bool m_enabled = true;
bool m_hugePages = true;
bool m_shouldSave = false;
bool m_yield = false;
int m_memoryPool = 0;
int m_priority = -1;
String m_argon2Impl;

View file

@ -38,6 +38,7 @@ xmrig::CpuLaunchData::CpuLaunchData(const Miner *miner, const Algorithm &algorit
assembly(config.assembly()),
hugePages(config.isHugePages()),
hwAES(config.isHwAES()),
yield(config.isYield()),
priority(config.priority()),
affinity(thread.affinity()),
miner(miner),

View file

@ -60,6 +60,7 @@ public:
const Assembly assembly;
const bool hugePages;
const bool hwAES;
const bool yield;
const int priority;
const int64_t affinity;
const Miner *miner;

View file

@ -58,6 +58,7 @@ xmrig::CpuWorker<N>::CpuWorker(size_t id, const CpuLaunchData &data) :
m_algorithm(data.algorithm),
m_assembly(data.assembly),
m_hwAES(data.hwAES),
m_yield(data.yield),
m_av(data.av()),
m_miner(data.miner),
m_ctx()
@ -236,6 +237,10 @@ void xmrig::CpuWorker<N>::start()
}
m_count += N;
if (m_yield) {
std::this_thread::yield();
}
}
consumeJob();

View file

@ -71,6 +71,7 @@ private:
const Algorithm m_algorithm;
const Assembly m_assembly;
const bool m_hwAES;
const bool m_yield;
const CnHash::AlgoVariant m_av;
const Miner *m_miner;
cryptonight_ctx *m_ctx[N];

View file

@ -25,6 +25,7 @@
"hw-aes": null,
"priority": null,
"memory-pool": false,
"yield": false,
"max-threads-hint": 100,
"asm": true,
"argon2-impl": null,