Wie schütze ich eine CPU vor dem Linux-Scheduler?

Es ist möglich zu verwendensched_setaffinity Einen Thread an eine CPU anheften, um die Leistung zu steigern (in einigen Situationen)

Von der Linux-Manpage:

Durch das Einschränken eines Prozesses für die Ausführung auf einer einzelnen CPU werden auch die Leistungskosten vermieden, die durch die Cache-Ungültigkeit verursacht werden, die auftritt, wenn ein Prozess nicht mehr auf einer CPU ausgeführt wird und dann die Ausführung auf einer anderen CPU wieder aufnimmt

Wenn ich mehr Echtzeitantworten möchte, kann ich die Scheduler-Richtlinie für diesen Thread in ändernSCHED_FIFO, und erhöhen Sie die Priorität auf einen hohen Wert (bis zusched_get_priority_max), dh der betreffende Thread sollte immer einen anderen Thread, der auf seiner CPU läuft, vorbelegen, wenn er fertig ist.

Zu diesem Zeitpunkt hat der Thread, der auf der CPU ausgeführt wird, die der gerade zuvor geleerte Echtzeit-Thread ausgeführt hat, möglicherweise einen Großteil der Level-1-Cache-Einträge des Echtzeit-Threads entfernt.

Meine Fragen lauten wie folgt:

Kann verhindert werden, dass der Scheduler Threads auf eine bestimmte CPU plant? (zB: entweder die CPU komplett vor dem Scheduler verstecken oder auf andere Weise)Gibt es einige Threads, die unbedingt auf dieser CPU laufen müssen? (zB: Kernel-Threads / Interrupt-Threads)Wenn auf dieser CPU Kernel-Threads ausgeführt werden müssen, welcher maximale Prioritätswert ist angemessen, damit ich die Kernel-Threads nicht aushungere?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage