add single store delay handling for log store as well
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
parent
bc72f59abb
commit
9613d4aa51
@ -14,13 +14,22 @@ PersistentLogTmStoreTask::PersistentLogTmStoreTask(object_id_t objectId, Storage
|
|||||||
|
|
||||||
ReturnValue_t PersistentLogTmStoreTask::performOperation(uint8_t opCode) {
|
ReturnValue_t PersistentLogTmStoreTask::performOperation(uint8_t opCode) {
|
||||||
bool someonesBusy = false;
|
bool someonesBusy = false;
|
||||||
auto stateHandlingForStore = [&](bool storeIsBusy) {
|
bool vcBusyDuringDump = false;
|
||||||
|
bool byteFlowControl = false;
|
||||||
|
auto stateHandlingForStore = [&](bool storeIsBusy, DumpContext& ctx) {
|
||||||
if (storeIsBusy) {
|
if (storeIsBusy) {
|
||||||
someonesBusy = true;
|
someonesBusy = true;
|
||||||
}
|
}
|
||||||
if (fileHasSwapped) {
|
if (fileHasSwapped) {
|
||||||
someFileWasSwapped = fileHasSwapped;
|
someFileWasSwapped = fileHasSwapped;
|
||||||
}
|
}
|
||||||
|
if(ctx.vcBusyDuringDump) {
|
||||||
|
vcBusyDuringDump = true;
|
||||||
|
}
|
||||||
|
if(ctx.dumpedBytes - ctx.bytesDumpedAtLastDelay >= 2048) {
|
||||||
|
byteFlowControl = true;
|
||||||
|
ctx.bytesDumpedAtLastDelay = ctx.dumpedBytes;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
while (true) {
|
while (true) {
|
||||||
if (not cyclicStoreCheck()) {
|
if (not cyclicStoreCheck()) {
|
||||||
@ -28,13 +37,21 @@ ReturnValue_t PersistentLogTmStoreTask::performOperation(uint8_t opCode) {
|
|||||||
}
|
}
|
||||||
someonesBusy = false;
|
someonesBusy = false;
|
||||||
someFileWasSwapped = false;
|
someFileWasSwapped = false;
|
||||||
stateHandlingForStore(handleOneStore(stores.okStore, okStoreContext));
|
vcBusyDuringDump = false;
|
||||||
stateHandlingForStore(handleOneStore(stores.notOkStore, notOkStoreContext));
|
stateHandlingForStore(handleOneStore(stores.okStore, okStoreContext), okStoreContext);
|
||||||
stateHandlingForStore(handleOneStore(stores.miscStore, miscStoreContext));
|
stateHandlingForStore(handleOneStore(stores.notOkStore, notOkStoreContext), notOkStoreContext);
|
||||||
|
stateHandlingForStore(handleOneStore(stores.miscStore, miscStoreContext), miscStoreContext);
|
||||||
if (not someonesBusy) {
|
if (not someonesBusy) {
|
||||||
TaskFactory::delayTask(100);
|
TaskFactory::delayTask(100);
|
||||||
} else if (someFileWasSwapped) {
|
} else if (someFileWasSwapped) {
|
||||||
TaskFactory::delayTask(2);
|
TaskFactory::delayTask(20);
|
||||||
|
} else if(vcBusyDuringDump) {
|
||||||
|
TaskFactory::delayTask(20);
|
||||||
|
} else if(byteFlowControl) {
|
||||||
|
TaskFactory::delayTask(10);
|
||||||
|
} else {
|
||||||
|
// TODO: Lower this as much as possible...
|
||||||
|
TaskFactory::delayTask(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,17 +24,13 @@ ReturnValue_t PersistentSingleTmStoreTask::performOperation(uint8_t opCode) {
|
|||||||
} else if (fileHasSwapped) {
|
} else if (fileHasSwapped) {
|
||||||
TaskFactory::delayTask(20);
|
TaskFactory::delayTask(20);
|
||||||
} else if (dumpContext.packetWasDumped and
|
} else if (dumpContext.packetWasDumped and
|
||||||
dumpContext.numberOfDumpedPackets - dumpContext.bytesDumpedAtLastDelay >= 2048) {
|
dumpContext.dumpedBytes - dumpContext.bytesDumpedAtLastDelay >= 2048) {
|
||||||
dumpContext.bytesDumpedAtLastDelay = dumpContext.dumpedBytes;
|
dumpContext.bytesDumpedAtLastDelay = dumpContext.dumpedBytes;
|
||||||
TaskFactory::delayTask(20);
|
TaskFactory::delayTask(20);
|
||||||
} else {
|
} else {
|
||||||
TaskFactory::delayTask(10);
|
// TODO: Lower this as much as possible...
|
||||||
|
TaskFactory::delayTask(5);
|
||||||
}
|
}
|
||||||
// else if(dumpContext.numberOfDumpedPackets % 20 == 0) {
|
|
||||||
// Manual load management because I don't know what the scheduler is doing..
|
|
||||||
// Removing this delay can lead to evil side effects.
|
|
||||||
// TaskFactory::delayTask(5);
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user