perf(stream): run the subtitle/thumbnail prewarm at idle I/O priority
The prewarm's single big read (a ~14 min sequential pass over a 60GB remux to demux subtitles) shares the same disk/NFS as live streaming. Lower the prewarm ffmpeg processes to the Linux IDLE I/O class (ioprio_set) so that background read yields bandwidth to a user who's actually watching — the prewarm slows down under contention instead of starving playback, and runs full speed when the disk is idle. Applied only to the prewarm-only extractors (ExtractSubtitlesVTTMulti, ExtractThumbnailJPEG) via Start → setIdleIOPriority(pid) → Wait; the on-demand /sub + /thumbnail handlers keep normal priority (a user is waiting on those). Linux-only syscall behind a build tag; a no-op stub elsewhere. Best-effort — errors ignored, never required for correctness. Verified: the prewarm ffmpeg shows 'idle' under ionice -p; on-demand stays normal.
This commit is contained in:
parent
8a47132f15
commit
1c8cc1c409
3 changed files with 51 additions and 5 deletions
6
internal/library/mediainfo/ioprio_other.go
Normal file
6
internal/library/mediainfo/ioprio_other.go
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
//go:build !linux
|
||||
|
||||
package mediainfo
|
||||
|
||||
// setIdleIOPriority is a no-op on non-Linux platforms (ioprio is Linux-specific).
|
||||
func setIdleIOPriority(_ int) {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue