Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   CPU Auslastung bei 10% und bei XP Home bei 70% (https://www.delphipraxis.net/150889-cpu-auslastung-bei-10-und-bei-xp-home-bei-70-a.html)

Jackie1983 29. Apr 2010 16:23


CPU Auslastung bei 10% und bei XP Home bei 70%
 
Hi,

kurz zum Programm, das Programm fragt alle paar Sekunden eine SQL Datenbank ab ob neue Aufgaben da sind.
Es überwacht unsere Server und prüft bestimmte Prozesse.

Da wir keinen Server verwenden wollten und einen kleinen Rechner wollten,
haben wir uns eine Box von Asus angeschafft.
Intel Atom N270 2 x 1.60GHz, 1GB Ram, XP Home. SP3
CPU Auslastung liegt hier bei 70 - 90%. Habe die Anzahl der Threads schon verkleinert, jetzt liegt die
Auslastung bei 50-70%, was immer noch recht hoch ist. Eigentlich sollte das System doch reichen.

Habe das Programm dann eben mal auf einen anderen Rechner probiert.
Intel Pentium 4 2.4 GHz, 500MB Ram, XP Prof. SP1
Auslastung liegt hier bei 10-30%.

Ist die CPU doch zu schwach, oder stöst Home da an seine grenzen?
Weis nicht wie ich das noch genauer prüfen kann.

Mfg

Luckie 29. Apr 2010 16:24

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Wenn die CPU-Auslastung 70 bis 90 Prozent beträgt ist doch alles in Ordnung. Oder habt ihr den Rechner angeschafft, damit er 90 Prozent der Zeit nichts tut?

Jackie1983 29. Apr 2010 16:29

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
lol ok, ist dann nur schlecht wenn man per Web auf die Daten zugreifen möchte und es dauert
bis der Browser die Daten geladen hat.

QuickAndDirty 29. Apr 2010 16:33

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Es ist so ne Sache ....
...weil die Art wie die CPU Auslastug ermittelt wird scheinbar nicht immer Sinn macht.

Da werden schon mal 100 % angezeigt obwohl ich die Maus noch bewegen kann und alle Fenster sich flüssig verschieben und bedienen lassen....alles obwohl ein anderes Programm den Prozessor zu 100% auslastet.....

hoika 29. Apr 2010 16:34

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Hallo,

welche DB ?
welche Abfragen werden durchgeführt ?

Select *
keine Indizes

und die anderen üblichen Verdächtigen beim SQL-Zugriff.


Heiko

WoGe 29. Apr 2010 16:35

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Zitat:

Zitat von Jackie1983
kurz zum Programm, das Programm fragt alle paar Sekunden eine SQL Datenbank ab ob neue Aufgaben da sind.
Es überwacht unsere Server und prüft bestimmte Prozesse.

Habt Ihr mal die Indices geprüft? Das Verhalten klingt nach falschem oder fehlendem Index.

Gruss
wo
[edit] Ha, wieder mal zu langsam [/edit]

Jackie1983 30. Apr 2010 09:53

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Benutze Xampp. Das sind einige Abfragen.

Hier wird geprüft ob es neue Arbeit gibt.
Delphi-Quellcode:
              sql := 'SELECT * FROM tabelle '+
                     'INNER JOIN tabellen '+
                     'WHERE check_start_next < '''+FloatToStr(now)+''' AND '+
                           'check_device_id = '''+DeviceID+'''';
Wenn ja wird ein Thread gestartet der diese Abarbeitet.

Noch eine Abfrage
Delphi-Quellcode:
sql := 'SELECT * FROM netzwerk_gerate WHERE gerat_is_inscan = ''1''';
Das sind so zwei Abfragen die alle paar Sekunden duchgeführt werden.

divBy0 30. Apr 2010 10:04

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Ein Atom N270 ist glaube ich Single-Core. Also nur 1x 1.6 GHz.

hoika 30. Apr 2010 10:07

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Hallo,

ein Select * plus Join liefert alle Felder beider Tabellen.

Bist du dir sicher, dass du wirklich alle Feld-Werte beider Tabellen brauchst ?


Heiko

Jackie1983 30. Apr 2010 10:20

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Zitat:

Zitat von divBy0
Ein Atom N270 ist glaube ich Single-Core. Also nur 1x 1.6 GHz.

Steht auch so bei Wikipedia, aber der Computer sagt mir da was anderes :?

Zitat:

Zitat von hoika
Hallo,
ein Select * plus Join liefert alle Felder beider Tabellen.
Bist du dir sicher, dass du wirklich alle Feld-Werte beider Tabellen brauchst ?
Heiko

Ne brauche eigentlich nicht alle, aber macht das echt soooo einen großen Unterschied?

Mfg

Bernhard Geyer 30. Apr 2010 10:26

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Zitat:

Zitat von Jackie1983
Zitat:

Zitat von divBy0
Ein Atom N270 ist glaube ich Single-Core. Also nur 1x 1.6 GHz.

Steht auch so bei Wikipedia, aber der Computer sagt mir da was anderes :?

Der N270 hat Hyperthreading, also einen "virtuellen" Kern.

blackfin 30. Apr 2010 11:07

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Vielleicht solltest du, um das Problem zu lösen, einfach das Konzept der Abfragen etwas abändern.
Wie hoika schon bemerkt hat, ist es bestimmt in den meisten Fällen nicht notwendig, alle paar Sekunden die kompletten Daten zweier gejointer Tabellen zu holen, um zu prüfen, ob eine neue Aufgabe ansteht.

Ich habe so etwas Ähnliches auch schon gemacht und gehe dabei eigentlich meist so vor:

1) Wenn eine neue Aufgabe eingefügt wird, wird für das entsprechende "device" einfach nur ein boolsches Flag in einer Tabelle auf "1" gesetzt.
(Beispiel: Feld "task_available" in einer Tabelle Namens "tasks" als Boolean-Type)

2) Dieses Flag (und zwar nur dieses) wird vom Client alle paar Sekunden abgefragt:
('SELECT task_available FROM tasks WHERE device_id='+MY_DEVICE_ID)

3) Ist das Flag "1", holt sich der Client die relevanten Daten (in deinem Fall die gejointen Tables) und setzt das Flag wieder auf "0".

Somit ist der "Check-Aufwand" minimal und die CPU-Auslastung dürfte nichtmal zu spüren sein.

Vielleicht bringt dir das ja was :)

grüssle,

Fin

franktron 30. Apr 2010 11:07

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Wenn du die CPU last senken willst installiere LAMP da MySQL unter Linux weniger last erzeugt.

Jackie1983 30. Apr 2010 11:19

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
@blackfin, werde ich mir mal ein paar gedanken zu machen. Aber so kann ich das eigentlich nicht machen, weil die Jobs immer gleich bleiben und nur alle x Sekunden abgearbeitet werden.

@franktron, habe aber kein Linux.

guinnes 30. Apr 2010 11:22

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Ich spendiere bei sowas den Tabellen einen Zeitstempel. Mit Select Max(Stempel) kann ich erst mal abfragen, ob überhaupt was getan werden muß

Jackie1983 30. Apr 2010 11:56

Re: CPU Auslastung bei 10% und bei XP Home bei 70%
 
Habe ja einen Zeitstempel.
40297,5131740972
und frage den so ab
Delphi-Quellcode:
        sql := 'SELECT check_id, check_device_id FROM tabelle '+
               'WHERE check_start_next < '''+FloatToStr(now)+''''+
               'GROUP BY check_device_id';
Habe meine Sourcen jetzt ein wenig angepast.
Mit den Tipps oben und habe die Sourcen ein wenig optimiert.

Jetzt liegt die Auslastung bei 8% - 30%.
Und wenn es was zu tun gibt bei ca. 60%.

Aber ich konnte eine Aufgabe von 4 schon mal verbessern.
Hier auf den schnellen Rechner habe ich das ganze wohl nicht so mitbekommen :D.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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