« Réunion du 23-04-2024 » : différence entre les versions

De OSWiki
Aller à la navigation Aller à la recherche
Ligne 45 : Ligne 45 :
* CG va s'activer pour commencer à libérer de la mémoire avec des applications qui utilisent 95% de la ram physique  de la machine.
* CG va s'activer pour commencer à libérer de la mémoire avec des applications qui utilisent 95% de la ram physique  de la machine.
* Modification de la configuration pour demander de libérer la mémoire à la moitié de son utilisation dans  '''OpenSim.runtimeconfig.json''' qui est régénéré à chaque compilation  :
* Modification de la configuration pour demander de libérer la mémoire à la moitié de son utilisation dans  '''OpenSim.runtimeconfig.json''' qui est régénéré à chaque compilation  :
  System.GC.HighMemoryPercent" : 50,
  "System.GC.HighMemoryPercent" : 50,
* Sur la région de la réunion la configuration permet une libération de la mémoire à 1% de son utilisation c'est à dire 638Mo.
* Sur la région de la réunion la configuration permet une libération de la mémoire à 1% de son utilisation c'est à dire 638Mo.
  System.GC.HighMemoryPercent" : 1,
  "System.GC.HighMemoryPercent" : 1,
* La commande Stats de la console le montre.  
* La commande Stats de la console le montre.  
  GCTotalCommited : 121MB  
  GCTotalCommited : 121MB  

Version du 25 avril 2024 à 08:04

Travail en cours 🏗️

Changements du code de la semaine

Passage à dotnet 8

Commit e731edfa2e

  • Déplacement de la version minimale de dotnet runtime à 8.x.[1]

Implications

  • OpenSim nécessite dotnet8 runtime pour votre plateforme (ainsi que le SDK si vous souhaitez compiler).
    • opensim maintenant refusera de démarrer sur des runtimes inférieur à 8,
    • ce runtime exécutera du code fait pour des versions plus anciennes, lui-même,
    • seulement, pour une raison lambda, .net 3.5 doit être installé sur Windows.
  • dotNet 8 ne semble pas être une amélioration pour OpenSim, le principal problème est sa plus mauvaise utilisation de la mémoire. GC https://fr.wikipedia.org/wiki/Ramasse-miettes_(informatique) est à nouveau plus lent à libérer de la mémoire pour le système d'exploitation. Mais les tests sur quelques régions comme osgrid LBSA, ont montré que cela restait dans les limites du raisonnable.
  • Pour MacOS, il faut attendre et voir. DotNet 8 nécessite macOS 12 ou plus. DotNet 6 a besoin de 10.5 ou plus.
  • Davantage d'utilisation de SIMD[2] avec dotNet 8. Le modèle SIMD convient particulièrement bien aux traitements dont la structure est très régulière, comme c'est le cas pour le calcul matriciel.
  • Avec dot.Net le contrôle est difficile. Chaque fois que vous démarrez une région, vous obtiendrez un code natif différent. Par exemple l'utilisation maximale de la mémoire physique de la région de la réunion lors de l'ouverture des sessions est comprise entre 600 et 800 Mo, avec le même code et les mêmes conditions. C'est le résultat du "bruit aléatoire" interne à dotNet.
  • La compilation avec dotNet 8 semble 25% plus lente que pour dotNet 6.

NDLR : Informations en plus de la réunion

Mise à jour de DLL

  • Mise à jour des DLL warp3d et xmlrpc[3]
  • Mise à jour de mysql.data.dll vers la version 8.3.0 [4] : ça s'est mal passé, cela n'a pas fonctionné sur certains arm64 ce qui a nécessité un retour à oracle mysql 8.0.31.0 [5].

llCould obsolète depuis longtemps, suppression de code inutile

  • Commit 50212c240c [6]

Correction dans le code pour MySQL

  • Il y avait de mauvais noms pour certaines colonnes et personne ne s'en est plaint, même pas le runtime.[7]

Mise à jour de libomv

  • Commit b1e0b6d0c7 [8]
  • Déplacé aussi vers dotNet 8.

Core prebuild.xml plus simple

  • Il inclut seulement les dlls nécessaires pour opensim.
  • Compile Linux aussi

Nettoyage d'opensim-libs

  • Suppressions de choses inutilisées

Configuration pour CG

  • Par défaut GC[9] fait comme si une application s'exécutait seule sur une machine.
  • CG va s'activer pour commencer à libérer de la mémoire avec des applications qui utilisent 95% de la ram physique de la machine.
  • Modification de la configuration pour demander de libérer la mémoire à la moitié de son utilisation dans OpenSim.runtimeconfig.json qui est régénéré à chaque compilation  :
"System.GC.HighMemoryPercent" : 50,
  • Sur la région de la réunion la configuration permet une libération de la mémoire à 1% de son utilisation c'est à dire 638Mo.
"System.GC.HighMemoryPercent" : 1,
  • La commande Stats de la console le montre.
GCTotalCommited : 121MB 
GCTotalAvaiable 63849MB 
GCHMthreshold 638MB
  • Les machines exécutant de nombreuses petites régions peuvent avoir besoin de changer cela également.

Avertissement

Attention : Ce résumé existe pour orienter vos recherches. Des erreurs d'interprétation ne sont pas à exclure. Pour plus de précisions, veuillez vous référer aux sources ou vous adresser directement aux développeurs d'OpenSimulator en assistant aux réunions du mardi ou sur le canal IRC. Je ne fais pas partie des développeurs, ne vous adressez pas à moi pour les joindre. Merci.😉


Informations

Adresse des dépôts d'OpenSim

Cela n'inclut pas notre libomv fork

Déplacements des projets d'Andrew Hellershanks

  • Tous ses projets liés à OpenSim on été déplacés de github vers sur gitlab.com. Les copies sur github seront marquées comme archivées. Ceci est dû à l'exigence de 2FA (Double authentification) sur github. Il est difficile de se connecter.

Base de données

Migration : Défis liés à l'utilisation de SQLite dans le contexte d'OpenSim

  • L'utilisation de SqLite peut poser des problèmes, notamment en raison de certaines limitations de SqLite par rapport à d'autres bases de données. Il existe des différences avec MySQL au niveau desfonctionnalités disponibles et de la syntaxe utilisée pour les requêtes. Il n'y a pas de commentaires dans SqLite.
  • Les migrations de base de données sont complexes en raison de certaines limitations de SQLite, telles que l'absence de support natif pour les opérations d'ALTER TABLE.
  • Les différences entre SQLite et MySQL nécessitent un traitement individuel, ce qui peut être chronophage mais nécessaire pour garantir le bon fonctionnement de la base de données.

Source

http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2024-04-23