Besoin d'aide ! Je ne peux pas résoudre le problème, je me heurte à des limitations matérielles. - page 3

 

Désolé les nuls, y a-t-il une limitation en x64 ? Voici le premier article que j'ai trouvé (enfin, pas le premier, ok) Limitation de la RAM pour SQL SERVER 2008 sous un système x64 - autant de RAM que la base en consomme.

Tu devrais peut-être essayer.

ps peut-être utile Supprimer la limite de mémoire de 4 Go sur Windows 8 / 8.1 32 bits

 
komposter:

Il y a une grande quantité d'informations (environ 20 Go dans un fichier texte ).

Alors, pourquoi du texte ? Ne serait-il pas plus simple de commencer par convertir les données sous forme binaire ? Vous obtiendrez alors une taille appropriée :

C'est frustrant de voir combien d'informations il y a... S'il s'agissait de 10 GiG, je le déplacerais sur le disque RAM (en fait, dans la mémoire) et je lirais autant que je peux.

 
meat:

Alors pourquoi du texte ? Ne serait-il pas plus simple de commencer par convertir les données en binaire ? Vous verrez alors si la taille est correcte :

Il semble donc que 20 gigaoctets ne soit pas la limite.
 

Passez à la version 64 bits - jusqu'à 16 To de RAM seront disponibles.

Stocker le fichier sous forme binaire pour une lecture plus rapide.

Traiter le fichier par morceaux en fonction de la taille de la RAM.

Essayez de prétraiter les données pour éliminer les informations en double.

 
komposter:

Il y a une grande quantité d'informations (environ 20 Go dans un fichier texte).

...

Et s'il était nécessaire de passer une fois par ces séquences, je le ferais. Mais vous devez les parcourir à plusieurs reprises, en avançant un peu à chaque fois.

...

Et si vous les traitez en morceaux ?

Lire deux morceaux, soit 1 Go chacun. Le premier morceau est traité et le passage suivant ajoute à partir du deuxième morceau "...en avançant un peu". En même temps, coupez le début du premier chunk (ce n'est plus nécessaire parce que c'est toujours "...en avançant un peu". Quand le deuxième chunk finit de lire le troisième chunk - et maintenant ajoutez du troisième chunk "...en avançant un peu". De cette façon, il y aura toujours deux morceaux dans la RAM (2 Go maximum) et il y aura un ordre de grandeur de moins d'accès au disque dur.

 
GT788:

Passez à la version 64 bits - jusqu'à 16 To de RAM seront disponibles.

Stocker le fichier sous forme binaire pour une lecture plus rapide.

Traiter le fichier par morceaux en fonction de la taille de la RAM.

Essayez de prétraiter les données pour éliminer les informations en double.

Même XPpro x64 prend en charge le physique jusqu'à 128 et le virtuel jusqu'à 16 To.

 
Silent:

Même XPpro x64 prend en charge le physique jusqu'à 128 et le virtuel jusqu'à 16 To.

C'est vrai, j'ai trouvé le maximum de 192 Go pour 7.
 
komposter:

Il y a une grande quantité d'informations (environ 20 Go dans un fichier texte).

Les informations sont constituées du même type de séquences, environ un million.

Il est nécessaire de parcourir toutes les séquencesà plusieurs reprises et de faire quelques calculs.

La première chose qui vient à l'esprit est de lire tout le contenu du fichier, de le remplir dans le tableau de structures et de travailler avec lui en mémoire.

Mais cela n'a pas fonctionné, au prochain redimensionnement MT jure "Memory handler : cannot allocate 5610000 bytes of memory".

Dispatcher montre que terminal.exe utilise 3,5 Go de RAM (sur 16 physiques). Je suppose que c'est parce que le processus ne peut obtenir que 4 Go.

EA dit "Pas assez de mémoire(4007 Mb utilisés, 88 Mb disponibles, 4095 Mb au total) !!!".

Et cela ne représente que 15,3 % du montant requis (et j'aimerais l'augmenter à l'avenir également).

Je n'ai plus d'imagination.

Dois-je essayer de recomposer ces séquences de telle sorte que de nombreuses pièces soient produites, mais que chacune d'entre elles ne contienne que les informations nécessaires au moment présent ?

Réduire les données (j'ai déjà converti en flottants avec des types de caractères partout où je le pouvais) ? Mais cela me donnera 10-20% de plus au maximum, et je dois réduire le volume d'un ordre de grandeur...

Des conseils, mes amis ? Je ne rouillerai pas).

Et dans le sens de l'utilisation de la base de données n'ont pas regardé ? Configurer la base de données, en y téléchargeant les données d'un fichier texte. Vous pouvez effectuer toute agrégation de données à l'avance pour des calculs futurs.

Requêtes SQL à partir de l'Expert Advisor.

Le SGBD peut également être placé sur un serveur séparé pour augmenter les performances de la station de trading.

 

Merci beaucoup à tous pour votre participation !

Je ne suis pas en ligne pour le week-end, mais je répondrai à tout le monde demain matin et j'essaierai de profiter des conseils.

 
elugovoy:

Avez-vous envisagé d'utiliser une base de données ? Créez une base de données, chargez-y des données à partir d'un fichier texte. Il est possible d'effectuer au préalable une certaine forme d'agrégation des données en vue de calculs ultérieurs.

Et ensuite les requêtes SQL du conseiller expert...

Le SGBD peut être installé sur un serveur séparé pour augmenter les performances.

J'y ai pensé. Je suis intéressé par les opinions :

komposter:

Autre idée : transférer tout dans une base de données (MySQL ?) et travailler avec. L'idée est que les bases de données sont conçues pour de tels volumes et un rechargement constant.

Y a-t-il des experts ? Qui a une opinion ?

Quelle sera l'accélération par rapport à la lecture d'un fichier et quel sera le ralentissement par rapport au travail en mémoire ?