Affichage des résultats 1 à 4 sur 4

Discussion: Optimisation sur GNU/Linux

  1. #1
    Date d'inscription
    septembre 2009
    Messages 
    6

    Optimisation sur GNU/Linux

    Le but de ce post est principalement de donner des pistes concrètes
    sur l'optimisation de la saga baldur's gates sous linux.
    Cela sous entend que vous avez déjà un jeu fonctionnel.

    Premièrement, il est conseillé d'utiliser un deuxième serveur graphique,
    exclusivement dédié au jeu.

    Je vais essayer de rester le plus clair possible,
    sans trop réduire la syntaxe, pour que cela reste accessible à tous.

    Pour commencer, on va simplement vérifier que tmpfs est bien présent sur le systeme :
    On tape dans une console :
    Code:
    cat /proc/filesystems | grep tmpfs
    -Si cette commande ne retourne rien, vous n'avez pas tmpfs, il faudra l'installer.
    -Si vous avez un noyau 2.6 ou plus ca devrait donner :
    Code:
    > nodev tmpfs
    Pour gagner du temps, on va regarder si il n'y a pas un systeme de fichier déjà monté qui pourrait convenir :

    On tape dans une console :
    Code:
    df
    ou si on veut une liste plus réduite/lisible
    Code:
    df | grep tmpfs
    Il faut chercher une ligne similaire dans la liste :
    Code:
    > tmpfs                 1,7G   76K  1,6G   1% /dev/shm
    Dans l'exemple,
    J'ai donc un disque virtuel d'une taille totale de 1,7 Go :
    Il est quasiment vide avec un malheureux fichier qui fait 76ko et il me reste 1.6Go d'espace disponible, largement de quoi s'amuser.
    Sachant que généralement la mémoire vive devrait être quelque chose comme 200 fois plus rapide qu'un disque.
    Le faux geek avec ses deux raptors en raid 0 peut aller courir s'acheter de la ram.

    Trois choses importantes à savoir :
    - On peux considérer /dev/shm comme étant l’inverse du SWAP qui lui est utilisé comme de la RAM mais stocke les données sur le disque.

    - /dev/shm est configuré par défaut pour disposer de la moitié de la ram reconnue par le système.

    - Le gros avantage de tmpfs par rapport à ramfs est l’allocation dynamique de la mémoire permettant ainsi de ne pas utiliser cette espace si cela n’est pas nécéssaire.

    Si vous ne trouvez pas de point de montage /dev/shm
    Il vaut mieux créer manuellement un point de montage tmpfs,
    vous pouvez aller jeter un coup d'oeil par la, ca sera juste un peu plus long et il vous faudra adapter la chaine /dev/shm dans ce qui va suivre.

    Si on jette un coup d'oeil au répertoire de jeu d'une installation de BGT par ex,
    on remarque directement :
    3 répertoires temporaires, respectivement : tempsave, cache, temp

    On va commencer doucement en ouvrant une console dans le repertoire du jeu, ensuite :

    - J'efface les 3 répertoires cache du repertoire du jeu.
    Code:
    rm -rfv tempsave cache temp
    - J'en cree 3 nouveaux sur le disque virtuel
    Code:
    mkdir -p /dev/shm/BGII/tempsave /dev/shm/BGII/cache /dev/shm/BGII/temp
    - Il reste à créer 3 liens symboliques qui pointeront vers la mémoire vive :
    Code:
    ln -s /dev/shm/BGII/tempsave /tempsave
    ln -s /dev/shm/BGII/temp /temp
    ln -s /dev/shm/BGII/cache /cache
    A ce stade, meme en prenant en compte l'utilisation des repertoires cache,
    il me reste encore pas mal d'espace disponible.
    On peut aussi choisir de mettre en cache les répertoires CD ou les fichiers utilisés le plus fréquement,
    repérés à l'aide de la journalisation.
    Si on a énormément de ram on peut imaginer pouvoir copier la totalité.

    Il vaut mieux éviter de déplacer ce qui suit si on ne veut pas perdre les modifications à chaque reboot :
    Le fichier bardur.ini pour la configuration
    Le réperoire save qui contient les sauvegardes
    Le repertoire characters ou on peut sauver les personnages

    Ce qui va suivre depend un peu de la ram que vous avez,
    ici j'ai assez pour m'occuper de la totalité du repertoire override.
    Toujours dans le répertoire du jeu, j'ouvre ma console :
    Je renome mon repertoire override
    Code:
    mv override override_
    Ensuite, même chose que tout a l'heure... On crée le répertoire en mémoire et son lien symbolique :
    Code:
    mkdir -p /dev/shm/BGII/override
    ln -s /dev/shm/BGII/override /override
    Par contre le répertoire est toujours vide, on va copier override_ en mémoire vive :
    Code:
    cp -rfv override_/ /dev/shm/BGII/override/
    Apres quelques secondes et ici les 14000 fichiers copiés, on peut enfin lancer la bête

    Par contre il ne faut pas oublier qu'au prochain reboot de la machine, le disque virtuel sera vidé.
    Il faut donc utiliser votre éditeur de texte favori et créer un petit fichier batch pour automatiser un peu.
    On va lui faire charger en mémoire vive ce qu'on a deplacé avant de lancer le jeu.

    Code:
    #! /bin/sh
    # Ficher : baldur.sh
    # Lancement de Baldur's Gate II
    
    # Crée les repertoires cache
    mkdir -p /dev/shm/BGII/tempsave /dev/shm/BGII/cache /dev/shm/BGII/temp
    
    echo "Copie des fichiers dans la mémoire vive, veuillez patienter..."
    cp -rf override_/ /dev/shm/BGII/override/   #-rfv pour le debug. 
    
    # Lance le jeu
    wine BGMain.exe
    
    # Sortie
    # Détruit les dossiers temporaires // libére la mémoire 
    rm -rfv /dev/shm/BGII
    L'idéal est de placer le fichier dans le répertoire du jeu, sans oublier de le rendre executable :
    Code:
    chmod +x baldur.sh
    Ensuite pour lancer le jeu, une fois dans le répertoire, on fera simplement :
    Code:
    ./baldur.sh
    Un autre point, le moteur de jeu utilise opengl.

    J'aborderai ici uniquement le matériel nvidia,
    je n'ai pas trop envie de me noyer dans la doc d'autres constructeurs sans avoir le matériel pour tester.

    Le document suivant est très intéréssant, surtout le chapitre 11 qui touche opengl :
    NVIDIA Accelerated Linux Graphics Driver README and Installation Guide

    Dans une console, pour lister les modes disponibles pour votre carte :
    Code:
    nvidia-settings --query=fsaa --verbose
    Vous pouvez tester par vous même ce qui passe sur votre config, en montant graduellement les options.
    C'est de l'hérésie mais sur ma 8800GT,
    BGT peut tourner avec l'antialiasing 2x (2xMS) et le filtrage anisotropique 16x
    Coté résolution c'est du 1680x1050 vu que le jeu est patché avec le mod widescreen.

    Voila le batch final.

    Code:
    #! /bin/sh
    # Ficher : baldur.sh
    # Lancement de Baldur's Gate II
    
    # Force le driver opengl
    export __GL_FSAA_MODE=1
    export __GL_DEFAULT_LOG_ANISO=4
    
    # Crée les repertoires cache
    mkdir -p /dev/shm/BGII/tempsave /dev/shm/BGII/cache /dev/shm/BGII/temp
    
    echo "Copie des fichiers dans la mémoire vive, veuillez patienter..."
    cp -rf override_/ /dev/shm/BGII/override/   #-rfv pour le debug. 
    
    # Lance le jeu
    # Eventuellement rajouter le préfixe pour playonlinux ici
    wine BGMain.exe
    
    # Sortie 
    # Détruit les dossiers temporaires // libére la mémoire 
    rm -rf /dev/shm/BGII
    Si on veut délirer encore plus,
    on peut overcloker sa carte graphique par le xorg.conf, totalement inutile mais possible.
    Il faut rajouter une option Coolbits dans votre /etc/X11/xorg.conf

    Section "Device"
    Identifier "Card0"
    Driver "nvidia"
    [...]
    Option "Coolbits" "1"

    Il suffit ensuite de relancer votre X (ctrl +alt +backspace) Lorsque vous lancerez nvidia-settings (dans les menus ou en console), un nouvel onglet “overclock” devrait apparaître, et vous pourrez augmenter les fréquences de la RAM et du GPU de carte graphique (un outils de test est integré).
    Dernière modification par tuxshake ; 06/09/2009 à 22h30.

  2. #2
    Avatar de Mornagest
    Mornagest est connecté maintenant Chantre du mauvais goût
    Date d'inscription
    octobre 2003
    Localisation
    Juste derrière vous, prêt à hurler BOUH !
    Messages 
    16 635
    Tutoriel intéressant mais je me permets de demander : quel type de matériel faut-il pour optimiser ? Tu parles d'une mémoire vive assez élevée ; quelle est par exemple ta propre configuration ?

    Sachant que de mon côté, avec un Athlon 3200+ et 1 Gio de RAM BG2 fonctionne de façon très fluide (sans les pilotes nVidia propriétaires).
    Administrateur général, également en charge des sections The Witcher, Torment, Icewind Dale et Morrowind. Je modère dans cette couleur.

    Rejoignez Melandis, la Cité du Chaos
    La biographie de Mornagest ainsi que ses quêtes et sa couleur RP #6C84FF ; la biographie de Henk et sa couleur RP #3BBB34

    "Ne vous imaginez pas être différente de ce qu'il eût pu sembler à autrui que vous fussiez ou eussiez pu être en restant identique à ce que vous fûtes sans jamais paraître autre que vous n'étiez avant d'être devenue ce que vous êtes."
    (Lewis Caroll)

  3. #3
    Date d'inscription
    septembre 2009
    Messages 
    6

    Re : Optimisation sur GNU/Linux

    Avec 1 Go de ram, ca sera pas très utile surtout avec baldur qui prend pas mal d'espace disque.
    Ca donnerai 512 Mo disponible dans le meilleur des cas.
    Peut être déplacer les répertoires cache, mais bon, c'est vraiment juste.

    Je dirais qu'a partir du moment ou tu peux caser un cd entier en memoire ca devient intéréssant, donc 2go mini.

    Ou alors il faut monter à la main le tmpfs,
    ( /dev/shm est monté en prennant la moitié de la ram par defaut, surement par sécurité )

    Il faut regarder exactement la ram disponible pendant que tu joues et voir si tu peux en utiliser plus. Mais ça dépend des services qui sont lancés et de l'usage que tu fais de la machine. Ca risque surement de planter ou de ramer sérieusement si tu exagères.

    Sur un OS 32 bits, on est limité à 3.6Go de ram sous linux.
    Mais par contre en 64 bits on peut monter plus haut,
    la limite étant la mémoire physique qu'on a sur la machine.
    Dernière modification par tuxshake ; 06/09/2009 à 22h07.

  4. #4
    Date d'inscription
    mars 2007
    Messages 
    272

    Re : Optimisation sur GNU/Linux

    Il faut aussi préciser que le BG2FixPack détruit complètement les perfs sous linux avec ses milliers de fichiers.

    Un moyen simple de regagner de la fluidité consiste à "biffer" les fichiers présents dans l'override grâce à Weidu.

    Personnellement, j'ai juste réalisé cette opération et les performances sont comparables à celle sous Windows. Il ne me reste qu'un léger retard pour le déclenchement des sons, mais ce n'est pas bien grave

Discussions similaires

  1. Lenteur du jeu sur GNU/Linux
    Par norihinohili dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 3
    Dernier message: 14/05/2009, 11h06
  2. [OS] FAQ Linux
    Par Duo dans le forum Informatik'
    Réponses: 38
    Dernier message: 06/08/2008, 13h45
  3. [OS] Un petit linux
    Par Solaufein Khalazza dans le forum Informatik'
    Réponses: 5
    Dernier message: 20/06/2008, 08h02
  4. [OS] Windows, Linux ou Mac OS ?
    Par Duo dans le forum Informatik'
    Réponses: 20
    Dernier message: 23/04/2008, 23h43
  5. [Linux]Installer Linux
    Par Duo dans le forum Informatik'
    Réponses: 4
    Dernier message: 12/11/2006, 16h39

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251