A new PhotoStructure user asks:
Hey!
I’m a recent convert. I’m importing my Google Photos library and the import is crippling my server with ffmpeg (I assume transcoding video files)
I have the
cpuLoadPercent=75
(default value), but I’m not sure it affectsffmpeg
.I read through the
ffmpegThreads
notes, and I don’t think it’s what I’m looking for.Thanks for an amazing product!
Know that there are many PhotoStructure settings to ensure PhotoStructure isn’t working your hardware “too hard” or “too little.”
cpuLoadPercent
This is a goal of system utilization–PhotoStructure won’t enqueue additional work if overall system load is higher than this value, but if the work was already enqueued, the system utilization may exceed this while the currently-enqueued work completes.
maxConcurrentImports
This setting may be better for you. For a 12 core hyperthreaded CPU, try maybe 8 or 12? That’ll only import at most 8 or 12 files concurrently.
Know that photo and video files are placed on two different work queues–only one video file is processed at a time so there should only be, at most, one ffmpeg transcode operation running at any given time.
ffmpegThreads
This only affects video transcoding, and defaults to a fraction of available CPUs. As of Dec 2022, the default is:
const ffmpegThreads = lazy(() =>
clamp(1, 8, Settings.ffmpegThreads.value ?? round(maxCpus() / 4))
)
(so for a 12-core, HT CPU, maxCpus()
will default to 18, and 18/4 = 4 (hence the 4 ffmpeg processes in top
).
You could try a value of 2 or 3, if 4 is too much.
processPriority
The last setting is what priority should PhotoStructure renice
subprocesses to–this defaults to BelowNormal
, which is the same as renice -9
.
Switching to Idle
may result in spurious timeouts, as the OS won’t schedule work for renice -19
procs unless the system is mostly quiescent.