Kern Reservierung für eigen App - Affinity von System Prozessen



  • Hallo,
    da ich ein rechenintensives weiches Echtzeitprogramm habe, möchte ich für dieses Programm einen einzelnen Kern reservieren.

    Dazu hab ich mir überlegt, das ich alle laufenden Prozesse auf die restlichen Kerne einschränke und meiner Echtzeitprogramm den "freien" Kern zuweise. Zusätzlich setze ich die Priorität auf Hoch.

    Jedoch hab ich festgestellt, dass ich mit (129 als Test für den letzten und ersten Kern)

    while (Process32Next(hSnapShot, processInfo)!=FALSE)
    	{
    	hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, processInfo->th32ProcessID);
    SetProcessAffinityMask(hProcess, 129);
    }
    

    leider nicht die Zugehörigkeit aller laufenden Prozesse ändern kann. Einige
    System Prozesse wie svchost.exe oder csrss.exe haben von vornherein die Priorität "3435973836" (Ist wohl nicht initialisiert und wird somit gar nicht verwendet) und behalten diese natürlich nach gescheiterte Anwendung von SetProcessAffinityMask.

    Auch im Taskmanager ist der "Zugriff verweigert".

    Ist es möglich auch diese Prozesse auf andere Kerne umzuverteilen damit der eine Kern wirklich nur für mein Echtzeitprogramm reserviert bleibt?

    ZusatzInfo:
    Zielsystem Win7 64bit
    Echtzeitprogramm hat nur einen Thread daher "reicht" ein reserviert Kern.
    Zwei Bilder die den Unterschied zeigen:
    https://picload.org/image/rdipogop/aff1.png
    https://picload.org/image/rdipoglg/aff2.png



  • Lass das mal Windows für dich regeln:-D Das weiß es 100%ig besser als du!



  • Eben nicht! Windows ist kein RTOS und ich versuche zwanghaft das Beste drauß zumachen (da ein Windows Kompilat vorliegt). Für alltägliche Anwendungen wie Office, Spiele oder anderes kann Windows das sicher besser und weiß was es tut um alles parallel abzuarbeiten. Jedoch verhindern Interrupts und Scheduling die prädikative zeitliche Ausführung im ms Bereich einer SOFT Real Time Anwendung. Interrupts werde ich auch nicht wegbekommen aber ich kann sehr wohl die Echtzeitverletzungen reduzieren.




Anmelden zum Antworten