Kobo/Elipsa: More fine-grained control over the amount of online CPU

cores

* Only keep a single core online most of the time.
* Device: Add an enableCPUCores method to allow controlling the amount of
  online CPU cores.
* Move the initial core onlining setup to Kobo:init, instead of the startup script.
* Enable two CPU cores while hinting new (e.g., cache miss) pages in PDF land.
* Enable two CPU cores while processing book metadata.
* Drive-by fix to isolate the DocCache pressure check to KoptInterface
  and actually apply it when it matters most (e.g., k2pdfopt stuff).
This commit is contained in:
NiLuJe
2021-09-23 17:13:18 +02:00
parent 65abac9431
commit 48da545e32
8 changed files with 126 additions and 38 deletions

View File

@@ -659,6 +659,9 @@ function BookInfoManager:collectSubprocesses()
end
end
end
-- We're done, back to a single core
Device:enableCPUCores(1)
end
function BookInfoManager:terminateBackgroundJobs()
@@ -698,6 +701,11 @@ function BookInfoManager:extractInBackground(files)
self.cleanup_needed = true -- so we will remove temporary cache directory created by subprocess
-- If it's the first subprocess we're launching, enable 2 CPU cores
if #self.subprocesses_pids == 0 then
Device:enableCPUCores(2)
end
-- Run task in sub-process, and remember its pid
local task_pid = FFIUtil.runInSubProcess(task)
if not task_pid then