Risposta

Istanze ottimali di SQ3 per core e script per la loro gestione

21 risposte

Soglia

Cliente, bbp_partecipante, comunità, 723 risposte.

Visita il profilo

8 anni fa #115144

Qual è il numero ottimale di istanze SQ3 per core?

Faccio un'istanza SQ per core ed è multithread, quindi faccio 2 thread per SQ sui miei vecchi Dell Poweredges.

Esistono programmi o script per gestire istanze multiple di software? Il mio nuovo server ha 32 core, quindi 32 istanze di SQ3, forse 16, che probabilmente installerò ed eseguirò su di esso per ottenere una velocità di generazione della strategia ottimale. È un sacco di lavoro cambiare le loro impostazioni e tutto il resto se voglio che facciano tutte la stessa cosa.

0

mikeyc

Cliente, bbp_partecipante, comunità, 877 risposte.

Visita il profilo

8 anni fa #137094

SQ è multithread, puoi spiegare perché lo fai? Forse mi sono perso qualcosa in una discussione da qualche parte....

0

Soglia

Cliente, bbp_partecipante, comunità, 723 risposte.

Visita il profilo

8 anni fa #137097

Si ottengono risultati molto più rapidi eseguendo istanze multiple. SQ3 utilizza il multithreading e i core in modo molto inefficiente anche con l'hack Zulu.

1 SQ per core utilizzando 2 thread sembra essere ottimale, forse anche 1 SQ per thread.

0

_Cujo

Cliente, bbp_partecipante, comunità, 101 risposte.

Visita il profilo

8 anni fa #137102

In questo momento sto eseguendo 4 istanze di SQ su questa macchina (ho scattato la foto dello schermo un po' di tempo fa, poi mi sono distratto, ma è ancora in funzione adesso). Con l'hack di Zulu e la riga di comando dal thread di Geektrader.

 

Non è super veloce o altro, ma funziona bene. All'inizio del mese ho cambiato macchina, facendo un downgrade in realtà, dato che l'ultima macchina era eccessiva.

 

edq11x7.png

0

statistica

Abbonato, bbp_partecipante, comunità, 31 risposte.

Visita il profilo

7 anni fa #137325

Qual è il numero ottimale di istanze SQ3 per core?

Faccio un'istanza SQ per core ed è multithread, quindi faccio 2 thread per SQ sui miei vecchi Dell Poweredges.

Esistono programmi o script per gestire istanze multiple di software? Il mio nuovo server ha 32 core, quindi 32 istanze di SQ3, forse 16, che probabilmente installerò ed eseguirò su di esso per ottenere una velocità di generazione della strategia ottimale. È un sacco di lavoro cambiare le loro impostazioni e tutto il resto se voglio che facciano tutte la stessa cosa.

 

Credo che tu abbia 16 core reali / 32 thread. Ho la stessa macchina (due socket Xeon E5-2630), SQ non può utilizzare più di 4 core reali, quindi è possibile utilizzare 16 core reali ed eseguire 4 istanze SQ e lo caricherà 98%, ma è necessario ottimizzare il disco (SSD-PCI-X in RAID0 andrà bene).

Anche se si abilita il 32 su SQ non farà alcuna differenza rispetto a 4 thread. Ho effettuato test approfonditi su diverse macchine e queste sono le prestazioni ottimali; se si eseguono più istanze, queste lotteranno per il tempo della CPU e si formeranno lunghe code. Ma non ho controllato la quantità di strategie, parlo solo del carico della CPU e delle code. Se potete verificare per me l'effettiva velocità di generazione X strategie/minuto. Penso che potrebbe valere la pena di scartare l'accodamento della CPU.

Se eseguite questo test, mi sarete utili per fare lo stesso:

Test #1 Eseguire 1-2-3-4-x istanze SQ per caricare la CPU 100% e misurare quante generazioni ha creato (in questo caso utilizzare Random, in media sarà la stessa dimensione delle strategie.

Test #2 Eseguite 1-2-3-4-x + 1-2-3-4 altre istanze di SQ e misurate quante strategie vengono generate.

 

Spero che su quella macchina sia in funzione Server 2012 o almeno Windows 10.

In questo modo possiamo scoprire qual è l'optimum. Non ho applicato alcun hack e non è necessario, tutti i core reali sono caricati al massimo.

Aspetterò i vostri risultati e poi posterò i miei.

======

 

 

_Cujo

Usare il Cloud è uno spreco di soldi, non ti daranno mai dei core reali, ma delle schifose vCPU che sono 4-10 volte più lente dei core reali. Scegliete un server dedicato o comprate una macchina E5 decente.

0

mentaledge

Cliente, bbp_partecipante, comunità, sq-ultimate, 25 risposte.

Visita il profilo

7 anni fa #137331

L'esecuzione di più istanze consente di ottenere una certa parallelizzazione del flusso di lavoro, utile quando si desidera suddividere le cose in una serie di blocchi più piccoli.

Sono nuovo di SQ e ciò che mi lascia perplesso è che nonostante il numero di core o la macchina stessa la "CPU occupata" non supera i 50%.

Mi sfugge qualcosa che impedisce a SQ di utilizzare tutte le risorse disponibili?

0

statistica

Abbonato, bbp_partecipante, comunità, 31 risposte.

Visita il profilo

7 anni fa #137332

L'esecuzione di più istanze consente di ottenere una certa parallelizzazione del flusso di lavoro, utile quando si desidera suddividere le cose in una serie di blocchi più piccoli.

Sono nuovo di SQ e ciò che mi lascia perplesso è che nonostante il numero di core o la macchina stessa la "CPU occupata" non supera i 50%.

Mi sfugge qualcosa che impedisce a SQ di utilizzare tutte le risorse disponibili?

Si prega di leggere la mia risposta precedente sulla macchina con 16 core reali. 1 istanza utilizza solo 25% per tutti i 16 core (nonostante la configurazione per l'utilizzo di 16 core o 32 thread), quindi ho deciso che si tratta di 4 core. Uso un'altra macchina con 4 core e lo stesso SET usa 98% di CPU. Penso che Sq3 utilizzi al massimo 4x core reali e 7GB di ram (non 6GB come è stato detto, ma 7GB (6,8GB)), il server ha 38GHz di potenza del processore (il threading non è mai contato, viene come un bonus), e sono TUTTI utilizzati solo con 4 istanze, ma io ne uso 6, solo per essere sicuro di spremere tutto il succo da esso, nonostante la coda della CPU.

0

mentaledge

Cliente, bbp_partecipante, comunità, sq-ultimate, 25 risposte.

Visita il profilo

7 anni fa #137333

Sì, ho capito, quello che volevo dire è che vedo lo stesso basso carico anche con 4 core. Questo è per la fase di generazione.

0

geektrader

Customer, bbp_participant, community, 523 replies.

Visita il profilo

7 anni fa #137337

I miei risultati sono che 1,5 thread per istanza sono ottimali (calcolo teorico), ho capito molto tempo fa qual è l'optimum. Dato che il valore è di 1,5 thread, mi attengo a 1 thread per istanza, anche perché la memoria viene raddoppiata se si passa da 1 a 2 thread, ma l'utilizzo della CPU non è realmente raddoppiato (solo ~1,6). Quindi 1 thread per istanza è l'optimum per me. L'avvio avviene tramite un file .bat che copia SQ in X directory e poi le lancia tutte (è necessario farlo tramite la riga di comando "START blah.exe" di Windows dall'interno del file .bat, altrimenti il file .bat esce dopo aver lanciato la prima istanza di SQ).

 

Esempio di 4 istanze (usando directory compresse via NTFS se disponibili, pulendo i temp / log di SQ prima della copia in modo che non vengano copiati, avviandole tutte con priorità BASSA in modo da poter fare altro lavoro e le istanze di SQ usano solo la quantità di CPU attualmente inutilizzata dal mio lavoro quotidiano normale, usando exclusion.txt per evitare di copiare la mia directory /strategies/ dato che è enorme e non ha bisogno di essere copiata per ogni istanza dato che posso semplicemente caricarla dalla directory principale di SQ da ogni istanza):

@echo off
rmdir "C:\Program Files\StrategyQuant\temp" /S /Q
rmdir "C:\Program Files\StrategyQuant\log" /S /Q

rmdir "c:\temp\strategyquant-temp" /S /Q
mkdir "c:\temp\strategyquant-temp"
mkdir "c:\temp\strategyquant-temp\1"
mkdir "c:\temp\code(01)02"
mkdir "c:\temp\code(01)02"
mkdir "c:\temp\code(0144)/strategyquant-temp\4"

compact /c /s: "c:\temp\code(01)01"
compact /c /s: "c:\temp\strategyquant-temp\2"
compact /c /s: "c:\temp\strategyquant-temp\3"
compatto /c /s: "c:\temp\i}strategiaquantitativa-temp\4"

c:


xcopia "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\1" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\1"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC


xcopy "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\2" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\2"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC


xcopy "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\3" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\3"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC


xcopy "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\4" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\4"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC

exclusion.txt contiene solo:

strategie

che escluderà la cartella /strategies come indicato.

 

Naturalmente è necessario regolare la quantità di RAM utilizzata per ogni istanza in base alla memoria del sistema. Il file batch può essere facilmente esteso nei punti necessari per utilizzare più o meno istanze. Ho file batch per 2-21 istanze.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Soglia

Cliente, bbp_partecipante, comunità, 723 risposte.

Visita il profilo

7 anni fa #137338

Credo che tu abbia 16 core reali / 32 thread. Ho la stessa macchina (due socket Xeon E5-2630), SQ non può utilizzare più di 4 core reali, quindi è possibile utilizzare 16 core reali ed eseguire 4 istanze SQ e lo caricherà 98%, ma è necessario ottimizzare il disco (SSD-PCI-X in RAID0 andrà bene).

Anche se si abilita il 32 su SQ non farà alcuna differenza rispetto a 4 thread. Ho effettuato test approfonditi su diverse macchine e queste sono le prestazioni ottimali; se si eseguono più istanze, queste lotteranno per il tempo della CPU e si formeranno lunghe code. Ma non ho controllato la quantità di strategie, parlo solo del carico della CPU e delle code. Se potete verificare per me l'effettiva velocità di generazione X strategie/minuto. Penso che potrebbe valere la pena di scartare l'accodamento della CPU.

Se eseguite questo test, mi sarete utili per fare lo stesso:

Test #1 Eseguire 1-2-3-4-x istanze SQ per caricare la CPU 100% e misurare quante generazioni ha creato (in questo caso utilizzare Random, in media sarà la stessa dimensione delle strategie.

Test #2 Eseguite 1-2-3-4-x + 1-2-3-4 altre istanze di SQ e misurate quante strategie vengono generate.

 

Spero che su quella macchina sia in funzione Server 2012 o almeno Windows 10.

In questo modo possiamo scoprire qual è l'optimum. Non ho applicato alcun hack e non è necessario, tutti i core reali sono caricati al massimo.

Aspetterò i vostri risultati e poi posterò i miei.

======

 

 

_Cujo

Usare il Cloud è uno spreco di soldi, non ti daranno mai dei core reali, ma delle schifose vCPU che sono 4-10 volte più lente dei core reali. Scegliete un server dedicato o comprate una macchina E5 decente.

No, ho un r810 con 4 socket (4x x7560)= 32 core, 64 thread. 128 GB di RAM, Windows Server 2008 Enterprise. Windows 10 non può utilizzare 4 socket e il sistema operativo non mi piace.

0

Soglia

Cliente, bbp_partecipante, comunità, 723 risposte.

Visita il profilo

7 anni fa #137373

Sembra che l'esecuzione di SQ oltre un certo numero di thread abbia un impatto negativo sulla velocità di generazione e la rallenti.

Ho testato 1 SQ con 64 thread per vedere cosa succede: La velocità di generazione passa dai normali 0,2 secondi per strategia a circa 5-10 secondi per strategia. Il carico della CPU si aggirava intorno a 1-3%.

0

statistica

Abbonato, bbp_partecipante, comunità, 31 risposte.

Visita il profilo

7 anni fa #137379

Sembra che l'esecuzione di SQ oltre un certo numero di thread abbia un impatto negativo sulla velocità di generazione e la rallenti.

Ho testato 1 SQ con 64 thread per vedere cosa succede: La velocità di generazione passa dai normali 0,2 secondi per strategia a circa 5-10 secondi per strategia. Il carico della CPU si aggirava intorno a 1-3%.

Grazie per il test, che conferma il mio pensiero.

Il vero test sarà quello di:

1. Creare una cartella con 20000 strategie

2. Clonarlo (per evitare qualsiasi modifica da parte di SQ)

3. Carico (iniziare dall'abbuffata per evitare problemi di memoria / disco / CPU) carico pulito

4. Esecuzione del test per 20 anni su M1 - tempo record

5. Pulire tutto, chiudere

6. Passare alla fase #3, confrontare i risultati (ripetere #3 per ogni combinazione, con Thread, senza Hyper threading e solo Core, ecc.)

è nella mia lista di cose da fare, ma se qualcuno può eseguire questo test e mostrare i risultati, sarebbe utile.

0

Soglia

Cliente, bbp_partecipante, comunità, 723 risposte.

Visita il profilo

7 anni fa #137390

@echo off
rmdir "C:\Program Files\StrategyQuant\temp" /S /Q
rmdir "C:\Program Files\StrategyQuant\log" /S /Q

rmdir "c:\temp\strategyquant-temp" /S /Q
mkdir "c:\temp\strategyquant-temp"
mkdir "c:\temp\strategyquant-temp\1"
mkdir "c:\temp\code(01)02"
mkdir "c:\temp\code(01)02"
mkdir "c:\temp\code(0144)/strategyquant-temp\4"

compact /c /s: "c:\temp\code(01)01"
compact /c /s: "c:\temp\strategyquant-temp\2"
compact /c /s: "c:\temp\strategyquant-temp\3"
compatto /c /s: "c:\temp\i}strategiaquantitativa-temp\4"

c:


xcopia "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\1" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\1"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC


xcopy "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\2" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\2"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC


xcopy "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\3" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\3"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC


xcopy "C:\Program Files\StrategyQuant" "c:\temp\strategyquant-temp\4" /E /Y /EXCLUDE:exclusion.txt

CD "c:\temp\strategyquant-temp\4"
start /LOW StrategyQuant64.exe -J-server -J-Xmx2500m -J-XX:+DisableExplicitGC -J-XX:+AggressiveOpts -J-XX:+UseSerialGC

Ritenete che sia molto più veloce rispetto al caricamento di un file di impostazioni "master" in ciascuno di essi o che sia semplicemente meno problematico?
Evitare il mal di testa probabilmente ne vale la pena da solo.

0

geektrader

Customer, bbp_participant, community, 523 replies.

Visita il profilo

7 anni fa #137394

Sì, voglio che tutto sia corretto e aggiornato per ogni istanza, soprattutto perché non voglio aggiornare i dati su 28 coppie ogni settimana su X istanze. Inoltre, i file batch hanno un alligment della RAM preconfigurato per il mio sistema e la quantità di istanze che vengono eseguite ogni volta. Quindi so che è sempre corretto. Spesso eseguo 16 istanze contemporaneamente, ad esempio, e diventa fastidioso caricare il file impostato in ognuna di esse. Con un SSD + eBoostr, tutto il lancio tramite i file .bat richiede a malapena 3 minuti o meno.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

Historical Forex Data Starting From 1987, 28 Pairs, M1, 99% Error-Free, Lifetime Free Updates

0

Soglia

Cliente, bbp_partecipante, comunità, 723 risposte.

Visita il profilo

7 anni fa #137397

L'ho fatto funzionare ieri sera, è decisamente migliore.
Ho creato una copia separata della cartella "master bin". Prima di eseguire il batch ho cancellato dalla cartella bin tutti i dati storici che non avrei utilizzato. Sono stati copiati molti meno giga.

0

Soglia

Cliente, bbp_partecipante, comunità, 723 risposte.

Visita il profilo

7 anni fa #137398

Utilizzo medio di circa 80-85%. 32SQ con 2 thread ciascuno. 64SQ con 1 thread ciascuno sarebbero stati troppo impegnativi.

File: 32SQs.png32SQs.png

0

Stai visualizzando 15 risposte - da 1 a 15 (di 21 totali)

1 2