Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Rechenintensive Prozesse bei hoher CPU- oder Speicherauslastung pausieren
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

Rechenintensive Prozesse bei hoher CPU- oder Speicherauslastung pausieren

beantworten | zitieren | melden

Ich möchte mir ein Framework bauen, dass abhängig von der Performance des Rechners einen Prozess pausiert. Im Detail: Ich habe viele Anwendungen (z.B. Codierungsthread), die sehr rechenintensiv sind. Die möchte ich zur Laufzeit pausieren lassen wenn zum Beispiel der Prozessor über 70% ausgelastet ist oder der RAM von anderen Programmen über 70% gefüllt ist. Dafür gibt es natürlich viele Wege... welcher ist der Beste? Kennt jemand vielleicht schon ein existierendes Projekt?
private Nachricht | Beiträge des Benutzers
Coder007
myCSharp.de - Member



Dabei seit:
Beiträge: 1249

beantworten | zitieren | melden

Ich glaube nicht, dass es für sowas ein allgemeines Framework gibt. Die Anforderung kommt ja auch wirklich nicht alle Tage. Du kannst ja selber probieren, sowas zu lösen. Wie stark der Prozessor ausgelastet ist, kannst du WMI abfragen, wie stark einzelne Prozesse den auslasten, auch. Jetzt könntest z.B. so einen Monitorthread schreiben, der alle 5-10 Sekunden prüft, ob du die Verarbeitung pausieren willst, und das z.B. über eine Semaphore signalisieren, die deine Workerthreads regelmäßig abprüfen.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo digi333,

was spricht dagegen, die Priorität des rechenintensiven Prozesses oder Threads herunterzusetzen? Dann verbraucht er automatisch nur die CPU-Leistung, die gerade frei ist.

Die Speicherauslastung müsste man dann natürlich noch separat prüfen.

herbivore
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7547
Herkunft: Waidring

beantworten | zitieren | melden

Hallo digi333,

ich würde das auch so lösen wie herbivore vorgeschlagen hat, also dem Betriebssystem dies durch eine Einstellung mitteilen. Für Prozesse mittels Task-Manager und für Threads kann das auch bei der Thread-Erstellung eingestellt werden.

Über den RAM würde ich mir keine Sorgen machen, denn dazu müsste auch die Auslagerungsdatei mit berücksichtigt werden und das wird dann verzwickt.

mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers