Ho bisogno di aiuto! Non riesco a risolvere il problema, sto incontrando delle limitazioni hardware - pagina 3

 

Scusate, c'è una limitazione in x64? ecco il primo articolo in cui mi sono imbattuto (beh, non il primo, ok) limitazione di RAM per SQL SERVER 2008 sotto sistema x64 - tanta RAM quanta ne mangia la base.

Forse dovresti fare una prova.

ps forse utile Rimuovere il limite di 4 GB di memoria su 32 bit Windows 8 / 8.1

 
komposter:

C'è una grande quantità di informazioni (circa 20 GB in un file di testo ).

Allora, perché il testo? Non sarebbe più facile iniziare a convertire i dati in forma binaria? Allora si può ottenere una dimensione adatta:

È frustrante quante informazioni ci siano... Se fosse 10 GiG, lo sposterei su RAM-disk (in effetti, in memoria) e leggerei il più possibile.

 
meat:

Allora perché il testo? Non sarebbe più facile iniziare convertendo i dati in binario? Poi vedrai se la dimensione è giusta:

Quindi sembra che 20 gigabyte non siano il limite.
 

Aggiornamento alla versione a 64 bit - saranno disponibili fino a 16TB di RAM.

Memorizza il file in forma binaria per una lettura più veloce.

Elabora il file in chunks secondo la dimensione della RAM.

Cerca di preprocessare i dati per eliminare le informazioni duplicate.

 
komposter:

C'è una grande quantità di informazioni (circa 20 GB in un file di testo).

...

E se fosse necessario ripercorrere queste sequenze una volta sola, lo farei. Ma bisogna passarci attraverso ripetutamente, spostandosi ogni volta un po' in avanti.

...

E se li elaborate a pezzi?

Leggete due chunks, che siano 1Gb ciascuno. Il primo chunk viene processato e il passaggio successivo aggiunge dal secondo chunk "...spostandosi un po' in avanti". Allo stesso tempo tagliate l'inizio del primo pezzo (non serve più perché è sempre "...spostandosi un po' in avanti". Quando il secondo pezzo finisce di leggere il terzo pezzo - e ora aggiungete dal terzo pezzo "...spostandosi un po' in avanti". In questo modo ci saranno sempre due pezzi nella RAM (massimo 2GB) e ci sarà un ordine di grandezza in meno di accesso al disco rigido.

 
GT788:

Aggiornamento alla versione a 64 bit - saranno disponibili fino a 16TB di RAM.

Memorizza il file in forma binaria per una lettura più veloce.

Elabora il file in chunks secondo la dimensione della RAM.

Cerca di preprocessare i dati per eliminare le informazioni duplicate.

Anche XPpro x64 supporta fisico fino a 128 e virtuale fino a 16TB.

 
Silent:

Anche XPpro x64 supporta fisico fino a 128 e virtuale fino a 16TB.

Esatto, ho trovato il massimo di 192 GB per 7.
 
komposter:

C'è una grande quantità di informazioni (circa 20 GB in un file di testo).

L'informazione consiste nello stesso tipo di sequenze, circa un milione.

È necessario passare attraverso tutte le sequenzeripetutamente e fare alcuni calcoli.

La prima cosa che mi viene in mente è leggere tutto il contenuto del file, riempire l'array di strutture con esso e lavorare con loro in memoria.

Ma va male, con il prossimo ridimensionamento MT giura "Memory handler: cannot allocate 5610000 bytes of memory".

Dispatcher mostra che terminal.exe usa 3,5 GB di RAM (su 16 fisici). Suppongo che questo sia perché il processo può ottenere solo 4GB.

EA dice "Non c'è abbastanza memoria(4007 Mb usati, 88 Mb disponibili, 4095 Mb totali)!!!".

E questo è solo il 15,3% dell'importo richiesto (e vorrei aumentarlo anche in futuro).

Non ho più immaginazione.

Devo cercare di ricomporre queste sequenze in modo tale che escano molti-molti pezzi, ma ognuno contiene solo le informazioni necessarie al momento?

Provare anche a comprimere i dati (ho già convertito in float con tipi di char ovunque posso)? Ma questo mi darà un altro 10-20% al massimo, e ho bisogno di ridurre il volume di un ordine di grandezza...

Qualche consiglio, amici? Non arrugginirò).

E nella direzione dell'uso del database non hanno guardato? Impostare il database, scaricandovi i dati da un file di testo. È possibile eseguire qualsiasi aggregazione di dati in anticipo per i calcoli futuri.

Quesiti SQL da Expert Advisor.

Il DBMS può anche essere messo su un server separato per aumentare le prestazioni della stazione di trading.

 

Grazie mille a tutti voi per la vostra partecipazione!

Ora sono off-line per il fine settimana, ma mi assicurerò di rispondere a tutti in mattinata e cercherò di approfittare dei consigli.

 
elugovoy:

Avete considerato l'uso di un database? Impostare un database, caricare i dati in esso da un file di testo. È possibile eseguire una sorta di aggregazione dei dati in anticipo per ulteriori calcoli.

E poi le query SQL dall'Expert Advisor...

Il DBMS può essere installato su un server separato per aumentare le prestazioni.

Ci ho pensato. Mi interessano le opinioni:

komposter:

Un altro pensiero - spostare tutto in un database (MySQL?) e lavorare con esso. L'idea è che i database sono predisposti per tali volumi e per il costante re-logging.

Ci sono degli esperti? Chi ha un'opinione?

Quale sarà l'accelerazione rispetto alla lettura di un file e quale sarà il rallentamento rispetto al lavoro in memoria?