100% Prozessorauslastung bei alten Programm

7f_ff

7f_ff

|
Hallo Freunde,

mich würde mal interessieren, warum man mit einem "alten, einfachen" Programm (aus Win98-Zeiten)
unter neueren Betriebssystemen (getestet mit WinXP) konstante 100% Prozessorauslastung hat.
Kürzlich hab ich 'n SCSI-Controller testen wollen und brauchte mal auf die Schnelle 'n Programm,
dass SMDI unterstützt und bin mal wieder auf den Tiny Wave Editor von Yamaha zurück gekommen.
Das Programm startet einwandfrei, verrichtet die Arbeit ebenfalls einwandfrei, allerdings unter
WinXP (unter Win98 hab ich das nicht mehr in Erinnerung) mit konstanter 100% Prozessorauslastung,
selbst in "idle". Das ist mir anfangs gar nicht aufgefallen und ist für die "Testumgebung" nicht weiter wild,
nur startete der Lüfter voll durch und ging nicht wieder runter solange das Programm an war.
Mit den verschiedenen Kompatibilitätsmodi hatte ich schon rum probiert, allerdings ohne zufriedenstellendes
Ergebnis, sprich es hat sich nichts an der Auslastung getan. Ist das möglichweise so "programmiert" worden,
oder liegt das vlt. an dem OS bzw. an irgendwelchen Komponenten (z.B. CPU?)?
Kennt generell wer solche ein Verhalten unter irgendeinem (Win-)OS oder wäre das als Einzelfall einzustufen?


Gruss
 
Es kann natürlich so programmiert worden sein. Mir ist das mal passiert, als ich im Programm immer auf ein Ereignis gewartet habe, ohne dabei der CPU durch eine kleine Minipause Luft zu lassen. Mein Programm hat also keine wirklich schwere Arbeit verrichtet, war aber in einer Endlosschleife, was zu 100% CPU Last führte. Das OS unterbricht zwar ständig ein Programm und verteilt die Rechenzeit auch an andere Programme, aber wenn eines so ein schlechtes Polling betreibt wie ich es damals programmiert hatte, dann bekommt es halt den Löwenanteil und die Last ist auf 100%.

Ich hoffe ich konnte das ohne großes Fachchinesisch rüber bringen. Ob das aber bei deinem Programm genauso ist kann ich natürlich nicht sagen, da fehlt die Glaskugel.
 
es könnte z.B. sein, das Programme auf Routinen im OS zugreifen wollen, die es dort schon lange nicht mehr gibt. Oft sind es auch Treiber die nicht mehr funktionieren bzw. die sich so geändert haben, das die alten Programme nicht mehr mitkommen. Es gibt sehr vielfältige Möglichkeiten.
 
Danke euch beiden :supi:
Ok, dann ist das wohl kein Einzelfall.
Vlt. lässt sich ja über ein System-Tool etwas aus den Aufrufen aus dem Programm darüber ableiten oder so,
also in welche Richtung das gehen könnte wg. der Auslastung. Ich habe übrigens ein Tool dafür gefunden,
dass es bei der "CPU-Verkochung" limitiert :mrgreen: Aber dennoch ist das schon nicht uninteressant, generell.


Gruss

@Reverse and Play: Alles verständlich gewesen :)
 
Auch wenn Du Dir schon geholfen hast und das "Warum" dann wenig interessiert: Es wirkt so, als ob die Main Message Loop der Anwendung nicht auf eine Message wartet, sondern permanent und schnellstmöglich pollt. Keine Ahnung, ob "GetMessage" mit "PeekMessage" verwechselt wurde oder das ganze zum Konzept gehört, weil vielleicht irgendein Timer ständig Events rausballert.

Man kann aber sehen, dass die CPU Last sofort runtergeht, wenn man ein Menü oder Popup öffnet. Menüs, Buttons u.a. haben ihre eigene, fertig eingebaute Message Loop. Folglich sind diese auch nur mit Umwegen durch Programmierer zu verkorksen. Solange sich das Programm in einer solchen "korrekt programmierten" Menüloop befindet gibt es auch keine Probleme, denn die Main Loop muss auf das Ergebnis der Menüaktion warten, statt wild im Kreis zu rennen. Genau das kann man beim TWE beobachten.
 
Mit welchem Tool hast Du Dir geholfen?
Evtl. hilft es, den Editor auf einen Core zu binden. Right-Click im Taskmanager, dort Zugehörigkeit festlegen.
Sonst sind die Sysinternal Tools genial, um Windows auf die Finger zu schauen. Process Monitor wäre mal ein Start.
https://technet.microsoft.com/en-us/sys ... essmonitor

Evtl. offenbart der ja, was der Prozess so treibt.
 
Danke auch euch beiden :supi:


Cyclotron schrieb:
Auch wenn Du Dir schon geholfen hast und das "Warum" (...)
Doch, doch, genau das war mein Interesse :arrow:
7f_ff schrieb:
(...)Aber dennoch ist das schon nicht uninteressant, generell.

swissdoc schrieb:
Mit welchem Tool hast Du Dir geholfen?
Mit dem Tool BES.


swissdoc schrieb:
Evtl. hilft es, den Editor auf einen Core zu binden. Right-Click im Taskmanager, dort Zugehörigkeit festlegen.
Besitzt nur einen Core, der gut Betagte :lollo:


swissdoc schrieb:
Sonst sind die Sysinternal Tools genial, um Windows auf die Finger zu schauen. Process Monitor wäre mal ein Start.
https://technet.microsoft.com/en-us/sys ... essmonitor

Evtl. offenbart der ja, was der Prozess so treibt.
Genau an das Teil hatte ich auch gedacht gehabt... :P


Gruss
 


Neueste Beiträge

News

Zurück
Oben