Anti Stuttering : Intelligent standby list cleaner (ISLC)

Poster ici les programmes utiles que vous avez découverts
Avatar de l’utilisateur
Parisien_entraide
Messages : 10576
Inscription : 02 juin 2012 20:48
Localisation : Je suis dans la matrice :-)

Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Parisien_entraide »

PREAMBULE :

index.jpg


Sous Windows dont et surtout avec Windows 10 le stuttering dans les jeux (malgré le mode "jeux") peut avoir plusieurs causes

Néanmoins le principal est le fait de fuites mémoires, parfois allié à une quantité de RAM insuffisante

A cela on y ajoute une fonctionnalité qui a débarqué dans Win10

https://blogs.windows.com/windowsexperi ... ild-10525/

Dans Windows 10, nous avons ajouté un nouveau concept de gestion de la mémoire appelé un magasin de compression, qui est une collection de pages compressées en mémoire . Cela signifie que lorsque gestionnaire de mémoire ressent une pression de mémoire, il comprimera les pages inutilisées au lieu de les écrire sur le disque. Cela réduit la quantité de mémoire utilisée par processus, permettant à Windows 10 de maintenir plus d'applications dans la mémoire physique à la fois. Cela contribue également à une meilleure réactivité dans Windows 10. Le magasin de compression est dans le travail du processus du système. Étant donné que le processus système maintient le magasin en mémoire, son ensemble de travail augmente plus précisément lorsque la mémoire est disponible pour d'autres processus. Ceci est visible dans le Gestionnaire des tâches et la raison pour laquelle le processus système semble consommer plus de mémoire que les versions précédentes.

La forte utilisation mémoire par SYSTEM est du fait de la compression de mémoire non utilisée.
Elle doit baisser (se libérer) lorsque le système/processus requiert de la mémoire. Dans les faits ce n'est toujours pas le cas et cela peut être contraignant dans les applis lourdes et pour les joueurs

Cette fonctionnalité est désactivable via une clé de registre (pour info car je n'ai pas les effets secondaires de la manipulation)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndu clé à laquelle on attribue la valeur "4" pour désactiver la fonction

Détails et autres ici : viewtopic.php?t=53292&start=

Bref cela se complexifie
Pour en savoir plus sur la mémoire Mesurer l’utilisation mémoire sur Windows.



BUT DE L'APPLICATION :



L’application surveillera et effacera de la liste, ce qui traine en mémoire dans la "mémoire en cache dite de veille" (liste d'attente, pages modifiées, processus inutiles pour les jeux, ...) si celle-ci est > 1000 Mo (1 Go) ET si la quantité de mémoire est < à 1000 Mo (1Go)

Les paramètres indiquent que les deux conditions doivent être remplies en même temps

Ce n'est pas une programme miracle pour une situation donnée, mais cela a dépanné par mal de personnes confrontées au problème sous divers jeux, même avec 16 Go de RAM

Un visu avec RamMap
2020-01-10_194413.png

Concernant la mémoire de veille :

Quand une application charge un fichier en mémoire celui-ci n'est pas effacé quand elle le ferme, il reste disponible avec une entrée correspondant à "son age" dans une table.

Cette mémoire est disponible, c'est juste qu'elle ne sera donnée qu'en seconde priorité si la mémoire dite "libre" n'est pas suffisante.
Les programmes qui y étaient devront donc être rechargés la prochaine fois,

Elle est seulement utilisée en second lorsque la mémoire libre n'est plus disponible

Dans le cas des joueurs, nombre de programmes stockés qui ne sont pas en relation avec les jeux, ou de de données de jeux obsolètes restent dans le cache qui ne se vide pas
(Vu sous BF1 et BF V suivant les configs)


INSTALLATION


Il suffit de télécharger la dernière version de l'application sur le site Web du développeur (qui est celui de DDU)

Edit : Lien actualisé depuis la sortie de cette présenation
https://www.wagnardsoft.com/ISLC/ISLC%20v1.0.2.6.exe

la version antérieure pouvait poser problème sous certaines configurations de Windows 10
L'auteur suggère une solution https://www.wagnardsoft.com/forums/view ... f=5&t=1256

L'ancienne version fonctionne bien cependant (et surtout n'utilise pas les compteurs de performance)
https://www.wagnardsoft.com/ISLC/ISLC%20v1.0.1.0.exe

puis de l' exécuter afin d' extraire l'archive dans un dossier que l'on peut choisir

Le programme lui-même est portable et peut être exécuté à partir de n'importe quel endroit sans installation.

Cependant l'auteur précise qu'il faut lui donner des droits administrateur avant lancement (clic droit sur le programme ---> Propriétés) ou
2019-02-24_133451.png
On peut suivre l'évolution des divers outils de l'auteur sur

https://forums.geforce.com/default/topi ... 4-2019-/1/



USAGE :

Dans l'absolu il n'y a pas grand chose à faire hormis de cliquer sur "START"
Edit du 05/12/2021 : Néanmoins pour une configuration optimale voir le dernier message de ce sujet

2019-02-24_122253.png

Certaines parties sont modifiables, comme la mémoire à gérer pour que les 2 conditions soient réunies
Idem pour le timer Resolution (dans ce contexte l'auteur ne dit pas quelle est la relation avec son programme)

On peut forcer la fonction (Purge StandByList)


Points négatifs :

Cela fait une tâche de plus en arrière plan. Cependant (chez moi) toutes les 10 secondes j'ai une activité CPU de 0.01 et une conso mémoire constante de 49.9 Mo, donc.. C'est très négligeable
On ne voit pas le détail de ce qui est effacé
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
- Only Amiga... was possible !
- Un problème sans solution est un problème mal posé. » (Albert Einstein)
- "Tous les patients mentent" (Docteur House)
- Dans le monde il y a deux sortes de gens : Ceux qui font des sauvegardes et .. Ceux qui vont faire des sauvegardes
Malekal_morte
Messages : 110641
Inscription : 10 sept. 2005 13:57

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Malekal_morte »

Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.
Avatar de l’utilisateur
Parisien_entraide
Messages : 10576
Inscription : 02 juin 2012 20:48
Localisation : Je suis dans la matrice :-)

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Parisien_entraide »

On peut également avec https://wj32.org/wp/software/empty-standby-list/ se créer une tâche via le gestionnaire de tâches mais cela fait apparaitre pendant une seconde une petite fenêtre cmd qui peut perturber

Avec l'outil ISLC, l'avantage c'est que l'on peut lancer et stopper le processus lorsqu'on le souhaite, et surtout définir une plage mémoire d'usage qui ne s'activera pour le nettoyage que si besoin est
- Only Amiga... was possible !
- Un problème sans solution est un problème mal posé. » (Albert Einstein)
- "Tous les patients mentent" (Docteur House)
- Dans le monde il y a deux sortes de gens : Ceux qui font des sauvegardes et .. Ceux qui vont faire des sauvegardes
Malekal_morte
Messages : 110641
Inscription : 10 sept. 2005 13:57

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Malekal_morte »

Merci.
Je ferai un article dans le système sur les outils pour gérer la mémoire de Windows =)
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.
Malekal_morte
Messages : 110641
Inscription : 10 sept. 2005 13:57

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Malekal_morte »

Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.
Avatar de l’utilisateur
Parisien_entraide
Messages : 10576
Inscription : 02 juin 2012 20:48
Localisation : Je suis dans la matrice :-)

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Parisien_entraide »

Mis à jour du lien de téléchargement avec la version V.1.0.2.6 dans le premier message de ce sujet

FAQ tirée des discussions sur le forum de Wagnard
https://www.wagnardsoft.com/forums/view ... =18&t=1256

______________

Mon PC se fige (plutôt un, microfreeze) lorsqu'ISLC purge la mémoire automatiquement
Ceci est normal sur les petites configurations avec disque dur, surtout si ISLC est installé ailleurs que sur le disque C et c'est lié à Windows
Sinon essayer des valeurs de 510 Mo pour commencer, et doubler cette valeur jusqu'à l'arrivée du micro freeze
Idem pour le polling rate. il vaut mieux laisser le paramètre par défaut (1000ms)



Qu'est ce que je dois modifier dans les paramètres avec 16 Gb de mémoire
Rien
Les valeurs "1024" pour les configuration avec 16 et 32 Gb de mémoire sont optimales
Avec 8 Gb on peut définir une valeur de 512
Mais chacun peut ajuster en fonction des besoins



ISLC ne fonctionne pas
Outre le .net installé et à jour, ISLC ne peut bien fonctionner que Si les valeurs des compteurs de performances existent ou ne sont pas corrompues

Exemple de message d'erreur :

2021-08-27_110608.png

Pour reconstruire manuellement les valeurs de bibliothèque de compteurs de performance

Ouvrir une fenêter CMD en mode administrateur et taper la commande 2 fois (une après chaque reboot) surtout si vous avez le message d'erreur
"ERROR: UNABLE TO REBUILD PERFORMANCE COUNTER SETTING FROM SYSTEM BACKUP STORE. ERROR CODE IS 2"

LODCTR /R et relancer l'ordinateur (sans démarrage rapide)

Pour rappel, la commande globale est (pas nécessaire pour ISLC) :

Reconstitution des compteurs :
cd c:\windows\system32
lodctr /R
cd c:\windows\sysWOW64
lodctr /R


La commande suivante est plus liée à la reconstruction et le bon fonctionnement général, et n'est pas nécessaire pour ISLC

Resynchronisation des compteurs avec Windows Management Instrumentation (WMI) :
WINMGMT.EXE /RESYNCPERF


Si cela ne fonctionne pas, ou que vous avez désactivé les compteurs de performances :

Toujours dans une fenêtre CMD en mode administrateur, vérifier que le compteur a correctement été ajouté au registre.

lodctr /Q et vérifier si la valeur est sur Enabled"

Exemple.png

En plus précis : lodctr /q | find "Disabled" (ce qui n'affichera que les valeurs désactivées)

Par ex si la commande lodctr /q | find "Disabled" retoune

[ PerfDisk ] Compteurs de performances (désactivés)
[ PerfOS ] Compteurs de performances (désactivés)


Il suffit pour chaque compteur désactivé de taper la commande

lodctr /e:PerfDisk
lodctr /e:PerfOS

et de faire la même chose pour ceux qui vous intéressent



Les 4 valeurs « First Counter », « Last Counter », « First Help », « Last Help » listées par la commande doivent correspondre à celles présentes dans le registre.

On peut trouver ces valeurs ici :

Code : Tout sélectionner

HKLM\System\CurrentControlSet\Services\%servicename%\Performance
%servicename% représente tout service avec un compteur de performances. Par exemple : PerfDisk, PerfOS, etc.

Il peut y avoir des clés de registre pour "DisablePerformanceCounters" dans l'un de ces emplacements.
Conformément à l'article TechNet (voir lien plus bas) cette valeur doit être définie sur 0. Si la valeur est autre que 0, le compteur peut être désactivé.

Pour ISLC si le compteur de performances est désactivé, exécutez la commande lodctr /e:PerfOS pour l'activer.

lodctr /e:PerfOS

Relancer l'ordinateur

Pour les autres problèmes liés aux compteurs de performances et non à ISLC
https://docs.microsoft.com/en-US/troubl ... e-counters


Si il est impossible de réparer les compteurs, c'est que Windows est endommagé ou que vous avez trop "bidouillé" celui ci
Donc soit il faudra passer par une réparation https://www.malekal.com/reparer-windows ... e-donnees/
soit désactiver les compteurs via une clé de registre

Code : Tout sélectionner

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
et de mettre "Disable performance counters" à "0"



Il est impossible de faire démarrer automatiquement ISLC avec Windows via le planificateur de tâches

Il faut exécuter le programme en tant qu'administrateur (clic droit sur le programme) et ajouter un délai au chargement (5 à 10 secondes par exemple), pour qu'ISLC se charge APRES Exlorer

Manipulation

Ouvrir le planificateur de tâches
---> Action > Créer une tâche
---> Donnez-lui un nom sous Général et cochez "Exécuter avec les privilèges les plus élevés" en bas
---> Onglet Déclencheurs> Nouveau > Au démarrage
---> Onglet Actions > Nouveau > Démarrer un programme - choisissez ISLC

Ne pas oublier de cocher la case "démarrer minimisé"
Ne pas oublier de cocher également la case pour autoriser l'exécution avec des privilèges plus élevés



Est ce qu 'ISLC génère des écritures inutiles sur le SSD ?
Non, cela ne touche aucune donnée sur aucun lecteur


Est ce que le polling rate est pour la souris ?
Non, il s'agit de la fréquence à laquelle le programme va vérifier l'état de la mémoire


Le programme fonctionne en mode manuel, mais mais ne veut pas nettoyer automatiquement
C'est normal.
Si on prend l'exemple de la configuration par défaut, rie n'est nettoyé si on dispose de plus de 1024 Mo de mémoire libre
Il faut les 2 conditions pour que cela fonctionne


Est-ce que je peux me faire bannir par un programme anti triche dans mes jeux ?
Pour faire simple : NON
Par contre certains programmes comme GameGuard n'aiment pas qu'ISLC soient lancés avant eux
Solution : Mettre ces programmes dans les exceptions d'ISLC

Exclusions.png


Peut il y avoir un conflit avec SuperFetch ?
Non les deux programmes n'ont pas les mêmes finalités (sur un SSD superfetch n'est pas utile, même si les techs de Microsoft ne sont pas tous d'accord sur ce point)


La mémoire libérée indique "0" (zéro) et semble bloquée
C'est normal
Le processus suivant les configurations peut prendre jusqu'à une minute



la liste d'exclusion empêche ISLC de se purger lorsqu'un processus de cette liste est en cours d'exécution.
Quand est-ce utile? Pour quel scénario est-il censé être utilisé, par exemple ?

Certaines applications ou certains jeux peuvent s'exécuter ou se charger davantage à partir du disque dur lorsque le cache est vidé, car ils sont programmés pour l'utiliser.
Il v suffit de mettre une application à l'exclusion lorsque l'on pense qu' ISLC fait plus de mal que de bien pour cette application/jeu.



le Timer résolution indique une valeur autre que 0.5ms (par ex 0.4482ms) est ce normal ?
Ce timer est liés aux pilotes etc, et ceux ci peuvent influer, idem pour ceux qui activent le HPET ou le forcent à travers Windows (le HPET est activé par défaut dans le bios/uefi et il ne faut pas y toucher du moins sous Windows 10 et idem via BCDEDIT sauf pour certains cas ou utilisations en combinaison avec les autres timers, comme la MAO ou jeux)

https://www.malekal.com/optimiser-boost ... tiver_HPET

Une valeur inférieure à 0,5 ms dans les systèmes modernes "peut" rendre un peu plus rapide et réactif le PC .
Néanmoins l'interrogation ne doit pas être trop faible/basse car il faut un peu d'utilisation du processeur pour interroger les informations de la mémoire.

Il faut cependant savoir que la valeur de l'intervalle de minuterie (Timer resolution) n'est en aucun cas liée au matériel.

Cette valeur d'intervalle est définie par une fonction du noyau Windows.
Dans la plupart des versions de Windows 10, les valeurs d'intervalle de minuterie sont calculées comme l'inverse des puissances de deux.
Par exemple, l'intervalle par défaut de 15,625 ms est calculé comme 1/(2**6), et l'intervalle le plus bas possible de 0,48828125 ms est calculé comme 1/(2**11).
C'est pour cette raison que vous ne verrez jamais des valeurs telles que 0,5, 1,0, 15,0 ms, etc.
Il y a cependant un lien avec le HPET, mais cela fera l'objet d'un article à part car il s'agit d'un gros morceau





Existe il des alternatives ?
Oui avec certains programmes de Sysinternals (RamMap) https://www.malekal.com/mesurer-lutilis ... r-windows/
ou
https://www.mediafire.com/file/r5p3icyv ... e.zip/file


Pour tout configurer, exécutez 'setup.bat' dans une invite de commande en mode administrateur
Pour tout nettoyer, exécutez 'cleanup.bat' dans une invite de commande en mode administrateur

Pour ceux qui veulent voir ce qui se passe derrière :

Code : Tout sélectionner

/* 2 > nul  ||  titre FreeStandbyMemory.bat par AveYo v2019.06.01 
@ écho désactivé || extrait de compilation csc, planification avancée, add_remove intégré - MISE À JOUR : détection de mémoire libre fiable 
 
définir /a CLEAR_EVERY_MINUTES=1 
définir /a CLEAR_WHEN_UNDER_MB=512 
définir /a CLEAR_SYSTEMCACHEWS=0 
 
:: check_admin_rights 
requête reg "HKEY_USERS\S-1-5-20\Environment" /v TEMP > nul 2 > nul  ||  ( 
couleur 0e &  echo . &  echo PERMISSION REFUSÉE ! Cliquez avec le bouton droit sur % ~nx0  ^& Exécuter en tant qu'administrateur 
timeout /t -1 & couleur 0f &  titre  % COMSPEC %  &  exit /b 
) 
 
:: add_remove chaque fois que le script est exécuté à nouveau 
schtasks /query /tn FreeStandbyMemory > nul 2 > nul  &&  ( 
 écho . 
schtasks /Delete /TN "FreeStandbyMemory" /f 2 > nul 
 reg delete HKLM\Software\AveYo /v FreeStandbyMemory /f 2 > nul 
 del /f /q " % Windir % \FreeStandbyMemory.exe" 2 > nul 
couleur 0b & écho . & echo SUPPRIMÉ ! Exécutez à nouveau le script pour recompiler et ajouter une planification  ! 
timeout /t -1 & couleur 0f & titre  % COMSPEC %  & sortie /b 
) 
 
:: compiler l'extrait c# 
pushd  % ~dp0 
del  /f /q FreeStandbyMemory.exe  > nul  2 > nul 
for /f "tokens=* delims=" %% v  in  ( ' dir /b /s /a:-d /o:-n " % Windir % \Microsoft.NET\*csc.exe"' )  do  set " csc=" %% v "" 
% csc % /out:FreeStandbyMemory.exe /target:winexe /platform:anycpu /optimize /nologo " % ~f0 " 
si  pas  exister FreeStandbyMemory.exe de ERROR ! Échec de la compilation de l'extrait de code c# et du délai d'attente /t -1 et de la  sortie /b 
écho | set /p=FreeStandbyMemory.exe & copy /y FreeStandbyMemory.exe " % Windir % \FreeStandbyMemory.exe" & set "OUTDIR= % Windir % " 
s'il  pas  n'existe " % Windir % \FreeStandbyMemory.exe" echo ATTENTION ! Impossible de copier FreeStandbyMemory.exe dans % Windir % \ & définir "OUTDIR= % CD % " 
 
:: configurer un calendrier avancé - peut se permettre une priorité plus élevée après le passage de wmi à winapi 
définir "task_run= % OUTDIR % \FreeStandbyMemory.exe % CLEAR_WHEN_UNDER_MB %  % CLEAR_SYSTEMCACHEWS % " 
set "schedule=/Create /RU "System" /NP /RL HIGHEST /F /SD "01/01/2001" /ST "01:00:00" " 
schtasks % planning % /SC MINUTE /MO % CLEAR_EVERY_MINUTES % /TN "FreeStandbyMemory" /TR " % task_run % " 
set "sset=$s=New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -Priority 1 -StartWhenAvailable;" 
set "stopexisting=$s.CimInstanceProperties['MultipleInstances'].Value=3;" 
powershell -noprofile -c " % sset %  % stopexisting % $null=Set-ScheduledTask -TaskName FreeStandbyMemory -Settings $s" 
 
:: déclencher la tâche, forcer un effacement manuel et terminer la configuration 
schtasks /Run /TN "FreeStandbyMemory" 
écho . 
echo Effacement de StandbyMemory toutes les % CLEAR_EVERY_MINUTES % minutes UNIQUEMENT si la mémoire libre est inférieure à % CLEAR_WHEN_UNDER_MB % Mo 
echo Peut forcer un effacement manuellement à partir de l'invite de commande ( Admin ) en entrant : freestandbymemory 
écho . 
echo AJOUTÉ ! Exécutez à nouveau "% ~nx0 " pour supprimer l'extrait compilé et le calendrier  ! 
délai d'attente /t -1 
sortie /b 
 
:: Basé sur l'idée de "Script wrapper PowerShell pour effacer la mémoire StandBy sans RAMMap" par Alexander Korotkov 
:: Implémentation des suggestions SetSystemFileCacheSize et NtSetSystemInformation par Maks.K 
:: Utilisation de RtlAdjustPrivilege, GetPerformanceInfo, forcer l'effacement si aucun argument, sortie supprimée, aseptisé par AveYo 
*/ 
en utilisant le système ; 
en utilisant System.Diagnostics ; 
en utilisant System.Runtime.InteropServices ; 
en utilisant System.Reflection ; 
 
[assembly:AssemblyTitle ( "FreeStandbyMemory" ) ] 
[assembly:AssemblyCopyrightAttribute ( "AveYo" ) ] 
[assembly:AssemblyVersionAttribute ( "2019.06.01" ) ] 
 
espace de noms FreeStandbyMemory 
{ 
programme de classe 
  { 
static bool retv = false; 
static int MemoryPurgeStandbyList = 0x0004; 
    const int SystemFileCacheInformation = 0x0015; 
const int SystemMemoryListInformation = 0x0050; 
const entier SE_INCREASE_QUOTA_PRIVILEGE = 0x00000005; 
    const int SE_PROF_SINGLE_PROCESS_PRIVILEGE = 0x0000000d; 
[StructLayout ( LayoutKind.Sequential ) ] 
cours privé PERFINFO 
    { 
      public int cb; 
public IntPtr CommitTotal; 
public IntPtr CommitLimit; 
public IntPtr CommitPeak; 
public IntPtr PhysiqueTotal; 
public IntPtr PhysicalAvailable; 
public IntPtr SystemCache; 
public IntPtr KernelTotal; 
public IntPtr KernelPaged; 
public IntPtr KernelNonpaged; 
public IntPtr PageSize; 
public int HandleCount; 
public int ProcessCount; 
public int ThreadCount; 
      public PERFINFO () 
      { 
this.cb = ( int ) Marshal.SizeOf ( typeof ( PERFINFO )) ; 
      }         
    } 
[retour : MarshalAs ( UnmanagedType.Bool ) ] 
[DllImport ( "psapi.dll", CharSet = CharSet.Auto, SetLastError = true ) ) 
static extern bool GetPerformanceInfo ( [ In , Out ] PERFINFO pi ) ; 
[DllImport ( "psapi.dll" ) ] 
static extern bool EmptyWorkingSet ( IntPtr hwProc ) ; 
[DllImport ( "kernel32.dll" ) ] 
static extern bool SetSystemFileCacheSize ( IntPtr MinimumFileCacheSize, IntPtr MaximumFileCacheSize, int Flags ) ; 
[DllImport ( "ntdll.dll" ) ] 
static extern IntPtr RtlAdjustPrivilege ( int Privilege, bool Enable, bool CurrentThread, out bool RetValue ) ; 
[DllImport ( "ntdll.dll" ) ] 
static extern IntPtr NtSetSystemInformation ( int InfoClass, out int Info, int Length ) ; 
 
static void Main ( string[] args ) 
    { 
cible int = ( args.Length == 0 ) ? Int32.MaxValue : !!() 
bool systemcachews = ( args.Length == 0 || args.Length > = 2 && args[1] == "1" ) ; 
Int64 libre = 0 ; 
PERFINFO pi = nouveau PERFINFO () ; 
      if  ( GetPerformanceInfo ( pi )) 
      { 
Int64 disponible = pi.PhysicalAvailable.ToInt64 ()  ; 
        Int64 cache = pi.SystemCache.ToInt64 () ; 
Int64 page = pi.PageSize.ToInt64 () ; 
libre = (  ( succès > cache ) succès - cache: cache - succès ) * Page >> 20; 
/* Pour déboguer, remplacez csc /target:winexe par /target:exe et décommentez le */ de Console.WriteLine 
////Console.WriteLine ( "Total : {0,5}Mo", pi.PhysicalTotal.ToInt64 () * page >> 20 )  ; 
////Console.WriteLine Avail ( " : {0,5}Mo", pi.PhysicalAvailable.ToInt64 () * page >> 20 ) ; 
////Console.WriteLine ( "Cache: {0,5}Mo", pi.SystemCache.ToInt64 () * page >> 20 ) ; 
////Console.WriteLine ( "Gratuit : {0,5}Mo", gratuit ) ; 
      } 
      if  ( libre > cible ) return ; 
////Console.WriteLine ( "Cible :{0,5}Mo - EFFACEMENT  ! ", cible )  ; 
RtlAdjustPrivilege ( SE_INCREASE_QUOTA_PRIVILEGE, true, false, out retv ) ; 
RtlAdjustPrivilege ( SE_PROF_SINGLE_PROCESS_PRIVILEGE, true, false, out retv ) ; 
NtSetSystemInformation ( SystemMemoryListInformation, out MemoryPurgeStandbyList, Marshal.SizeOf ( MemoryPurgeStandbyList )) ; 
      if  ( cache système ) { 
SetSystemFileCacheSize ( nouveau IntPtr ( -1 ) , nouveau IntPtr ( -1 ) , 0 ) ; 
Process[] processlist = Process.GetProcesses () ; // Le système libre traite également les ensembles de travail : 
foreach ( Process p dans processlist )  if  ( p.SessionId == 0 ) try { EmptyWorkingSet ( p.Handle ) ; } catch ( Exception ) {} 
      } 
    } 
  } 
} 
/*_*/ 
L'auteur, AVEYO, est bien connu pour ses nombreux scripts de qualités
https://pastebin.com/u/aveyo



Quelle est la différence avec l'outil ISLC ?
Pour les aspects techniques et discussions
https://forums.guru3d.com/threads/fix-g ... st-5590668



Est ce que ISLC fonctionne sous Windows 11 ?
Windows 11 ne gère pas mieux la mémoire donc ISLC est toujours préconisé
Une version en beta est dispo ici https://www.wagnardsoft.com/ISLC/ISLC%20v1.0.2.6.exe Edit: La version définitive est sortie
La fonction "enable customer timer resolution doit être désactivée au lancement (donc si activée, la désactiver et relancer)



Est ce que ISLC fonctionne sous Windows 11 et les nouvelles générations de processeurs ?

Lorsque l' IGPU est actif sur W11 avec Alder Lake, ISLC ne démarre pas
L'observateur d'événements renvoie l'erreur "Chemin du module défaillant : C:\Windows\SYSTEM32\ControlLib.dll".
La désactivation de l'IGPU dans le gestionnaire de périphériques résous le problème




Pourquoi Microsoft ne force-t-il pas 0,5 au lieu de 1 dans les jeux si c'est mieux ?
L'une des raisons est l'utilisation de la batterie pour les appareils mobiles/ordinateurs portables.



Est ce que l'on peut modifier/forcer cette valeur pour indique 0.5 via la clé de registre ?
Non. L'appel à cette fonction s'effectue via une API Win32





J'ai activé ISLC mais j'ai toujours autant de latence malgré le fait que j'ai défini la valeur 0.5 ms à Timer Résolution


Sur certaines configurations (sauf Windows 7 mais il est devenu obsolète) le fait que EnableLUA soit sur 0 pose problème
Il faut donc changer la valeur dans le registre et la placer sur 1 (qui est la valeur par défaut il faut se le rappeler)

Code : Tout sélectionner

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA doit être défini sur 1

Pour d'autres, en plus de LUA à 1 il faut désactiver l'UAC sur le panneau de configuration

Code : Tout sélectionner

cmd /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v FilterAdministratorToken /t REG_DWORD /d 0 /f

Il faut se rappeler que la clé enableLUA désactive totalement le contrôle de compte utilisateur pour la machine.
Le contrôle de compte utilisateur est appliqué à tous les utilisateurs.

Cela va donc plus loin que de désactiver l'UAC et est moins sécurisé.
En plus cela peut sous windows 10 apporter des effets secondaires
Par ex il est possible que les applications du store ne se lancent pas
Meme la calculatrice ne se lancera pas

De mon point de vue je ne suis pas partisan de toucher à ce qui est lié à la sécurité
Donc se méfier des programmes d'optimisation qui vous demandent de désactiver tout cela
Il a été vu également que lors d'un passage de Win7 à Win11, la valeur "0" qui avait été définie sous Win7 n'avait pas été rétablié à "1" (qui est la valeur par défaut sous Win10)


Certains prograpmmes peuvent également mettre le bazar
Par ex il a été constaté qu'avec iCUE 4 (CORSAIR Utility Engine) pour les claviers, souris, tapis de souris, casques audio, boîtiers, systèmes de surveillance, systèmes d'éclairage,

On voit là le lancement de iCUE4, puis d'ISLC qui essaie de prendre la main. Ensuite iCUE4 reprend le dessus
DPC avec ICUE4.png







La version définitive de la v 1.0.2.6 a été sous Win7 pro, Win8 et Win10 21H1 pro, et fonctionne (tests persos)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
- Only Amiga... was possible !
- Un problème sans solution est un problème mal posé. » (Albert Einstein)
- "Tous les patients mentent" (Docteur House)
- Dans le monde il y a deux sortes de gens : Ceux qui font des sauvegardes et .. Ceux qui vont faire des sauvegardes
Avatar de l’utilisateur
Parisien_entraide
Messages : 10576
Inscription : 02 juin 2012 20:48
Localisation : Je suis dans la matrice :-)

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Parisien_entraide »

ISLC est sorti en version définitive v1.0.2.6 (Faq de l'article précédent mis à jour et idem pour le lien de téléchargement du premier article)


Fonctionner sous Windows 10 et Win dows 11 même si le paramètre LUA est à 0.(il y a une restriction pour l usage du processeur Alder Lake et Windows 11 - cf la FAQ du message précédent)

Téléchargement : https://www.wagnardsoft.com/ISLC/ISLC%20v1.0.2.6.exe


L'application surveillera et effacera la liste d'attente de la mémoire en fonction du paramètre d'options configuré, que vous avez défini.

Cela peut aider les utilisateurs qui ont du stuttering (bégaiements) dans les jeux lors de l'utilisation de la mise à jour de Windows 10 Creator et d'une version supérieure de Windows (y compris Windows 11).


Journal des modifications :
- ISLC emprunte maintenant l'identité du compte 'SYSTEM' lors du changement du "Timer résolution"

Si vous avez des problèmes pour l'exécuter.


Exécuter dans un CMD (invite de commande en mode administrateur) 2 fois :

Code : Tout sélectionner

LODCTR /R 

et redémarrer


Si cela ne fonctionne toujours pas , il est vérifié si le compteur de performances est activé et si ce n'est pas le cas de l'activer

Si

Code : Tout sélectionner

lodctr /q 
est indiqué en "Désactivé"

Alors il faut appliquer la commande :

Code : Tout sélectionner

lodctr /e:PerfOS

Un programme de débogage pour le groupe d'administrateurs sous les politiques de sécurité locales (SECPOL.MSC) est également requis. (c'est la valeur par défaut de Windows de toute façon.)

Un redémarrage est requis après ces changements
- Only Amiga... was possible !
- Un problème sans solution est un problème mal posé. » (Albert Einstein)
- "Tous les patients mentent" (Docteur House)
- Dans le monde il y a deux sortes de gens : Ceux qui font des sauvegardes et .. Ceux qui vont faire des sauvegardes
Avatar de l’utilisateur
Parisien_entraide
Messages : 10576
Inscription : 02 juin 2012 20:48
Localisation : Je suis dans la matrice :-)

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Parisien_entraide »

Dans le premier message on a pu voir qu'ISLC permet de faire du nettoyage dans l’utilisation de la mémoire RAM pour éviter des chutes de performances sur vos sessions de jeu, et pallier par ex à des fuites mémoire
La conséquence si on ne touche à rien étant qu'obligatoirement cela va basculer sur le SWAP, donc amener du stuttering (bégaiements) au mieux...


Il y a deuxième usage d'ISLC qui passe souvent à la trappe :

Forcer les logiciels à se synchroniser à l’horloge du système pour effectuer des actions toutes les 0,5 milliseconde au lieu de 1 à 15ms par défaut (l’horloge peut être forcée par d’autres logiciels via l’API de Windows)
Vu que c'est implémenté il faut en profiter.
il y a 10 ans j'ai du payer pour avoir la meme chose dans un petit programme

Est ce utile ? Dans certains cas
Mais ca l'est pour tout ce qui est mal codé




Revenons plus en détails sur l'interface : Quels réglages appliquer sur ISLC ?

ISLC-Details.jpg

  • 1) - Laisser dans “the list size is at least” (la taille mémoire est d'au moins) : 1024 Mb (ce n'est pas la traduction exacte mais c'est voulu)
    - Laisser dans " free memory is lower than" (La mémoire libre est plus basse que) la valeur par défaut de 1024

    J'ai noté que plusieurs personnes indiquent d'adapter ce dernier paramètre à la RAM totale soit

    Code : Tout sélectionner

    Pour  8 Go indiquez   4096 
    Pour 16 Go indiquez   8192 
    Pour 32 Go indiquez  16384 

    Après plusieurs tests je le déconseille

    Ayant actuellement une fuite mémoire soit d'ORIGIN, soit de certaines pilotes (dont graphiques), mais je ne me suis pas encore penché sur l'origine du problème, dans un jeu comme BF V, après 2h de jeu, j'arrivais parfois à une dizaine de nettoyage mémoire (suivant le type de jeu comme le mode conquête etc) en indiquant 8 192 pour 16 Go de RAM détenues

    Normal, plus on indique une valeur haute plus le processus de nettoyage se lancera
    C'est contre productif, comme tout ce que l'on touche dès lors que c'est dans un cache car cela oblige au rechargement de ce qui est stocké, et c'est une perte de temps

    Par contre en jeu je ne m'aperçois pas de ces nettoyages mais j'ai donc laissé la valeur par défaut préconisée du reste par l'auteur, soit 1024

    - La valeur qui apparait : "2" est le nombre de nettoyage

  • 2) - Ces options en bas à gauche permettent de faire en sorte que le logiciel se lance automatiquement après le démarrage de Windows ET se mettre en réduction dans la barre de tâches
    Vous pouvez cocher les 2 cases.ou une seule

    Dans l'exemple je n'ai pas ajouté le lancement au démarrage vu que je n'ai pas de soucis en usage bureautique ou d'autres jeux
    De plus vu que je suis partisan de laisser le minimum de taches et services et de virer ce qui n'est pas utile pour mon usage ou pour Windows, je ne vois pas l'intérêt de laisser ce paramètre coché
    Chacun adapte en fonction de ses besoins
  • 3) - Vous pouvez effectuer un nettoyage manuel "Purge Stand By list", forcé donc, ce qui incrémentera le compteur (où le chiffre "2" apparait)
    Les autres valeurs indiquent la quantité de RAM détenue, la "StandBy List Working Set" (ce qui est donc en cache), et "Free Memory", qui indique tout
    ce qui est libéré et libre
  • 4) - Le polling Rate n'est pas en relation avec le taux de scrutation de votre souris, mais la fréquence avant action
    J'ai indiqué une valeur de 10 secondes, donc le logiciel vérifiera si les conditions sont réunies ou pas pour un nettoyage toutes les 10 secondes
    Je ne vois pas l'intérêt de laisser la valeur par défaut de 1ms (ce qui sur les petites configs peut influer sur la conso processeur du moins prendra un % de temps processeur qui serait utile à autre chose comme aider le GPU)
  • 5) - Ce bouton "STOP" est important car c'est à partir de lui que vous pourrez insérer la quantité de RAM pour le paramètre "free memory is lower than" si vous souhaitez la modifier, ET surtout pour cocher la case "Enable Custom Size Resolution" afin d'insérer une valeur dans "Wanted Timer resolution"

    Une fois fait, on clique sur " START"
  • 6) - C'est là qu'on peut indiquer ce qui va jouer sur la latence en jeu, à savoir une valeur de 0.50ms (c'est le minimum que l'on puisse indiquer)

    A savoir : Si vous voyez dans “Current timer resolution” un nombre différent, comme un peu supérieur ou inférireur comme par 0,4882 ms ou autre, c'est... normal
    Cela peut varier en fonction du modèle de carte mère de votre ordinateur
    A cela on y ajoute le HPET (Bios et sous Windows) qui à son mot à dire
    Le HPET fera l'objet d'un sujet à part car il y a trop à dire sur le sujet mais je vais résumer un peu plus loin
  • 7) Si on le souhaite on peut exclure des programmes du nettoyage via le bouton "Exclusion"
  • 8) Un programmeur ca ne vit pas d'amour et d'eau fraîche et de fraises tagada. On peut faire un don (Et aucune somme n'est imposée) via Paypal, si le programme plait et que l'on s'en sert



LE HPET :

Son efficacité dépend

- De l'âge du PC et là, on peut avoir un gain ou PAS, suivant que l'on active le HPET dans le bios ou PAS, et.. IDEM sous Windows (qui ne l'est pas par défaut sous les OS avant Win 8.0 et Win10
Sur ce dernier OS il n'est QUE partiellement implémenté

Ce gain EST réel pour ceux qui font surtout de la MAO (Musique assistée par ordinateur), mais aussi du montage vidéo
Pour les joueurs c'est la roulette russe car dépendant du hardware CM+processeur, de la version de Windows, ....

Globalement cela stabilise le PC en jeu (et peut même éviter les problèmes de TDR comme vu par le passé), il n'y aura pas ou plus de drops de la carte graphique par ex qui jouaitau yoyo en jeux, idem pour le processeur, MAIS cela peut introduire de la latence (dont pour la souris) et une baisse relative des FPS (de 1 à 3 FPS)

Sur les hardware moderne, le HPET n'est plus désactivable dans le BIOS, et la fonction du reste n'apparait même plus
Par contre il est actif par défaut

Je fais un copier coller :

HPET n'a rien à voir avec le minuteur système.
C’est un compteur de haute précision que Windows peut utiliser dans l’implémentation de sa fonction QueryPerformanceCounter (). Il a été introduit pour éliminer le comportement problématique (sur les anciens systèmes multicœurs) de QueryPerformanceCounter implémenté sur TSC.
Dans les nouveaux processeurs, TSC est implémenté correctement et s'appelle Invariant TSC.



Et un tableau comparatif

HPET-activation.jpg

On voit souvent dans les forums, des gens qui ont des soucis de lecture video youtube, de décalage image son etc sous Win10
En fait c'est dépendant de leur hardware (CM+Processeur) et ils faut qu'ils testent AVEC et SANS HPET pour voir ou pas des améliorations


Dans Windows 10, la partie logicielle est appelée en Français et dans l'OS "Compteur d'évènement de haute précision" soit " High Precision Event Timer." en anglais, que l'on trouve dans "Gestion de l'ordinateur"----> "Gestionnaire de périphériques" sous la rubrique Périphériques système et cela peut être désactivé

On peut le faire via le gestionnaire de périphériques mais on a plus de maitrise car l'on voit ce que l'on fait en ouvrant une commande CMD en mode administrateur,

Si vous avez une erreur de type : ""Une erreur s'est produite lors de la tentative de suppression de l'élément de données spécifié. Élément introuvable"
c'est que la commande n'était pas en place et fonctionnelle


Rappel, pour afficher : bcdedit /enum
Ces commandes fonctionnent sous Windows 8.1 et Win10 (non testées sous Win11)

Pour DESACTIVER le HPET La dernière ligne est optionnelle car est dédiée surtout à certaines CM ASUS (Certaines ROG par ex) et .. au débogage)

Code : Tout sélectionner


bcdedit /deletevalue useplatformclock
bcdedit /set disabledynamictick yes

bcdedit /deletevalue tscsyncpolicy


ACTIVER (redémarrer le PC et de préférence pas en mode rapide) :

Code : Tout sélectionner

bcdedit /set useplatformclock true
bcdedit /set disabledynamictick no 

bcdedit /set tscsyncpolicy Enhanced


Sauf que ce n'est plus possible sur certaines cartes mères,(ASUS par ex) car le HPET en BIOS est défini comme actif, indispensable et prioritaire au lancement de l'ordi et ira rechercher une fonction dans Windows que l'on a .. désactivé
Cela va déstabiliser le processeur qui va tourner pendant X secondes à 100% au lancement du PC

Il faut donc avant d'éteindre le PC réactiver le HPET et au lancement le désactiver (se créer un .bat par ex)


Pour voir les timers il y a plusieurs possibilités mais le plus facile est avec CPU Z dans l'onglet "ABOUT" puis en bas à droite de cliquer sur "TIMERS"
Ce qu donne sans le HPET (sinon cela apparait)
Sans HPET.png

Il faut également savoir qu'il y a un lien avec les latences entre tout cela et (surtout pour la carte graphique) avec les IRQ en MSI viewtopic.php?t=62058


Pour les joueurs il n'y a AUCUN rapport avec la latence réseau et avec le "Ca ne touche pas" (comme dans Battelfield)
Votrre Hit-Reg dépend du ping, de votre distance (client) au serveur, du route, du nombre et des performances des commutateurs et des serveurs, de votre box/routeur, de la latence du système (qui inclut la souris, le moniteur et les composants de votre PC) du nombre de joueurs, du moteur de jeux etc.

Se méfier également des données de programmes comme LATENCYMON ou DPC LATENCY CHECKER
C'est utile pour la MAO, tout ce qui touche à la VIDEO et AUDIO mais pour les jeux c'est "presque secondaire

LatencyMon, par exemple, ne montre pas les latences des pilotes. Il affiche les temps d'exécution de la routine DPC dans l'onglet "Pilotes" (avec le nombre ISR et DPC). Et il affiche le temps d'exécution ISR le plus élevé (ainsi que le nom du pilote avec le temps d'exécution de routine ISR le plus élevé) dans l'onglet "Stats"


Perso j'ai cela avec toutes mes manips :
DPC laten cy Time au maxr.png

Mais si vous avez cela c'est presque secondaire
Ici la personne a installé l' iCUE 4 (CORSAIR Utility Engine) pour les claviers, souris, tapis de souris, casques audio, boîtiers, systèmes de surveillance, systèmes d'éclairage
On voit le bazar que cela génère
DPC avec ICUE4.png

Le seul gain (théorique) à espérer pour les joueurs, en désactivant le HPET, c'est un nombre de FPS légèrement plus élevé, et une latence souris moindre (visible en jeu du reste)


Juste un exemple spécifique (car là le gain en FPS est énorme) :







Néanmoins les résultats ne sont pas à l'identique pour tout le monde (soit c'est positif soit c'est négatif car c'est dépendant du hardware) il faut donc.. tester
Pour d'autres en activant tout, cela permet d'avoir un PC plus stable
Il n'y a donc pas de réponse unique

La seule certitude est pour la MAO et le montage video avec audio où le HPET activé fonctionne bien (du moins sur la majorité des CM+Processeurs et Windows 7, 8 et 10)

Le sujet a été évoqué (mais différemment) dans un tuto/présentation sur le site : https://www.malekal.com/resoudre-les-be ... tiver_HPET
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
- Only Amiga... was possible !
- Un problème sans solution est un problème mal posé. » (Albert Einstein)
- "Tous les patients mentent" (Docteur House)
- Dans le monde il y a deux sortes de gens : Ceux qui font des sauvegardes et .. Ceux qui vont faire des sauvegardes
Avatar de l’utilisateur
Parisien_entraide
Messages : 10576
Inscription : 02 juin 2012 20:48
Localisation : Je suis dans la matrice :-)

Re: Anti Stuttering : Intelligent standby list cleaner (ISLC)

par Parisien_entraide »

Edit du 11/02/2022 Mise à jour de la FAQ sur ISLC
- Only Amiga... was possible !
- Un problème sans solution est un problème mal posé. » (Albert Einstein)
- "Tous les patients mentent" (Docteur House)
- Dans le monde il y a deux sortes de gens : Ceux qui font des sauvegardes et .. Ceux qui vont faire des sauvegardes
  • Sujets similaires
    Réponses
    Vues
    Dernier message

Revenir à « Programmes utiles »