jeudi 14 octobre 2010

Affichage Correct et Economique.


Un Affichage Correct et Economique
MàJ : 30.03.2013

Articles connexes importants
Mesurez l'impact des yiedltime avec le Test Yieldtime
Ajustez correctement la Bande Passante
Procédez à une analyse du réseau Ping Sim Server

Index :
Le yieldtime, qu'es-aquò ?
Réglages disponibles
Quelles valeurs choisir ?
Impact sur mon ordinateur
Références

Résumé

Que la fenêtre de SL soit active ou inactive, un gain appréciable pour la réactivité de votre viewer, de votre ordinateur et la longévité de ses composants peut s'obtenir en temporisant le taux de FPS (le défilement image/sec). Cette temporisation agit comme un limiteur en l'empêchant de s'emballer. Sur tous les viewers (1), ces paramètres s'appellent yieldtime et backgroundyieldtime.

Le but de temporiser n'est pas de plonger votre viewer dans une purée de lag ou de gâcher le rendu de l'image, mais seulement de lui retirer un surplus de travail. Cela libère de la ressource pour vos processeurs, mais également de la bande passante.

C'est hyper efficace en multi-sessions. Cependant, même en session unique, toutes les machines apprécieront largement cet apport d'air.

Enfin, last but not least, limiter le taux de FPS, ne serait-ce que peu, empêche une surchauffe instantanée de votre carte graphique. Cela lui permettra probablement de supporter les crashers graphiques un très court instant, vous laissant ainsi le temps de vous téléporter ailleurs sans capoter (2).

(1) Le 1.23 (viewer générique de LL) ne disposant pas du BackgroundYieldtime. Il est possible que d'autres viewers, tirés de son code, n'en disposent pas non plus.
(2) J'ai testé cela en traversant sans encombre, au pas et de part-en-part, un crasher pourtant réputé efficace à l'époque. Mais attention, je n'ai pas dit que vous pourriez faire pareil sans griller !


Version courte Retour à l'index

Ouvrez le debug settings (Ctl-Alt-Maj-S), puis copiez, (sans les '') :
  • 'yieldtime' dans le champs de saisie et remplacez [-1] par [30]
  • 'backgroundyieldtime' dans le champs de saisie et remplacez [40] par [200]
Fermez le debug et déco / reco pour l'activation.
Si cela ne donne pas le résultat escompté, il ne vous reste plus qu'à lire l'article pour en savoir plus ;-)


Le yieldtime, qu'es-aquò ? Retour à l'index

Littéralement 'temps de rendement', mais en l'occurrence 'temps de pause', le yieldtime est en quelque sorte un limiteur de FPS (défilement image/seconde) à valeur définissable.

Plus précisément, il  insérera entre deux images toujours la même temporisation, quelles que soient les conditions (image 1 / tempo. / image 2 / tempo / etc...) Durant cette poignée de millisecondes de temporisation, votre viewer rendra la main aux autres applications en cours sur votre machine en allégeant la charge de travail qu'il impose à vos processeurs machine et carte graphique.

Les réglages décrits ici n'influencent que la fenêtre du viewer, ils n'agissent pas directement sur ceux propres à votre carte graphique. Ils s'inscrivent dans les paramètres du viewer et n'ont donc pas besoin d'être renouvelé par chaque utilisateur.


Réglages disponibles Retour à l'index
  • YieldTime → Valeur (en millisecondes)
    Agit lorsque la fenêtre du viewer est ACTIVE.
    Par défaut à -1, la temporisation est inexistante. C'est à dire que vous sollicitez votre carte graphique et votre processeur au maximum de leur possibilité sitôt que votre environnement l'exige.
    En remplaçant -1 par une valeur, vous forcerez votre viewer à faire une pose égale à cette valeur entre chaque rafraîchissement d'image. C'est efficace dans tous les cas de figure.
  • BackgroundYieldTime → Valeur (en millisecondes)
    Agit lorsque la fenêtre du viewer est INACTIVE.
    Par défaut à 40, cette temporisation est faible.
    Lorsque vous êtes sur une autre application, ou sur la fenêtre d'une seconde session SL, autant leur laisser le plus possible la main. Un backgroundyieldtime élevé favorise automatiquement la fenêtre SL active.


Quelles valeurs choisir ? Retour à l'index

Il n'y a pas de valeur refuge. S'agissant du yieldtime, elle dépendra de votre machine, de votre connexion, de l'ajustement de votre bande passante et de votre tolérance à une pseudo dégradation de votre affichage.
Une seule chose est certaine : correctement paramétrée, le lag général, votre lag personnel et le rendement de votre machine ne s'en porteront que mieux, avec une dégradation imperceptible pour l'oeil humain.


Pour constater en temps réel vos valeurs actuelles de rafraîchissement entre les fenêtres active/inactive, ouvrez la fenêtre de statistiques des viewers (Ctl-Maj-1) ou
  • PH : Menu Affichage → Statistiques
  • FS : Menu Avancé (Ctl-Alt-D) → Outils de performance → Barre de statistiques
et cliquez sur et hors de la fenêtre du viewer pour la faire basculer entre les états actifs et inactifs.
Vous constaterez en temps réel, sous 'Basics' (tout en haut) → FPS, quel est votre taux de rafraîchissement d'image.

Un test complet, avant et après réglage, vous est proposé dans l'article Test Yieldtime


Vous pouvez bien sûr adapter les valeurs ci-dessous à votre convenance, sachant que :
- Plus vous diminuerez le temps de pause (par ex. 25 ms au lieu de 30), plus le rafraîchissement d'image sera rapide, plus la consommation des ressources de votre machine remontera.
- Si vous tombez en dessous de 15 FPS, diminuez par tranche de 5 jusqu'à atteindre cette valeur.
- Mettre + de 200 pour le backgroundyieldtime sera inutile : au-delà, le rafraîchissement d'image sera trop lent et ne libérera pas plus de ressource pour autant.
- Si vous tombez en-deçà de 2 FPS avec 200, diminuez progressivement de 20 en 20 jusqu'à arriver à 2.


Remarque importante

Si vous constatez des valeurs faibles AVANT d'effectuer les réglages ci-dessous, p.e. 15 et 2, celles-ci ne descendront pas forcément APRES les avoir effectués. Au contraire, vous aurez plus de chance de les voir remonter car vous allez libérer du temps de calcul pour celles qui restent.



Voici les valeurs que j'utilise et que je vous propose pour commencer.

Pour accéder aux réglages, ouvrez le menu Advanced (Ctl-Alt-D) → Debug Setttings (Ctl-Alt-Maj-S)
  • Copiez yieldtime dans le champs de saisie, puis remplacez -1 par 30 (ms)
  • Copiez backgroundyieldtime dans le champ de saisie, puis remplacez 40 par 200 (ms)
Cela fait, cliquez simplement sur la X pour fermer la fenêtre et déconnexion/reconnexion pour les activer.


Impact sur mon ordinateur Retour à l'index

Mesures comparatives effectuées sur Firestorm:
Vous pouvez pratiquer ces deux tests aisément en suivant le Test Yieldtime.

Avant réglage :
Processeur : Utilisation : 70-75% ; Température : 65°C
Carte graphique : FPS : 65 ; Température : 66°C
Après réglage :
Processeur : Utilisation 25-30% ; Température : 40°C
Carte graphique : FPS : 23 ; Tempérture : 51°C

J'obtiens, pour la fenêtre active (3)
  • Si YieldTime = 40 → 15-20 FPS
  • Si YieldTime = 30 → 20-25 FPS (Mon choix actuel)
  • Si YieldTime = 20 → 25-30 FPS
J'obtiens, pour la fenêtre inactive (3)
  • Si BackgroundYieldTime = 200 → 3.4 FPS
(3) Dans l'absolu, si le temps de calcul était nul, nous obtiendrions des taux plafond de FPS égaux à 1000 / [Valeur], soit 33.3 FPS pour un yieldtime à 30 ou encore 5 FPS pour un backgroundyieldtime à 200

Mes références lors du test.
  • Ordinateur : Dell Optiplex 745
  • Processeur : Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
  • Graphiques : nVIDIA 512 Mo GeForce 9600 GT
  • Réseau : 25 Mb/s (Saturation à 20 maxi...)
  • Plateforme : MS Windows XP Home 32-bit SP3
  • Condition de sim : Normale, ping moyen à 165 ms
  • Préférences graphiques : Ultra
  • Viewer : Firestorm
  • Moyenne FPS : 55
  • Packet loss : 0.0%
  • Temp ambiante ~23 °C

Investissement.
En sollicitant moins la carte graphique, elle chauffe moins, les composant fatiguent moins, les ventilateurs tournent moins vite et leur consommation électrique diminue. Conséquemment, il en va de même pour l'ensemble de votre machine, cela contribue largement à la préserver et à préserver votre porte-monnaie ;-)

C'est déjà une économie appréciable au niveau de l'individu, imaginez à l'échelle planétaire...


Références Retour à l'index

Média :
Cinéma, DVD, DVD BlueRay sont à 24 fps (images/seconde).
Les vidéo du net à 15 fps... Lorsque tout va bien.
25 fps (25 image/seconde) serait l'équivalent absolut d'un yieldtime à 40 ms.

En savoir plus :

Vision → Persistance rétinienne et illusion de mouvement.

Inspiré de l'article original de Lalwende Leakey
http://detente-en-prim.blogspot.com/2010/01/tech-yieldtime.html

2 commentaires:

  1. Merci ce réglage simple m'a sauvé ma second life! Je ne lag plus en arrivant sur les sim ^^ ouffff.

    RépondreSupprimer
  2. A faire absolument... les paramètres suggérés par Sioux Rusé, à savoir YieldTime 30 et BackgroundYieldTime 200, font passer une machine d'un état de soufflerie pour tests aérodynamiques, à une douce brise, et c'est vachement reposant pour les oreilles aussi !

    RépondreSupprimer