Allocation de plus de 2Go par OR...

Vous avez des astuces pour rendre ORTS plus agréable. Venez les poster ici.

Modérateur : Modérateurs

Avatar du membre
BB25187
Administrateur
Messages : 15057
Enregistré le : 09 mai 2004 1:07
Localisation : Grenoble
Contact :

Allocation de plus de 2Go par OR...

Messagepar BB25187 » 13 sept. 2013 22:21

Hello,

Motivation et constat de départ
Plusieurs d'entres-nous ont rencontré des problèmes dans la zone Lyonnaise de la PLM-V2, apparemment à cause d'une limitation de la mémoire disponible pour le jeu. Celui-ci sur cette zone demande environ 1,8Go. Etonnamment, même les personnes qui tournent sur des PC 64bits disposant d'une RAM de 4Go ou plus ont été confrontées à ce problème.
En regardant les choses de plus près, elles ne semblaient pas vraiment logiques:
- 1 - Sur des PC disposant de la même quantité de RAM, les problèmes pouvaient se produire ou non.
- 2 - Les messages d'erreur indiquant qu'OR ne disposait plus de la mémoire nécessaire intervenaient alors même qu'il ne semblait pas consommer la totalité de la mémoire disponible.
- 3 - La limite observée semblait tourner autour de 1,8 Go, pas très loin (mais différente) de 2Go...

Mémoire et version d'OR
Sur le premier point, l'explication semble provenir surtout de la différence de comportement entre les versions officielles et les versions expérimentales. Pour une même activité, les versions officielles semble consommer un peu moins de mémoire. A priori, cette différence est liée au fait que les versions expérimentales, ainsi que les versions recompilées par les personnes qui chargent les sources chez elles, sont compilées pour permettre le déverminage. Ce n'est pas le cas des versions officielles. Et au fond, c'est normal: les versions officielles doivent être efficaces et n'ont pas vocation à être utilisées pour déverminer. Cela explique assez bien la différence de mémoire consommée.
Donc un conseil: si vous voulez qu'un OR recompilé par vos soins soit plus efficace et consomme moins de mémoire, il vaut mieux configurer Visual C# Express en mode "release".

Et pourquoi OR ne consomme pas toute la mémoire mise à sa disposition?
Ca ne vous dit rien, une application qui ne sait pas allouer plus de 2Go? Pourtant, le même problème se pose sur de nombreux jeux, initialement prévus pour les machines et systèmes 32bits. Là, si le PC dispose de 4Go de mémoire, le système se réserve 2Go, et par défaut, les applications ne peuvent allouer plus de 2Go.
La question suivante est double:
- 1 - OR est-il compilé pour le 32bits ou pour le 64bits?
- 2 - S'il est compilé en 32bits, peut-on lever cette limitation et comment?
Ah oui: les problèmes intervenaient en dessous de 2Go, certes. Mais quand une requête d'allocation est émise alors que le programme occupe déjà 1,8Go, et pour une taille qui risque de faire dépasser les 2Go, il est normal que ça pète!

Expérience
Pour répondre à cette question, il suffisait d'essayer un outil communément utilisé pour débrider la limitation des 2Go de mémoire des applications 32bits, et de voir si les problèmes persistaient. Cet outil, 4Gb_Patch, a été évoqué à plusieurs reprises sur ce forum, soit pour les premières versions de Railworks, soit pour MSTS. Il est assez connu dans le monde du jeu.
C'est donc ce que j'ai fait. Et là, a priori, une activité qui causait presque systématiquement l'erreur d'allocation mémoire a pu être menée à terme sans problème, y compris en effectuant des opérations diverses en cours de route (sauvegardes, changements de vue, ... ). Pour vérifier qu'il ne s'agissait pas d'un coup de chance, j'ai aussi comparé les binaires avant et après application du patch: les bits attendus étaient bien modifiés comme sur d'autres applications 32bits.
J'ai aussi recherché confirmation sur la toile. J'ai eu là aussi confirmation que si OR ne contient pas de limitation de mémoire intrinsèque liée à sa programmation, en revanche il est aujourd'hui compilé en mode 32 bits.

La solution
Les choses deviennent donc limpides:
- Etant compilé en mode 32bits, OR ne peut allouer plus de 2Go.
- Par rapport aux versions expérimentales ou compilées par vos soins, les versions officielles sont moins susceptibles de rencontrer des problèmes d'allocation mémoire. Elles sont en effet compilées dans un mode plus efficace et plus économe. On peut toutefois compiler une version personnelle en mode "release" en modifiant la configuration dans Visual C# Express au moment de la compilation.
- On peut lever la limitation de 2Go en utilisant l'outil 4Gb_Patch. Il faut traiter prioritairement l'exécutable "RunActivity.exe", mais autant traiter aussi les fichiers "OpenRail.exe" et "Menu.exe" tant qu'on y est! Vous pourrez alors dépasser cette limitation et accéder 4Go si votre système le permet.
Un conseil: appliquez systématiquement ce 4Gb_Patch sur les versions d'OR que vous chargez ou que vous compilez! Pas de panique: il est très simple d'utilisation. Vous allez comprendre...

A+
"Er ist ein Unmensch, ein Tyrann!" - Tamino - Erster Akt - Die Zauberflöte.
____________________________________________________________

Image

Avatar du membre
natlam
Modérateur
Messages : 2771
Enregistré le : 28 janv. 2004 10:01
Localisation : Ans (Belgique)

Re: Allocation de plus de 2Go par OR...

Messagepar natlam » 14 sept. 2013 9:17

Bonjour Vincent,

Merci pour ces explications et l'astuce de l’exécutable 4GBPatch , effectivement il est d'utilisation on ne peut plus simple (.
Une question me vient à l'esprit... on ne pourrait pas l'utiliser dans msts pour remplacer la commande -mem512 ?

Que ta journée soit belle.
Nathalie
Dans le désert, on peut toujours tomber sur une oasis.

Image

Avatar du membre
BB25187
Administrateur
Messages : 15057
Enregistré le : 09 mai 2004 1:07
Localisation : Grenoble
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar BB25187 » 14 sept. 2013 10:30

Bonjour Nathalie,

natlam a écrit :Une question me vient à l'esprit... on ne pourrait pas l'utiliser dans msts pour remplacer la commande -mem512 ?


Oui. Marti nous en avait d'ailleurs parlé à plusieurs reprise. Par contre chez moi l'option -mem avait toujours suffit, donc je n'ai jamais vraiment cherché à changer. A tester...

natlam a écrit :Que ta journée soit belle.


Ici c'est encore grand soleil avec une belle lumière qui commence à sentir l'automne. Miam!
Mais il parait que ça ne va pas durer!

Amicalement
VIncent
"Er ist ein Unmensch, ein Tyrann!" - Tamino - Erster Akt - Die Zauberflöte.
____________________________________________________________

Image

Avatar du membre
CM63
Messages : 1944
Enregistré le : 13 août 2010 21:48
Localisation : Un peu au large de la faille de Limagne
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar CM63 » 14 sept. 2013 10:35

Bonjour,

Merci Vincent pour cette astuce. Mais, si je comprends bien, ce patch est inutile si on est en 32bits? Ce qui est le cas de la plupart d'entre nous, ai-je la naïveté de penser =. .

Je ne vous cache pas que moi, j'ai eu un doute (professionnellement j'étais en 64, mais chez moi?). Sommes-t-on en 32 ou en 64 ?+ ?

Ben déjà si vous êtes sous windows XP, il y a de fortes chances pour que vous soyez en 32bits. La seule version de windows XP qui pouvait être en 64 était la version professionnelle. Mais si vous êtes par exemple en Windows XP Familial, comme votre serviteur, vous êtes en 32bits.

Pour en avoirs le cœur net (toujours sous XP ou systèmes Windows plus anciens) :

Démarrer -> Panneau de configuration -> System

Si aucune information n'est indiquée sur ce sujet, vous êtes en 32bits.

Pour les versions plus récentes de Windows, voire les autres systèmes, voir par exemple cette page.

Mais attention au raccourci du genre: j'adresse plus de 2Go de RAM donc je suis en 64! Raccourci que j'ai fait jesors . En fait, avec 32bits, on peut adresser jusqu'à 4Go, mais Windows en consomme une partie .; . En tout cas, c'est l'explication que j'ai lue.

Bonne journée.
Image

Avatar du membre
BB25187
Administrateur
Messages : 15057
Enregistré le : 09 mai 2004 1:07
Localisation : Grenoble
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar BB25187 » 14 sept. 2013 10:51

Hello,

En effet, l'astuce s'applique en premier lieu si vous avez une machine et un OS 64 bits. Il me semble que la première version de Windows à avoir supporté le 64bits était Vista.

CM63 a écrit :En fait, avec 32bits, on peut adresser jusqu'à 4Go, mais Windows en consomme une partie .; . En tout cas, c'est l'explication que j'ai lue.


On trouve pas mal de discussions sur ce sujet sur la toile, avec des indications pas toujours hyper claires. Il semble toutefois que même sous certaines versions 32bits de Windows, et selon le processeur utilisé, l'OS peut-être paramétré pour autoriser les applications à adresser plus de 2Go (mode PAE). J'avoue ne jamais avoir testé. Si ça vous êtes sous 32bits et que ça vous branche d'essayer...

A+
"Er ist ein Unmensch, ein Tyrann!" - Tamino - Erster Akt - Die Zauberflöte.
____________________________________________________________

Image

Avatar du membre
fred37
Messages : 465
Enregistré le : 29 sept. 2006 15:29
Localisation : Savigné Sur Lathan (37)
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar fred37 » 14 sept. 2013 11:33

Bonjour à tous,

BB25187 a écrit :Hello,

En effet, l'astuce s'applique en premier lieu si vous avez une machine et un OS 64 bits. Il me semble que la première version de Windows à avoir supporté le 64bits était Vista.

;/ Windows XP 64 ?2? -> http://fr.wikipedia.org/wiki/Microsoft_Windows_XP_64 <-

Merci Vincent, reste a voir ce que cela vaut concrètement ce petit patch de gestion mémoire... Je suis curieux de savoir comment il fait pour détourner la limite d'allocation mémoire de Windows qui est fixé a 2GO par processus.

@+
Fred.

Avatar du membre
BB25187
Administrateur
Messages : 15057
Enregistré le : 09 mai 2004 1:07
Localisation : Grenoble
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar BB25187 » 14 sept. 2013 12:20

Hello,

fred37 a écrit :
BB25187 a écrit :... Il me semble que la première version de Windows à avoir supporté le 64bits était Vista.

;/ Windows XP 64 ?2? -> http://fr.wikipedia.org/wiki/Microsoft_Windows_XP_64 <-


Oops: merci de la rectification!

fred37 a écrit :Je suis curieux de savoir comment il fait pour détourner la limite d'allocation mémoire de Windows qui est fixé a 2GO par processus.


Il modifie quelques bits (dont un, surtout) dans l'entête du fichier binaire, qui indiquent au système que l'application peut adresser plus de 2Go.

A+
"Er ist ein Unmensch, ein Tyrann!" - Tamino - Erster Akt - Die Zauberflöte.
____________________________________________________________

Image

20100
Messages : 93
Enregistré le : 21 oct. 2012 22:42

Re: Allocation de plus de 2Go par OR...

Messagepar 20100 » 16 sept. 2013 12:41

Bonjour,

Merci pour cette astuce. C'est essayé et adopté ! (.

Bonne journée.
"Faire et défaire, c'est le chemin de fer..."

Avatar du membre
BB25187
Administrateur
Messages : 15057
Enregistré le : 09 mai 2004 1:07
Localisation : Grenoble
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar BB25187 » 26 oct. 2013 9:25

Hello,

Sur une activité de 2 heures sur Rails de France, avec une loc et 15 caisses "gourmandes", ainsi que pas mal de rames de trafic et statiques du même tonneau, j'ai atteint 2,4Gb de mémoire allouée par OR. Cela confirme tout l'intérêt de l'application de 4Gb_Patch - si votre machine dispose de suffisamment de RAM bien entendu!
Je vais d'ailleurs ajouter un lien vers ce fil dans celui consacré à la recompilation d'OR.

A+
"Er ist ein Unmensch, ein Tyrann!" - Tamino - Erster Akt - Die Zauberflöte.
____________________________________________________________

Image

Avatar du membre
Sharpe49
Messages : 319
Enregistré le : 23 août 2010 4:46
Localisation : Lyon (69)

Re: Allocation de plus de 2Go par OR...

Messagepar Sharpe49 » 29 nov. 2013 23:58

BB25187 a écrit :Et pourquoi OR ne consomme pas toute la mémoire mise à sa disposition?
Ca ne vous dit rien, une application qui ne sait pas allouer plus de 2Go. Pourtant, le même problème se pose sur de nombreux jeux, initialement prévus pour les machines et systèmes 32bits. Là, si le PC dispose de 4Go de mémoire, le système se réserve 2Go, et par défaut, les applications ne peuvent allouer plus de 2Go.
La question suivante est double:
- 1 - OR est-il compilé pour le 32bits ou pour le 64bits?
- 2 - S'il est compilé en 32bits, peut-on lever cette limitation et comment?
Ah oui: les problèmes intervenaient en dessous de 2Go, certes. Mais quand une requête d'allocation est émise alors que le programme occupe déjà 1,8Go, et pour une taille qui risque de faire dépasser les 2Go, il est normal que ça pète!


Bonsoir,

J'ai été curieux et j'ai essayé de compiler le jeu en mode 64 bit... pas de problèmes de compilation.
Par contre, surprise ! XNA Framework ne propose pas de bibliothèques 64 bit. On est obligé de compiler en 32 bit.

Bien joué Microdaube ! La totalité des PC sont désormais en 64 bit et ils ne proposent rien pour développer des jeux facilement en 64 bit !

On aurait pu également se dire que le logiciel libre aurait peut-être pu nous sauver (et pourquoi pas permettre d'exécuter Open Rails sur Linux et autres) ?
On a bien Mono qui peut remplacer efficacement le .Net Framework.
Par contre, MonoGame est censé remplacer XNA... version 4 qui est totalement incompatible avec la 3.1.

Bref, aucune solution pour passer en 64 bit...
Cédric Gniewek
Développeur Open Rails

Scripts Open Rails pour matériel roulant : signalisation française et robinet de freinage PBL2
https://github.com/Sharpe49/OpenRails_Scripts

nicober
Modérateur
Messages : 2200
Enregistré le : 21 févr. 2004 22:36
Localisation : Québec (Qc) Canada
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar nicober » 16 déc. 2013 23:40

Bonsoir à tous

Pouvoir au moins utiliser 2GB de RAM ou plus:

Jusqu'ici il fallait utiliser le patch suggéré plus haut par Vincent ou encore installer le programme CFF Explorer et le configurer de manière à disposer de plus de RAM.

D'après James Ross: "Ce n'est pas une configuration supportée pour les applications .NET, donc nous ne pouvons pas faire des versions officielles avec ces ajouts. ( La fixation correcte serait d'utiliser un AnyCPU.NET build et un OS 64bits mais présentement ne ne pouvons le faire pour d'autres raisons.) De toute façon depuis que j'ai introduit les builds créés automatiquement, je peux potentiellement inclure un exécutable spécialement modifié que les gens pourront essayer sans avoir à utiliser d'autres outils."

James Ross a écrit :It is not a supported configuration for .NET applications, so we cannot make the official versions with this flag. (The correct fix is to use an AnyCPU .NET build and a 64bit OS, but currently we can't do that for other reasons.) However, since I have been making automatically created builds, I can potentially include a specially modified executable people can try without having to use other tools.

James Ross Forum Elvas Tower posté le 14/12/2013 à 3:12 PM

Avec la dernière version expérimentale la X-1889, James Ross vient d'ajouter un nouveau fichier additionnel dans le répertoire program qui permet d'avoir plus de RAM de disponible.
Il s'agit du fichier RunActivityLAA.exe - LAA ( LargeAddressAware support ) - Plus besoin d'ajouts extérieurs.

James Ross a écrit :The latest build on my site now includes a RunActivityLAA.exe that you can use in place of RunActivity.exe to get /LargeAddressAware support.

James Ross Forum Elvas Tower posté le 15/12/2013 à 4:06 PM

Ce qui permettra du moins je l'espère d'éviter d'avoir le message "OutOfMemoryException" sur certaines routes très chargées. Je vais le tester et à vous aussi d'en faire autant.

Pour que cela fonctionne vous devez:
Renommer le fichier "RunActivityLAA.exe" en "RunActivity.exe" ce qui remplacera ce dernier fichier.
N'oubliez pas non plus de faire une copie de sauvegarde de ce fichier, si vous ne voulez pas retourner en downloader un nouveau.

Notez: La dernière version expérimentale disponible sur le site de Open Rails est la X-1888.
Donc si vous souhaitez essayer ceci immédiatement, il vous faudra aller chercher la version X-1889 sur le site de James Ross à cette adresse.

http://james-ross.co.uk/projects/or

Voilà! En espérant que cela puisse fonctionner adéquatement. .+

Bonne semaine à tous. ?2?
Nicober

«La Terre n’appartient pas à l’Homme, c’est l’Homme qui appartient à la Terre.»
[ Sitting Bull ]

retore
Messages : 3623
Enregistré le : 10 nov. 2007 15:20
Localisation : lesigny

Re: Allocation de plus de 2Go par OR...

Messagepar retore » 17 déc. 2013 17:41

Bonsoir,
Et merci pour ces précisions.
Amitiés michel

Avatar du membre
BB25187
Administrateur
Messages : 15057
Enregistré le : 09 mai 2004 1:07
Localisation : Grenoble
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar BB25187 » 22 déc. 2013 14:15

Salut Nick,

Merci de l'info. Il faut toutefois préciser que ce fichier RunActivityLAA.exe n'est présent que dans les versions expérimentales pré-compilées présentes sur le site d'OR. Il n'est pas créé si vous compilez vous-mêmes les sources (éventuellement modifiées par vos soins). Dans ce dernier cas, l'utilisation du 4Gb_Patch reste la seule solution utilisable. ET je connais des routes sur lesquelles il est indispensable! (.
Bon sinon je me suis resynchronisé avec les dernières évolutions des sources (#1895). Il me reste à vérifier que mes modifications personnelles font toujours ce que j'attends d'elles dans ce nouveau contexte.

Amicalement
Vincent
"Er ist ein Unmensch, ein Tyrann!" - Tamino - Erster Akt - Die Zauberflöte.
____________________________________________________________

Image

Avatar du membre
fred37
Messages : 465
Enregistré le : 29 sept. 2006 15:29
Localisation : Savigné Sur Lathan (37)
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar fred37 » 26 mars 2014 23:00

Bonsoir à tous,

Dans la version expérimentale X2121, l'option de choisir le déridage de la limite mémoire est apparu dans les options.

Image

Donc problème d'adressage mémoire terminée, merci James ?2?

@+
Fred.

Avatar du membre
CM63
Messages : 1944
Enregistré le : 13 août 2010 21:48
Localisation : Un peu au large de la faille de Limagne
Contact :

Re: Allocation de plus de 2Go par OR...

Messagepar CM63 » 26 mars 2014 23:59

Bonsoir,

Le must have!

Bonne soirée
Image


Retourner vers « ORTS: Trucs et astuces »