Added BenchConfig class.

This commit is contained in:
XMRig 2020-10-22 17:33:41 +07:00
parent a3daaf09f5
commit 027a6f8ae2
No known key found for this signature in database
GPG key ID: 446A53638BE94409
19 changed files with 321 additions and 127 deletions

View file

@ -36,6 +36,11 @@
#endif
#ifdef XMRIG_FEATURE_BENCHMARK
# include "base/net/stratum/benchmark/BenchConfig.h"
#endif
namespace xmrig
{
@ -103,8 +108,6 @@ void xmrig::ConfigTransform::finalize(rapidjson::Document &doc)
BaseTransform::finalize(doc);
if (m_threads) {
doc.AddMember("version", 1, allocator);
if (!doc.HasMember(CpuConfig::kField)) {
doc.AddMember(StringRef(CpuConfig::kField), Value(kObjectType), allocator);
}
@ -249,18 +252,14 @@ void xmrig::ConfigTransform::transform(rapidjson::Document &doc, int key, const
# endif
# ifdef XMRIG_FEATURE_BENCHMARK
case IConfig::StressKey: /* --stress */
case IConfig::BenchKey: /* --bench */
set(doc, CpuConfig::kField, CpuConfig::kHugePagesJit, true);
set(doc, CpuConfig::kField, CpuConfig::kPriority, 2);
set(doc, CpuConfig::kField, CpuConfig::kYield, false);
add(doc, Pools::kPools, Pool::kUser, Pool::kBenchmark);
if (key == IConfig::BenchKey) {
add(doc, Pools::kPools, Pool::kBenchmark, arg);
}
break;
case IConfig::AlgorithmKey: /* --algo */
case IConfig::BenchKey: /* --bench */
case IConfig::StressKey: /* --stress */
case IConfig::BenchSubmitKey: /* --submit */
case IConfig::BenchVerifyKey: /* --verify */
case IConfig::BenchSeedKey: /* --seed */
case IConfig::BenchHashKey: /* --hash */
return transformBenchmark(doc, key, arg);
# endif
default:
@ -310,3 +309,36 @@ void xmrig::ConfigTransform::transformUint64(rapidjson::Document &doc, int key,
}
}
#ifdef XMRIG_FEATURE_BENCHMARK
void xmrig::ConfigTransform::transformBenchmark(rapidjson::Document &doc, int key, const char *arg)
{
set(doc, CpuConfig::kField, CpuConfig::kHugePagesJit, true);
set(doc, CpuConfig::kField, CpuConfig::kPriority, 2);
set(doc, CpuConfig::kField, CpuConfig::kYield, false);
switch (key) {
case IConfig::AlgorithmKey: /* --algo */
return set(doc, BenchConfig::kBenchmark, BenchConfig::kAlgo, arg);
case IConfig::BenchKey: /* --bench */
return set(doc, BenchConfig::kBenchmark, BenchConfig::kSize, arg);
case IConfig::StressKey: /* --stress */
return add(doc, Pools::kPools, Pool::kUser, BenchConfig::kBenchmark);
case IConfig::BenchSubmitKey: /* --submit */
return set(doc, BenchConfig::kBenchmark, BenchConfig::kSubmit, true);
case IConfig::BenchVerifyKey: /* --verify */
return set(doc, BenchConfig::kBenchmark, BenchConfig::kVerify, arg);
case IConfig::BenchSeedKey: /* --seed */
return set(doc, BenchConfig::kBenchmark, BenchConfig::kSeed, arg);
case IConfig::BenchHashKey: /* --hash */
return set(doc, BenchConfig::kBenchmark, BenchConfig::kHash, arg);
}
}
#endif

View file

@ -42,6 +42,10 @@ private:
void transformBoolean(rapidjson::Document &doc, int key, bool enable);
void transformUint64(rapidjson::Document &doc, int key, uint64_t arg);
# ifdef XMRIG_FEATURE_BENCHMARK
void transformBenchmark(rapidjson::Document &doc, int key, const char *arg);
# endif
bool m_opencl = false;
int64_t m_affinity = -1;
uint64_t m_intensity = 1;

View file

@ -100,6 +100,10 @@ static const option options[] = {
{ "stress", 0, nullptr, IConfig::StressKey },
{ "bench", 1, nullptr, IConfig::BenchKey },
{ "benchmark", 1, nullptr, IConfig::BenchKey },
{ "submit", 0, nullptr, IConfig::BenchSubmitKey },
{ "verify", 1, nullptr, IConfig::BenchVerifyKey },
{ "seed", 1, nullptr, IConfig::BenchSeedKey },
{ "hash", 1, nullptr, IConfig::BenchHashKey },
# endif
# ifdef XMRIG_FEATURE_TLS
{ "tls", 0, nullptr, IConfig::TlsKey },