AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

CPU Auslastung 100%

Ein Thema von -187- · begonnen am 23. Mai 2011 · letzter Beitrag vom 27. Mai 2011
Antwort Antwort
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#1

CPU Auslastung 100%

  Alt 23. Mai 2011, 12:38
Moin,

ich habe zur Zeit Probleme mit einer sehr hohen CPU Auslastung (90%-100%)! Die Software ist eine Weiterentwicklung aus Tagen in denen ich vielleicht noch nicht so ganz sauberen Code geschrieben habe :] Auch einige Lösungen sind zugegebenerweise Mist. However,

...für eine Neustrukturierung fehlt mir momentan die Zeit! Ich sollte es aber unbedingt in Betracht ziehen.

Um mein Problem jetzt zeitnah zu lösen möchte ich einfach mal eure Ideen zur Vorgehensweise bei solchen Problemen hören.

Ganz kurze Software Erklärung:
Die Software benutzt einige Threads (10-20) um aus dem Internet Daten abzurufen und diesen dann gleich weiterzuverarbeiten. Anschließend werden die Daten in eine Firebird Datenbank schreiben. Die Threads benutzen ein Synchronize um die Datenbank zu beschreiben.

Ich poste hier keinen Code da ich nicht nach der Lösung direkt frage, sondern nach möglichen Ansätzen, bzw. Tools die euch bei der Fehlersuche helfen.

-187-
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#2

AW: CPU Auslastung 100%

  Alt 23. Mai 2011, 12:40
100% CPU-Last riecht fast immer nach einer bösen Schleife
Oder zuviele Worker-Threads gleichzeitig, die das System lahmlegen.
Wenn dies der Fall ist, dann die Berechnungs-Funktionen als "quick 'n dirty fix" in den Threads vielleicht mit ein paar sleep-befehlen verlangsamen.

Ohne aber näher zu wissen, was das Programm genau macht und wo die Engpässe sind, ist das schwer zu sagen

Geändert von blackfin (23. Mai 2011 um 12:45 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: CPU Auslastung 100%

  Alt 23. Mai 2011, 13:26
Hast du mal den SamplingProfiler darauf angesetzt? Ist sehr nützlich, wenn man rausfinden will, wo am meisten Zeit verbraten wird. Nicht vergessen, vorher vom Compiler MAP-Daten erzeugen zu lassen.

Nochwas: Warum nutzen die Threads Synchronize, um in die Datenbank zu schreiben? Eigentlich sollte ein DBMS ohne Probleme mit parallelen Zugriffen von mehreren Prozessen (also auch Threads) zurechtkommen. Mit Synchronize handelst du dir das Problem ein, dass du Code in den Hauptthread verlagerst, der dann oft zum Flaschenhals wird.
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#4

AW: CPU Auslastung 100%

  Alt 23. Mai 2011, 19:28
Hmm so richtig hilft mir der Sampling Profiler nicht bzw. versteh ich wahrscheinlich nicht wie man ihn richtig benutzt.

Ich kann jetzt zum Beispiel nach einem kurzen Lauf erkennen:

user32.dll Samples 35362 Local Ratio 75,94 %
mytool.exe Samples 1419 Local Ratio 3,05%
mytool.exe - System Samples 1143 Local Ratio 80,55%
mytool.exe - System - Move Samples 589 Local Ratio 51,53%
mytool.exe - System - Move - Line 9 Samples 589 Local Ratio 100%

Aber den Ursprung des Fehlers kann ich nicht wirklich ermitteln
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: CPU Auslastung 100%

  Alt 23. Mai 2011, 19:35
Naja, zumindest siehst du so schon mal, dass die meiste CPU-Zeit nicht in deinem eigenen Code verbraten wird, sondern in User32.dll. Jetzt musst du dir überlegen, welche API-Funktionen aus dieser DLL daran Schuld sein könnten. Welche rufst du besonders oft auf? Wie könntest du die Anzahl dieser Aufrufe reduzieren?

Mehr kann ich aus den Daten, die du geliefert hast auch nicht ableiten (das sind aber sicher auch nicht alle).
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: CPU Auslastung 100%

  Alt 23. Mai 2011, 19:36
... den Ursprung des Fehlers kann ich nicht wirklich ermitteln
Nacheinander alles auskommentieren, bis die hohe CPU-Auslastung verschwunden ist. Dann langsam wieder einkommentieren...
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#7

AW: CPU Auslastung 100%

  Alt 23. Mai 2011, 20:37
Hmm mir ist noch was aufgefallen: Das Problem scheint erst nach einer gewissen Zeit aufzutreten (30min)... Jedesmal solange zu warten wäre Wahnsinn

Gibt es noch einen anderen "Monitor" der etwas aussagekräftiger ist?
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz