RandomX: don't restart mining threads when the seed changes

It helps to not loose huge pages when the seed changes (every 2048 blocks, ~2.8 days).
This commit is contained in:
SChernykh 2021-12-25 13:39:15 +01:00
parent 5747ccfafc
commit 7f2f50a8d9
3 changed files with 11 additions and 3 deletions

View file

@ -134,7 +134,7 @@ void xmrig::CpuWorker<N>::allocateRandomX_VM()
RxDataset *dataset = Rx::dataset(m_job.currentJob(), node());
while (dataset == nullptr) {
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::this_thread::sleep_for(std::chrono::milliseconds(20));
if (Nonce::sequence(Nonce::CPU) == 0) {
return;
@ -246,7 +246,7 @@ void xmrig::CpuWorker<N>::start()
while (Nonce::sequence(Nonce::CPU) > 0) {
if (Nonce::isPaused()) {
do {
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::this_thread::sleep_for(std::chrono::milliseconds(20));
}
while (Nonce::isPaused() && Nonce::sequence(Nonce::CPU) > 0);

View file

@ -553,7 +553,13 @@ void xmrig::Miner::setJob(const Job &job, bool donate)
# ifdef XMRIG_ALGO_RANDOMX
if (job.algorithm().family() == Algorithm::RANDOM_X && !Rx::isReady(job)) {
stop();
if (d_ptr->algorithm != job.algorithm()) {
stop();
}
else {
Nonce::pause(true);
Nonce::touch();
}
}
# endif

View file

@ -154,6 +154,8 @@ void xmrig::RxQueue::backgroundInit()
continue;
}
// Update seed here again in case there was more than one item in the queue
m_seed = item.seed;
m_state = STATE_IDLE;
m_async->send();
}