Dienstag, 16. April 2024, 14:00 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

1

Mittwoch, 21. Februar 2007, 17:20

gezielte Applicationsverteilung auf Mehrprozessorsystemen

Hallo,

ich arbeite unter WinXP-Home, habe einen Intel-Dualcore-Prozessor und möchte das BS & TWS auf einen Prozessor und Inv. auf dem anderen Prozessor laufen lassen.
Die automatischen Softwareverteilung, so wie es im Moment funktioniert, gibt mir keinen Auskunft darüber, welche Anwendung wo läuft.

Nutzt vielleicht schon jemand so eine definierte Lastverteilung, bzw. gibt es vom Betriebssystem aus hierfür schon eine manuelle Softwareverteilfunktion oder braucht man eine zusätzliche Software?
Falls man eine zusätzliches Tool benötigt, was wäre hier zu empfehlen? Gibt es vielleicht auch schon gute Freewarelösungen?
Danke.

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (21. Februar 2007, 17:21)


bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

2

Mittwoch, 21. Februar 2007, 17:37

RE: gezielte Applicationsverteilung auf Mehrprozessorsystemen

Guck mal hier.
Gruss
Bernd

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Donnerstag, 22. Februar 2007, 03:25

RE: gezielte Applicationsverteilung auf Mehrprozessorsystemen

Hallo bernd,

ich habe das Tool gleich mal ausprobiert mit dem Wizard2007-Performancetestprogramm.
Kurz gesagt das Tool bringt nichts, eher macht es das isolierte Programm auf einer CPU noch langsamer.

Test1: alles läuft auf beiden CPU's ... 4195 Punkte
Test2: Wizard2007 wird auf CPU1 isoliert und der Rest läuft auf CPU0 ... 4177 Punkte (ich hätte eher 4500 oder sogar 5000 Punkte erwartet)

Es gibt ein kostenpflichtiges Programm für 20€ "S.A.D Dual Core Tuner", was bei Tests unter WinXP & Dual-Intelchip 15% Leistungsgewinn gebracht haben soll.

Hat das Tool vielleicht schon jemand mal ausprobiert?
Kann das Ergebnis vielleicht jemand bestätigen?
Oder gibt es vielleicht noch ein besseres Tool als S.A.D?
Danke.

Viele Grüße
Torsten

PS:
Es wäre super, wenn man die Lastverteilung über einen Kommandozeilenaufruf programmieren könnte. Dann könnte man das gleich mit automatisieren beim Start des PC's Investox einem Core zuzuweisen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »sten« (22. Februar 2007, 03:28)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

4

Donnerstag, 22. Februar 2007, 09:39

Hallo Torsten,

getestet habe ich es nicht aber besonders effektiv bewertet ist es bei diversen Testlabors auch nicht. Ich glaube nicht das es für Investox so viel bringt. Richtige Power bekommt man erst,wenn die Software für zwei Kerne programmiert ist. Ich habe eine 3D Software,Dual optimiert laufen- bei der man einen enormen Leistungsschub (mit dem bloßen Auge) sieht..

Hier mal ein Thema dazu:THG
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

5

Samstag, 24. Februar 2007, 19:16

Hallo Udo,

was mich bei meinem Intel Dual-Core-PC noch wundert ist, dass ich im Task-Manager bei der Prozesse-Übersicht keine Aufteilung auf die CPU 1 oder 2 sehe.
Gibt es da vielleicht irgend einen Trick, wie man bei WinXP zumindestens sehen kann, auf welcher CPU welcher Prozess aktuell läuft? Es geht noch gar nicht darum, die Zuordnung selber zu beeinflussen.
Danke.

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (24. Februar 2007, 19:17)


bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

6

Samstag, 24. Februar 2007, 19:19

Ich heisse zwar nicht Udo, aber gibt es zwei Cores auf Deiner CPU? :D :D 8:)

Sonst klick doch mal unter Ansicht im Taskmanager ...
Gruss
Bernd

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

7

Samstag, 24. Februar 2007, 19:48

Hallo,

im Task-Manager unter "Systemleistung" sehe ich 2 CPU-Auslastungskurven.

Aber ich hätte erwartet, dass auch unter "Prozesse" ich nicht nur Name, Benutzername, CPU-Auslastung in % und Speicherauslastung sehe, sondern auch, auf welcher CPU der Prozess gerade läuft.

Aber vielleicht geht das nur mit einen Zusatzprogramm?

Viele Grüße
Torsten

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

8

Samstag, 24. Februar 2007, 20:08

? hä bitte

Solange Du die CPU für einen Prozess nicht explizit zuordnest, kann sie (und soll sie ja auch) bei jedem Kontext Switch ändern. Das ist öfter, als Du huch sagen kannst. Was genau möchtest Du denn da herausfinden mit dieser Momentaufnahme einer
Momentaufnahme?

Das dürfte so aussagekräftig sein wie Schrödingers Katze.
Gruss
Bernd

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

9

Samstag, 24. Februar 2007, 20:58

Einfach nur die Zusammenhänge verstehen und transparenz.

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

10

Samstag, 24. Februar 2007, 22:45

Aha, naja.

Praxis: schau mal den Prozess-Explorer von Mark Russinovich an.

Theorie: Stichworte für google und wikipedia: Kontext Switch, Lastverteilung, Mehrprozessor.

Mit dem Prozessexplorer sieht man, wieviele 100 Kontext Switches selbst beim einem Update Speed von 1 sec. der Anzeige erfolgen für Prozesse, die gerade WENIG tun.

Normalerweise überlässt man die Lastverteilung der Prozessor-Logik, welche der Hersteller eingebaut hat. Fast immer ist das effektiver, als wenn man dem mit Tools dazwischen funkt. Sonst hätte der Vendor seinen Job nicht so gut gemacht.

Sinnvoll kann eine gezielte manuelle Lastverteilung für Debugging Zwecke sein: wir hatten vor längerer Zeit auf einer Maschine mit 48 Prozessoren (bei 96 Cores) Prozesse, die manchmal falsch "rechneten". Durch gezielte Lastverteilung konnten wir das eine Prozessor-Image isolieren, welches (gelegentlich nur) den Fehler erzeugte. Erst dann hat man dem Programmierer des eigentlichen Anwendungsprogrammes geglaubt, dass es doch nicht an ihm lag ... Aber schneller wird man mit manuellen Eingriffen an der Stelle eigentlich nicht.
Gruss
Bernd

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

11

Samstag, 24. Februar 2007, 23:20

Hallo bernd,

Danke für die Info's. Jetzt verstehe ich ein paar Sachen besser.

Viele Grüße
Torsten

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

12

Samstag, 24. Februar 2007, 23:46

Hallo Torsten,

das S.A.D. Tool (Lastenverteilung der CPUs steuern ist das momentan einfachste zu handhabende Tool in dieser Richtung. Die Hintergründe sind interessant (so wie es Bernd beschrieben hat) aber für Dich als Praktiker eher irrelevant, da Du selbst mit fundamentierten Programmier-Kenntnissen Investox nicht zur Dual fähigen Software transformieren kannst. Die Software muss für Dual-CPUs programmiert werden-dann ist die Chance auf einen deutlichen Leistungsschub hoch!. Die Testbewertungen des S.A.D. Tools liegen eher hin zu ausreichend (es liegen nur 2 mir bekannte Ergebnisse vor). Ich denke das Tool ist Luxus der sich kaum bemerkbar macht. Wenn es um die Geschwindigkeit und Auslastung von Investox geht sollte man versuchen an den Investox-internen Rädchen zu drehen und Windows so weit wie möglich zu optimieren-dann wird es auch schneller...
Happy Trading

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

13

Sonntag, 25. Februar 2007, 00:31

Hallo Udo

Was Du da schreibst ...

Zitat

Original von Udo
Die Software muss für Dual-CPUs programmiert werden-dann ist die Chance auf einen deutlichen Leistungsschub hoch!. ..


... stimmt. Aber zusätzlich muss sich die zu programmierende Problemstellung auch für eine Parallelisierung eignen! Dazu sollte sich eine Aufgabe in viele kleine, möglichst unabhängige, Teile zerlegen lassen, die ASYNCHRON voneinander abgearbeitet werden können und am Schluss ihr Ergebniss in ein Patchwork einliefern. Jeder nötige Synchronisations-Mechanismus (nötige Semaphore, Enqueue/Dequeue Handling etc.) stellt einen neuen Flaschenhals dar!

Dazu darf man sich bei der Konzeption der Parallelisierung nicht auf Dual-Cores beschränken. Im profiessionellen Bereich sind seit langem schon mehrere Dutzend CPUs pro Maschine üblich, und auch im Hobby Bereich kündigen sich nun Quad-Cores etc. an.

Wenn wir das aus INV Sicht sehen (und wie sollten wir es im INV Forum sonst sehen wollen) bedeutet dies: bisher läuft INV native auf dem OS. Windows (wie auch Linux, das hätte hier gar keinen Vorteil) ist kein Transaktions-Monitor und dazu stellt dieses OS keinerlei echten Batch-Support zur Verfügung, den man für Massiv-Parallele Ansätze braucht. D.h. wenn Herr Knöpfel die Teile von INV, welche sich für die Parallelisierung eignen (z.B. Optimierung, NN Training, Berechnung von Berechnungstiteln) parallelisieren möchte, müsste er eine Menge selbst programmieren. Vor allem einen Batch-Scheduler, und das ist nicht so trivial, wie es sich da hin schreibt. Oder sich nach einem geeigneten Trägersystem umsehen, was sicher nicht gratis ist.

Bis dahin versuche ich M+ besser kennen zu lernen. Ob INV irgendwann ein bisschen schneller ist oder nicht, am Ende zählt der Einblick in den Markt; Bruto Force Ideen werden wohl nicht zu besseren Handels-Ideen führen :]
Gruss
Bernd

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

14

Sonntag, 25. Februar 2007, 12:33

Hallo,

Zitat

welche sich für die Parallelisierung eignen (z.B. Optimierung, NN Training, Berechnung von Berechnungstiteln)

Es wäre zwar ganz schön, wenn der GA oder das NN-Training statt 15min nur noch 10min brauchen würde, aber meine Motivation mich mit Beschleunigungsmöglichkeiten auf Hardware- & Softwareseite zu beschäftigen liegt an einer ganz anderen Stelle.

Es geht mir hauptsächlich um die Beschleunigung der Berechungsvorgänge beim Trading, d.h. wie kann man noch schneller die Orders zu IB "schießen", also wie kann die Strecke:
neuer Kurs -> Inv. HS-Berechnung --> Signal --> OM-Berechung --> Order zu IB abschicken --> Order ist bei IB angekommen & scharf geschaltet
beschleunigt werden.
Ein paar Millisekunden mehr oder weniger entscheiden darüber wie hoch mein Slippage ist und letztendlich entscheidet sich damit auch, ob das HS in der Summe Gewinne oder Verluste macht. An dieser Stelle geht es also um alles oder nicht.

Die Eigenhandelsabteilungen bei den Banken werde alles unternehmen, das die Gewinne bei ihnen auflaufen. Wir konkurrieren also gegen einen Gegner der über ein 100.000 faches an finanziellen Ressourchen, exclusive Hardwareausstattung, Börsen-Standleitungen, Spezialisten für Hardware & Software & Optimierungsfragen und ganzen Teams die sich den ganzen lieben langen Tag nur mit Handelsstrategien die eine positive Gewinnerwartung haben beschäftigen & diese umsetzen.

Man sollte schauen, dass man zumindestens bei ein paar Punkten auf Augenhöhe mit den Banken-Eigenhandelsabteilungen liegt, um nicht völlig auf verlorenen Posten zu stehen.

Deshalb war meine Überlegung, ob man ein paar ms herausholen könnte, wenn Investox eine CPU ganz für sich alleine bekommt und Betriebssystem, TWS, RTT auf dem anderen Core laufen. Aber ganz so einfach scheint die Sache nicht zu sein.

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »sten« (25. Februar 2007, 12:41)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

15

Sonntag, 25. Februar 2007, 13:05

Hallo Bernd,

meine persönliche Meinung zum Tempo Geschwindigkeit und Handling ist, das der Investox bearbeitet werden muss. Natürlich ist bei immer steigenden Applikationen ein leistungsstarker PC Voraussetzung, Der Investox-Kern könnte optimiert werden, so das man einen Geschwindigkeitzuwachs bekommt. Verschlankt man zusätzlich das Programm und erweitert es mit jeweils für jede Seite nützlichen Applikationen für Entwicklung und Trading bekommt man für beide Seiten einen optimale Linie! Problematisch würde eine Verteilung auf unterschiedliche PCs-nicht zuletzt in Bezug auf Lizenzen.Von Dual Cores erwarte ich mir keinen wirklich durchschlagenden Geschwindigkeitschub solange die Software nicht optimiert ist.

In Punkto Geschwindigkeit liegen die Probleme meist im Intraday-Bereich, und bei der Programmiersprache-z.B. bei Anwenderstopps. Nicht umsonst programmieren viele Anwender mit VB. Manchmal rechnet Investox auch ein bisschen zu viel- und genau hier sehe ich breiten Optimierungsbedarf.
Die neuen Funktionen wie Flash Speicher (Vista-MotherBoard-Hybrid Festplatten) könnten ebenfalls zu einem optimalen Ergebnis führen!Letztendlich müsste man,um das o.g. umzusetzen Investox umorganisieren und ob das im Sinne des Erfinders ist kann nur dieser beantworten.Die Optimierung beginnt demnach nicht bei der Verteilung auf Dual- und Quad ,sondern viel früher-in den Kernbereichen der Software. Wenn diese Mittel ausgeschöpft und optimiert sind, muss man sehen inwiefern der CPU Splitt primäre Relevanz besitzt.Überflüssig wird das sicherlich nicht denn irgendwann muss auch Investox an die schnell voranschreitende Technik angepasst werden...
Happy Trading

bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

16

Sonntag, 25. Februar 2007, 16:44

Zitat

Original von sten
also wie kann die Strecke:
neuer Kurs -> Inv. HS-Berechnung --> Signal --> OM-Berechung --> Order zu IB abschicken --> Order ist bei IB angekommen & scharf geschaltet
beschleunigt werden.

Sind wir denn sicher, dass am Ende nicht die Strecke Order zu IB abschicken --> Order ist bei IB angekommen das Problem ist, und eine Millisekunde im INV Kern da irgenwas dran ändern kann?

Meine Erfahrung aus dem diskretionären Handel ist, wenn es WIRKLICH hektisch wurde an der Börse, dann bekam ich einfach keine gute Verbindung mehr. Es war nie innerhalb nützlicher Frist zu entscheiden wer schuld war (Provider, Broker, Backbone oder was), es ging einfach nicht.

Ich drücke es mal anderst herum aus: solange Du auf einer Dual Core Maschine im aktiven Handel INV weniger als 49% CPU nehmen siehst - liegen Verzögerungen auch nicht an INV sondern man muss ringsherum suchen. Hast Du aber in diesem Bereich Probleme und kannst die 49% bei INV sehen im realen Handel?, dann verstehe ich, warum Du den INV Kern gerne paralellisiert und für Multicore optimiert sehen möchtest (aber vielleicht sind die Handels-Regeln auch ungünstig formuliert; mit einem geeigneten 3 Zeiler kann man jede Maschine auf 100% CPU bringen :] )

Zitat

Original von Udo
Überflüssig wird das sicherlich nicht denn irgendwann muss auch Investox an die schnell voranschreitende Technik angepasst werden...

Fully agree! Ich sehe da nur viiiiel Arbeit auf den armen AK zukommen :]

Und hier noch ein Gedanke, um die Multicore Idee mal zu relativieren:
Alle reden in diesem Hobby Segment (mit Hobby ist NICHT der Handels-Anspruch, sondern die Wintel Umgebung gemeint!) dieser Tage von Dual- und gar Quad Core. Die Anzahl der Prozessoren sind auf einer Maschine aber höchsten die halbe Miete (wenn überhaupt). Noch wichtiger sind die Anzahl der I/O Channels und die Geschwindigkeit der Busse und der Caches. Stellt Euch vor, eine Intel-Büchse mit 2 Quad-Cores - und des gibt eine Platte die das alles supporten soll. Haha :baby: Massiv-Parallele Maschinen (48 Prozessoren und mehr) eleminieren daher auch I/O Wait States; billig ist das aber nicht.

Noch ein Joke am Rande: wenn es Handels-Verzögerungen gibt und INV nicht 49% einer Dual Core CPU nimmt - könnte es an den überlasteten Patten- oder I/O Channels oder dem Netzwerk oder dem Backbone oder dem Provider oder dem Broker liegen. Parallelisierung eines Wintel-Programmes (in diesem Fall INV) löst in diesem Bereich diese Probleme nicht ...

So ist eben dies ...

Zitat

Original von bernd
(z.B. Optimierung, NN Training, Berechnung von Berechnungstiteln)

das Einzige, wo man mit Sicherheit durch Parallelisierung etwas herausholen kann (Berechnungstitel schon mit Einschränkungen, weil der I/O Bereich hier wieder mit reinspielt). Desswegen habe ich diese Bereiche angeführt, und nicht den Real-Handel.

wie gesagt:

Zitat

Original von bernd
.. stimmt. Aber zusätzlich muss sich die zu programmierende Problemstellung auch für eine Parallelisierung eignen!
8:)
Gruss
Bernd

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »bernd« (25. Februar 2007, 16:53)