Ich habe ein Linux-System, in dem wir cgroups verwendet haben, um zwei cpu_exclusive cpusets, A und B, zu erstellen, und in dem wir alle Benutzer-Threads und alle ungebundenen Kernel-Threads in eine an cpuset A angehängte cgroup migriert haben. Dinge, die in cpuset A ausgeführt werden, haben unterschiedliche Scheduler-Richtlinien und unterschiedliche Prioritäten, und in cpuset A laufen viel mehr Threads als in cpuset A Kerne.
Es gibt auch eine kleine Anzahl sehr aktiver Prozesse, die mit cpuset B verbunden sind, wobei die Gesamtzahl der Benutzer-Threads über diese Prozesse hinweg niemals größer ist als die Anzahl der Kerne, die ausschließlich in cpuset B verfügbar sind. Ziel ist es, diese wichtigen Aufgaben, die in cpuset ausgeführt werden, abzuschirmen B von anderen Aktivitäten auf der Maschine und zur Minimierung der Verarbeitungslatenz.
Hat die Planungsrichtlinie / -priorität der in cpuset B ausgeführten Benutzer-Threads in einem solchen Setup einen beobachtbaren Effekt? Anders ausgedrückt: Würde das Ändern der Planungsrichtlinie der B cpuset-Threads von Standard-SCHED_OTHER zu SCHED_FIFO oder SCHED_RR irgendwelche Konsequenzen haben, ob gut oder schlecht?
Es scheint, als sollte die Antwort "Nein" sein, da der Scheduler in der Lage sein sollte, jedem Thread, der in cpuset B ausgeführt wird, einen eigenen dedizierten Kern zuzuweisen, sodass nichts zu priorisieren oder zu planen wäre, und somit die Richtlinie und die relative Priorität von B. cpuset-Threads würden keine Rolle spielen. Auf der anderen Seite gibt es die gebundenen Kernel-Threads und die Aspekte der Scheduler-Domäne, über die man sich Sorgen machen muss, und wahrscheinlich andere Dinge, die ich nicht berücksichtigt habe.
Sind die Planungsrichtlinien und Prioritäten von Threads, die in einem überprovisionierten exklusiven cpuset ausgeführt werden, in irgendeiner praktischen Hinsicht von Bedeutung?