Hi, On 28/12/2022 11:08, Alexander Carôt wrote:
in a special use case I launch audio- and video streaming classes in my Qt main thread and also a web browser as an interface (webview or webengine) but I want to have their operation consciously separated over available cpu cores such asCore 1: Audio Callback Thread Core 2: Video Callback Thread Core 3: Web browser and not let the system decide what runs on which core.
I can't hold back my curiosity, so I've got to ask: why? Why would you do that? Why do you assume you know better than the operating system?
There are subtleties in what core is assigned to which task. The kernel knows stuff like IRQ affinities, hardware bus connections, IO port assignments and so on that are fairly hard to guess for you in user space. Normally the kernel will find a good balance between cache affinity, short call paths into hardware and load distribution, so there is usually no need for you to meddle in this.
Unless you've found that rare unicorn of a real scheduling problem in your OS _and_ your program only needs to run on that one machine... don't meddle. Once you optimized for one machine, things will perform (much) worse on different machines.
Usually if your program does not perform well it is one of those problems:a) you have unnecessarily complicated call paths in your program: you need to shorten them
b) bad math: sometimes it is worth spending hours simplifying an algorithm to save on a few microseconds - billions of microseconds in a loop are hours after all.
c) too many context switches: use FEWER threads, not more, reduce dependencies between threads
d) your hardware is not powerful enough for what you want to do: save some money, get better hardware
e) you are waiting for the hard disk or network: use a cache (big problem on Windows, Linux already does this for you)
With audio and video this works fine already according to https://eli.thegreenplace.net/2016/c11-threads-affinity-and-hyperthreading because I am using pthreads for them anyways. Now I wonder if this is also possible for Qt and my web browser instance in particular.
You can always call sched_setaffinity with pid==0 from within that thread. Konrad
OpenPGP_signature
Description: OpenPGP digital signature
_______________________________________________ Interest mailing list [email protected] https://lists.qt-project.org/listinfo/interest
