Respuesta

Instancias óptimas de SQ3 por núcleo y scripts para gestionarlas

21 respuestas

Umbral

Cliente, bbp_participant, comunidad, 723 respuestas.

Visitar el perfil

hace 7 años #115144

¿Cuál es el # óptimo de instancias SQ3 que ejecutas por núcleo?

Hago 1 instancia de SQ por núcleo y su multihilo por lo que hago 2 hilos por SQ en mi viejo Dell Poweredges.

¿Existen programas o scripts para gestionar múltiples instancias de software? Mi nuevo servidor tiene 32 núcleos, es decir, 32 instancias de SQ3, tal vez 16, probablemente voy a instalar y ejecutar en él para velocidades óptimas de generación de estrategia. Eso es un montón de trabajo cambiando su configuración y todo si quiero que todos ellos haciendo exactamente lo mismo.

0

mikeyc

Cliente, bbp_participant, comunidad, 877 respuestas.

Visitar el perfil

hace 7 años #137094

SQ es multihilo, ¿puede explicar por qué lo hace? Tal vez me perdí algo en una discusión en algún lugar....

0

Umbral

Cliente, bbp_participant, comunidad, 723 respuestas.

Visitar el perfil

hace 7 años #137097

Se obtienen resultados mucho más rápidos ejecutando múltiples instancias. SQ3 utiliza multithreading/cores muy ineficientemente incluso con el hack Zulu.

1 SQ por núcleo utilizando 2 hilos parece ser lo óptimo, tal vez incluso 1 SQ por hilo.

0

_Cujo

Cliente, bbp_participant, comunidad, 101 respuestas.

Visitar el perfil

hace 7 años #137102

Estoy ejecutando 4 instancias de SQ en este momento en esta máquina (tomé la captura de pantalla hace un rato, luego se distrajo, pero todavía se está ejecutando ahora). Con el hack Zulu y la línea de comandos de cosas Geektrader hilo.

 

No es super rápido, ni nada, pero funciona bien. Cambié de máquina a principios de mes, en realidad hice un downgrade, ya que la última máquina era excesiva.

 

edq11x7.png

0

estadística

Abonado, bbp_participant, comunidad, 31 respuestas.

Visitar el perfil

hace 7 años #137325

¿Cuál es el # óptimo de instancias SQ3 que ejecutas por núcleo?

Hago 1 instancia de SQ por núcleo y su multihilo por lo que hago 2 hilos por SQ en mi viejo Dell Poweredges.

¿Existen programas o scripts para gestionar múltiples instancias de software? Mi nuevo servidor tiene 32 núcleos, es decir, 32 instancias de SQ3, tal vez 16, probablemente voy a instalar y ejecutar en él para velocidades óptimas de generación de estrategia. Eso es un montón de trabajo cambiando su configuración y todo si quiero que todos ellos haciendo exactamente lo mismo.

 

Creo que tienes 16 núcleos reales / 32 hilos. Tengo la misma máquina (dos sockets Xeon E5-2630), SQ no puede utilizar más de 4 núcleos reales, por lo tanto, puede utilizar 16 núcleos reales y ejecutar 4 instancias SQ y se cargará 98%, pero hay que optimizar el disco (SSD-PCI-X en RAID0 hará )

Incluso si habilita 32 en SQ no hará ninguna diferencia entonces 4 hilos. He probado ampliamente en diferentes máquinas y este es el rendimiento óptimo, si se ejecuta más instancias que se lucha por el tiempo de CPU y será larga cola. Pero no he comprobado la cantidad de estrategias, solo hablo de carga de CPU y colas. Si me puedes comprobar la velocidad real de generación X estrategias/minuto. Creo que valdría la pena descartar la cola de CPU.

Si haces esa prueba, será útil para que yo pueda hacer lo mismo:

Prueba #1 Ejecute las instancias 1-2-3-4-x SQ para cargar la CPU 100%, y mida cuántas generaciones creó (use Random en este caso, en promedio será el mismo tamaño de estrategias.

Prueba #2 Ejecute 1-2-3-4-x + 1-2-3-4 más instancias de SQ y mida cuántas estrategias se generan.

 

Espero que ejecutes Server 2012 en esa máquina o al menos Windows 10.

De esta manera podemos averiguar cuál es el óptimo. No he aplicado ningún hacks a no hay necesidad de todos los núcleos reales se cargan completamente.

Esperaré tus resultados y luego publicaré los míos.

======

 

 

_Cujo

El uso de la nube es una pérdida de dinero que nunca le dará núcleos reales, pero vCPU mierda que es como 4-10 veces más lento. entonces núcleos reales. Sólo tienes que ir para servidor dedicado o comprar una máquina decente E5.

0

mentaledge

Cliente, bbp_participant, comunidad, sq-ultimate, 25 respuestas.

Visitar el perfil

hace 7 años #137331

Ejecutar múltiples instancias proporcionará cierta paralelización del flujo de trabajo, lo que es útil cuando quiero dividir las cosas en un conjunto más pequeño de bloques de construcción.

Soy nuevo en SQ y lo que me extraña es que a pesar del número de núcleos o de la propia máquina la "CPU ocupada" no pasa de 50%.

¿Me he perdido algo que impide a SQ utilizar todos los recursos disponibles?

0

estadística

Abonado, bbp_participant, comunidad, 31 respuestas.

Visitar el perfil

hace 7 años #137332

Ejecutar múltiples instancias proporcionará cierta paralelización del flujo de trabajo, lo que es útil cuando quiero dividir las cosas en un conjunto más pequeño de bloques de construcción.

Soy nuevo en SQ y lo que me extraña es que a pesar del número de núcleos o de la propia máquina la "CPU ocupada" no pasa de 50%.

¿Me he perdido algo que impide a SQ utilizar todos los recursos disponibles?

Por favor, lea mi respuesta anterior en la máquina con 16 núcleos reales. 1x instancia utiliza sólo 25% todos los 16 núcleos (a pesar de la configuración para utilizar 16 núcleos / o 32Threads), por lo tanto, decido que es 4x núcleos. Yo uso otra máquina con 4 núcleos y el mismo SET utiliza 98% CPU. Creo que Sq3 sólo utiliza un máximo de 4x núcleos reales y 7GB de ram ( no 6GB como se mencionó, pero 7GB (6,8GB) ), El servidor tiene 38GHz de potencia del procesador (roscado nunca se cuenta viene como un bono), y TODOS ellos se utilizan sólo con 4 instancias, pero yo uso 6, sólo para asegurarse de que exprimir todo el jugo de ella, a pesar de la cola de la CPU.

0

mentaledge

Cliente, bbp_participant, comunidad, sq-ultimate, 25 respuestas.

Visitar el perfil

hace 7 años #137333

Sí, lo he entendido, lo que quería decir es que veo la misma carga baja incluso en 4x núcleos. Eso es para la fase de generación.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visitar el perfil

hace 7 años #137337

Mis conclusiones son que 1,5 hilos por instancia son óptimos (cálculo teórico), imaginé hace un año cuál es el óptimo. Dado que el valor es 1,5 hilos, me quedo con 1 hilo por instancia, también porque la memoria se duplica si se cambia de 1 a 2 hilos, pero el uso de la CPU no se duplica realmente (sólo ~ 1,6). Por lo tanto, 1 hilo por instancia es el óptimo para mí. El lanzamiento se realiza a través de un archivo .bat que copia SQ a X directorios y luego los lanza todos (tienes que hacer esto a través de la línea de comandos "START blah.exe" de Windows desde dentro del archivo .bat, de lo contrario el archivo .bat se cierra después de lanzar la primera instancia de SQ).

 

Ejemplo de 4 instancias (usando directorios comprimidos via NTFS si esta disponible, limpiando temp / logs de SQ antes de copiar para que no se copien, arrancando todas con prioridad BAJA para que pueda hacer otro trabajo y las instancias de SQ solo usen la cantidad de CPU que actualmente no es usada por mi trabajo diario normal, usando exclusion.txt para evitar copiar mi directorio /strategies/ ya que este es enorme y no necesita ser copiado para cada instancia ya que solo puedo cargarlo desde el directorio principal de SQ desde cada instancia):

@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\strategyquant-temp\2"
mkdir "c:\temp\strategyquant-temp\3"
mkdir "c:\temp\strategyquant-temp\4"

compact /c /s: "c:\temp\strategyquant-temp\1"
compact /c /s: "c:\temp\strategyquant-temp\2"
compact /c /s: "c:\temp\strategyquant-temp\3"
compact /c /s: "c:-temp\strategyquant-temp\4"

c:


xcopy "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 sólo contiene:

estrategias

que excluirá el directorio /strategies como se ha mencionado.

 

Por supuesto, también es necesario ajustar la cantidad de RAM utilizada para cada instancia en función de la memoria del sistema. Y el archivo por lotes se puede ampliar fácilmente en los lugares necesarios para utilizar más o menos instancias. Tengo archivos bat para 2 a 21 instancias.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

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

0

Umbral

Cliente, bbp_participant, comunidad, 723 respuestas.

Visitar el perfil

hace 7 años #137338

Creo que tienes 16 núcleos reales / 32 hilos. Tengo la misma máquina (dos sockets Xeon E5-2630), SQ no puede utilizar más de 4 núcleos reales, por lo tanto, puede utilizar 16 núcleos reales y ejecutar 4 instancias SQ y se cargará 98%, pero hay que optimizar el disco (SSD-PCI-X en RAID0 hará )

Incluso si habilita 32 en SQ no hará ninguna diferencia entonces 4 hilos. He probado ampliamente en diferentes máquinas y este es el rendimiento óptimo, si se ejecuta más instancias que se lucha por el tiempo de CPU y será larga cola. Pero no he comprobado la cantidad de estrategias, solo hablo de carga de CPU y colas. Si me puedes comprobar la velocidad real de generación X estrategias/minuto. Creo que valdría la pena descartar la cola de CPU.

Si haces esa prueba, será útil para que yo pueda hacer lo mismo:

Prueba #1 Ejecute las instancias 1-2-3-4-x SQ para cargar la CPU 100%, y mida cuántas generaciones creó (use Random en este caso, en promedio será el mismo tamaño de estrategias.

Prueba #2 Ejecute 1-2-3-4-x + 1-2-3-4 más instancias de SQ y mida cuántas estrategias se generan.

 

Espero que ejecutes Server 2012 en esa máquina o al menos Windows 10.

De esta manera podemos averiguar cuál es el óptimo. No he aplicado ningún hacks a no hay necesidad de todos los núcleos reales se cargan completamente.

Esperaré tus resultados y luego publicaré los míos.

======

 

 

_Cujo

El uso de la nube es una pérdida de dinero que nunca le dará núcleos reales, pero vCPU mierda que es como 4-10 veces más lento. entonces núcleos reales. Sólo tienes que ir para servidor dedicado o comprar una máquina decente E5.

No, tengo un r810 con 4 sockets (4x x7560)= 32 cores, 64 threads. 128GB ram, Windows Server 2008 Enterprise. Windows 10 no puede utilizar 4 sockets, y no me gusta el sistema operativo.

0

Umbral

Cliente, bbp_participant, comunidad, 723 respuestas.

Visitar el perfil

hace 7 años #137373

Parece que ejecutar SQ más allá de un cierto número de hilos afecta negativamente a la velocidad de generación y la ralentiza.

He probado 1 SQ ejecutando 64 hilos sólo para ver qué pasa: Las velocidades de generación pasan de los 0.2s normales por estrategia a unos ~5-10s por estrategia. La carga de la CPU rondaba el uso de 1-3%.

0

estadística

Abonado, bbp_participant, comunidad, 31 respuestas.

Visitar el perfil

hace 7 años #137379

Parece que ejecutar SQ más allá de un cierto número de hilos afecta negativamente a la velocidad de generación y la ralentiza.

He probado 1 SQ ejecutando 64 hilos sólo para ver qué pasa: Las velocidades de generación pasan de los 0.2s normales por estrategia a unos ~5-10s por estrategia. La carga de la CPU rondaba el uso de 1-3%.

Gracias por la prueba , confirma mi pensamiento .

La verdadera prueba será:

1. Crear una carpeta con 20000 estrategias

2. Clonarlo (para evitar cualquier modificación de SQ)

3. Carga (empezar desde el atracón para evitar problemas de memoria / disco / CPU) carga limpia

4. Prueba de funcionamiento durante 20 años en M1 - tiempo récord

5. Limpiar todo, cerrar

6. Ir al paso #3, comparar resultados (repetir #3 para cada combinación, con Threads, sin Hyper threading y sólo Cores etc.)

esta en mi lista de cosas por hacer, pero si alguien puede hacer esta prueba, y mostrar los resultados, seria de gran ayuda.

0

Umbral

Cliente, bbp_participant, comunidad, 723 respuestas.

Visitar el perfil

hace 7 años #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\strategyquant-temp\2"
mkdir "c:\temp\strategyquant-temp\3"
mkdir "c:\temp\strategyquant-temp\4"

compact /c /s: "c:\temp\strategyquant-temp\1"
compact /c /s: "c:\temp\strategyquant-temp\2"
compact /c /s: "c:\temp\strategyquant-temp\3"
compact /c /s: "c:-temp\strategyquant-temp\4"

c:


xcopy "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

¿Consideras que esto es mucho más rápido que cargar un archivo de configuración "maestro" en cada uno de ellos o simplemente menos quebradero de cabeza?
Evitar el dolor de cabeza probablemente hace que merezca la pena por sí solo.

0

geektrader

Customer, bbp_participant, community, 522 replies.

Visitar el perfil

hace 7 años #137394

Sí, quiero que todo esté correcto y actualizado para cada instancia, especialmente porque no quiero actualizar los datos de 28 pares cada semana en X instancias. Además, los archivos por lotes han preconfigurado RAM alligment para mi sistema y la cantidad de instancias que se ejecutan cada vez. Así que sé que siempre es correcto. Y a menudo ejecuto 16 instancias a la vez, por ejemplo, entonces incluso se vuelve molesto cargar el archivo de configuración en cada una de ellas. Con un SSD + eBoostr, todo el lanzamiento a través de los archivos .bat apenas tarda 3 minutos o menos.


🚀 Unlock Your Edge in Automated Forex Strategy Development 🚀

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

0

Umbral

Cliente, bbp_participant, comunidad, 723 respuestas.

Visitar el perfil

hace 7 años #137397

Lo corrí anoche, es definitivamente mejor.
He creado una copia separada de la carpeta "master bin". Antes de ejecutar el lote, borré todos los datos históricos que no iba a utilizar de la carpeta bin. Se copiaron muchos menos gigas.

0

Umbral

Cliente, bbp_participant, comunidad, 723 respuestas.

Visitar el perfil

hace 7 años #137398

Promedio de uso de 80-85%. 32SQs con 2 hilos cada uno. 64SQs con 1 hilo cada uno habría sido demasiado trabajo.

Archivo: 32SQs.png32SQs.png

0

Viendo 15 respuestas - de la 1 a la 15 (de un total de 21)

1 2