I noticed tonight when exporting a batch of images that my cpu was only being used at 60% AND the cpu speed was just at or just below 2ghz, even though my cpu's base speed is 3.10.
As soon as the export finished, cpu utilization was 2-5% and the speed was 3.1 to 3.9 ghz
Does anyone know why the CPU isn't being fully utilized? And why the speed drops while it's being used?
CPU temp shouldn't be an issue, it's water cooled. Disk usage wasn't too high either, plus it's on an SSD drive. The CPU I have is an intel i9-7940X 3.1ghz
I think you are erroneously expecting your CPU to be higher when it likely doesn't need to be. You also didn't say what your GPU is doing where some processing may be done (not sure the GPU is used during Export)
Since you are exporting, it is likely when the CPU is lower, the disk I/O is higher with write operations.
Check in Windows performance to see if you are running on 'Balanced' or 'High Performance'. I have my PC strapped to always use maximum CPU.
In other words, unless you feel your exports are slowing down, you don't have a problem.
Normally, LR tries to use roughly 90% of your CPU for exporting, leaving 10% for interactive use, and the operating system should set the clock speed to maximum for such a heavy workload.
Your symptoms indicate a problem with the cooling system. If the processor starts running too hot, it will set its clockspeed lower until it cools down. Install the Intel Extreme Tuning Utility,
Intel Power Gadget, or one of the many third-party utilities to monitor the processor temperature along with the clock speed. If you see the speed drop in concert with high temperatures, you've got a problem with the cooling system.
@johnrellis I know you are very knowledgeable, so likely I misunderstand your statement of "...Normally, LR tries to use roughly 90% of your CPU for exporting, leaving 10% for interactive use".
Window 10, like other modern OS's does have a lot of scheduling flexibilit but I didn't the LrC would set itself to realtime in order to control the amount of CPU it used. Normally, a program/task/thread is governed by a time-slice assigned to it. If the system is idle, a program could received more time-slices which would increase it's observed CPU time.
I didn't think LrC would allow itself to use 90% of CPU which would likely require running in Realtime priority.
Prior to LR 6, LR did all exports single-threaded, not taking advantage of multiple cores. LR 6.0 starting using all the cores, and CPU utilization would be 100%. Lots of users complained that they couldn't use LR interactively during exports, so LR 6.2 throttled that back, and some users observing as low as 60% utilization complained that it wasn't 100%. Adobe engineer Becky Sowada said in response,
"This was an intentional change to address feedback from customers who need Lightroom to be more responsive while an export is in progress. It is a tradeoff - use more CPU and make exports fast, or use less CPU and make Lightroom more responsive. We feel the current CPU usage is an appropriate middle ground between the two extremes."
She didn't explain how LR implements that policy. I've observed over the recent years with my own LR and helping others that exports typically take 85% to 95% utilization.
The policy implementation could be as simple as "process no more than n exports concurrently", where n = floor (0.88 * number of logical processors). So on a CPU with 4 cores and 8 logical processors, LR would do no more than 7 exports concurrently. Since exporting on modern CPUs is CPU-bound and not at all limited by disk I/O, this might work reasonably well.
Or the policy implementation could be a little more dynamic: LR would increase the number n of concurrent exports until CPU utilization exceeds 85%.
In either of these possibilities, the policies could be tweaked based on the number of physical and number of logical processors, to ensure that smaller CPUs don't get overwhelmed and that larger CPUs more effectively use their idle processors. And neither of these possibilities relies on any kind of real-time scheduling or thread prioritization from the operating system.
(*) Logical processor is the more common operating system term for what Intel confusingly calls a "thread".
Thanks @johnrellis . When you said "interactive" I thought you were talking about other other processes on the OS and not just Lightroom activity.
So the explanation does make sense since Lightroom could be sharing the time-slice across processes and threads. BTW, thread within a process is a not an Intel term. It's used in other OS's.
Again, I don't believe it's LrC controlling CPU resource assignment. It simply can use close to the maximum if nothing else is running. If you were doing a large export plus a batch Topaz job, you'd likely see them fighting over CPU but's the OS that is controlling the allocation and not LrC or Topaz.
"If you were doing a large export plus a batch Topaz job, you'd likely see them fighting over CPU"
Yes. You can see that within LR itself by starting mulitple exports.
"thread within a process is a not an Intel term. It's used in other OS's."
Intel uses "thread" to refer to what others (including some operating systems) variously call a "logical processor", "logical core",..., whereas operating systems and languages use "thread" to refer to an execution context ("thread of control") sharing the same address space ("process").
Thanks for all the replies. Sorry I didn't get the notifications for the replies until today for some reason.
Anyhow, I think the suggestion of the cooling system being the problem might be the right answer in my case. Right now, with the CPU being idle, i'm getting temps right around 50c which seems higher when paired with this cooler (corsair h100i v2). Thats with the pump running at max and the fan running at around 1300rpm.