![]() |
Duo-Core: Programm nur auf einer CPU laufen lassen?
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 |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
Hallo,
das Stichwort für Google heisst CPU Affinity. ![]() 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 |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
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). |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
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. ![]() |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
Zitat:
|
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
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. ;) :cheers: |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
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 |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
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. |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
An den betroffenen Stellen sind keine Threads im Spiel.
@Hoika: Achso. Ich denke ![]() |
Re: Duo-Core: Programm nur auf einer CPU laufen lassen?
Zitat:
Mal mit einem Prozessbeobachtungstool zuschauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz