AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Duo-Core: Programm nur auf einer CPU laufen lassen?

Duo-Core: Programm nur auf einer CPU laufen lassen?

Ein Thema von Nuclear-Ping · begonnen am 21. Mär 2007 · letzter Beitrag vom 2. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2   
Nuclear-Ping
(Gast)

n/a Beiträge
 
#1

Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 01:50
Grüße,

ich teste gerade auf einem Notebook, welches einen "Intel Centrino Duo" hat, unsere Software. Grund dafür ist, dass der Besitzer des Notebooks meint, die Software würde bei ihm nicht richtig laufen, einfach hängen bleiben, Blue-Screens auslösen. Auf meinem Entwicklungsrechner und ein paar anderen Rechnern läuft der Spaß allerdings ohne Mucken. Einziger Unterschied: Wir haben keine Duo-Core-Systeme.

Auf dem besagten System hängt die Anwendung ("Keine Rückmeldung") sporatisch bei Analysen oder Optimierungen. Mal gleich am Anfang, mal irgendwann mittendrin. Hierbei werden haufen Daten über USB bzw. die Soundkarte (je nach Analysemethode) empfangen, ausgewertet, Ergebnisse aufbewahrt und zum Schluss dargestellt.

Da ich im Code keinen nachvollziehbaren Fehler finden kann und das Programm auf Single-Core-Systemen blasenfrei läuft, habe ich aus Neugier mal die Anwendung über den Task-Manager auf nur eine CPU (CPU 0) limitiert. Nun lief das Programm den ganzen Abend ohne Mucken, Hänger, Abstürze. Ich gehe mal davon aus, dass es wohl damit zusammenhängt, kann es aber nicht wirklich verstehen oder nachvollziehen. Ich hab noch eine Vermutung, dass es vlt. mit dem FastMM zu tun haben könnte, den ich in der Anwendung verwende. Werde das morgen mal testen und ihn raushauen.

Da ich jetzt nicht fragen will, wie man solche Probleme mit Duo-Core-CPUs löst (falls es nicht am FastMM liegt), frage ich, wie man einer Anwendung sagen kann, dass sie im Falle von Duo-(oder mehr)-Core-CPUs nur auf einem Core (CPU0 z.B.) läuft? Geht das überhaupt (per WinAPI vlt)?

Danke.

Mario
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 06:34
Hallo,

das Stichwort für Google heisst CPU Affinity.

http://www.ait-augsburg.de/downloads.htm

Lade dir dort AB_Affinity runter.
das setzt den Interbase-Prozess auf einen bestimmten Prozessor,
der Quellcode sollte leicht änderbar sein.


Wie stand es im MSDN Journal so schön.
Multithreading nur benutzen, wenn es unbedingt nötig ist
und dann sollte mindestens die Hälfte der Entwickler
ein Doppelprozessor-System bekommen.
*seufz*


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 07:36
Gründe kann es viele geben und die Fehlersuche kann ganz schön schwer sein.
Verwendet/Bindet ihr DLL's ein die mit MFC geschrieben sind. Hier hatten wir auch schon Probleme mit Mehrprozessorsystemen das der TCP/IP-Stack der MFC-Implementierung (AFAIK war's ne 5 oder 6er-Version) nicht Mehrprozessorsicher ist (TCP/IP-Messages gingen verloren).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#4

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 07:36
Wir hatten da Problem auch mit einem Programm das Daten über einen Seriellen COM pollt.
Gab da voll geniale Effekete mit Dualcore Sytsmen wie etwa Vertauschte!!!! Zeichen im
Datenstrom. Ich weiß nicht warum man so eine Hardware entwickelt die die
Kommunikation mit der Peripherie stört aber seis drumm.

Es gab da 2 Lösungen:
1. Schlechte Lösung: Im bios einen Kern lahmlegen )))))))
2. Gute Lösung: Das Fenster/Programm auf einen der Kerne Festlegen.
http://www.delphipraxis.net/internal...ct.php?t=90209
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 07:43
Zitat von QuickAndDirty:
Gab da voll geniale Effekete mit Dualcore Sytsmen wie etwa Vertauschte!!!! Zeichen im
Datenstrom. Ich weiß nicht warum man so eine Hardware entwickelt die die
Kommunikation mit der Peripherie stört aber seis drumm.
Die Frage ist aber ob die HW das Problem ist (Eher unwahrscheinlich) oder irgendein SW-Bestandteil (z.B. irgendwelche eingesetzten Seriellen Komponenten) oder das Betriebssystem hier ein paar unterschiede aufweist (z.B. Messagereihenfolge anders, wobei aber nie eine Reihenfolge garantiert wurde).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 10:41
Danke für die ganzen Tipps. Freut mich, dass es per API geht, die Zuweisung eines Prozesses festzulegen.

@Hoika: Danke, aber InterBase nutzen wir nicht.

  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 10:51
Hallo,

du sollst ja auch nur den Quellcode (in der dpr)
benutzen, der ist dort fest auf den Prozess IBSERVER.EXE gesetzt,
das könntest du ja ändern ..


Heiko
Heiko
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 11:20
Werden Threads im Programm benutzt? Wenn ja, dann die Synchronisierung sicherstellen.
FastMM sollte keine Probleme bereiten. Wenn der kracht, dann weil ein Fehler im Programm ist, den der Borland-Manager bisher verdeckt hat.
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#9

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 12:14
An den betroffenen Stellen sind keine Threads im Spiel.

@Hoika: Achso. Ich denke http://www.delphipraxis.net/internal...ct.php?t=90209 tuts auch.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: Duo-Core: Programm nur auf einer CPU laufen lassen?

  Alt 21. Mär 2007, 12:26
Zitat von Nuclear-Ping:
An den betroffenen Stellen sind keine Threads im Spiel.
Wers glaubt. Es koennen Threads in DLLs oder Komponenten sein, die nicht beruecksichtigt sind.
Mal mit einem Prozessbeobachtungstool zuschauen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 00:51 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