glacote a écrit :
Je ne comprends pas du tout pourquoi. L'application graphique et le gestionnaire de swap vont transmettre des requêtes de façon totalement disparates, ça c'est sûr. En revanche, l'ordonnanceur (au niveau du pilote de disque dur) va, lui les transmettre de façon ordonnée au disque dur. En outre ces requêtes seront certainement contiguës (toute l'image finit par être traitée, soit un gros bloc contiguë de l'espace d'échange).
|
Lors d'un vidage de la mémoire, le noyau (gestionnaire mémoire) d'NT n'opère pas du tout de la même manière, il fait appelle à une autre INT que l'INT13 du bios CM ou SCSI/Carte additionnel
cette INT permet seulement de connaître le début de l'emplacement du fichier de swap
cette fonction est interne aux noyau et indépendante du reste du système pour pouvoir fonctionner en cas de crashe (fameux vidage de mémoire lors d'une page bleu)
d'ailleurs en cas de crashe et avec un swap inférieur à la taille de la mémoire (et certain réglage de la copie d'image complète de la ram) le disque continu d'écrire à la suite du fichier swap en écrasant les éventuelle données contenu
cet accès est directe et prioritaire, il ne passe pas par le cache mémoire (qui est contenu dans la ram ! donc peu lui même êtres vider).
le gestionnaire de mémoire ne videra pas toutes la mémoire, mais les partie les plus ancienne.
le disque devra donc inscrire un bloc mémoire ordonné en fonction des emplacement mémoire à vider et reprendre au dernier emplacement le prochain bloc mémoire swapé.
les requête prioritaire du swap peuvent se retrouver en liste de queue du disque, mais prioritaire. elle s'intercale passant outre lordonnance de la liste.
Tans que le fichier nest pas calculer en entier, le gestionnaire devras vider les parties du swap, voir en recharger en mémoire vive pour continuer le calcul
Le fonctionnement du gestionnaire de mémoire est décrit sur le site www.bellamyjc.net
Mais je sait pas ou il a placer cet article, je lavais lu ya déjà quelques années.
cela expliqué les probléme d'installation d'NT4 avec certain disque IDE pas compatible avec l'INT utilisé. (révolu depuis les années 1996/97)
glacote a écrit :
Oui mais l'OS n'envoit justement pas ses requêtes aussitôt qu'il les reçoit ! Il les groupe et les envoit par salves.
|
sans commentaire
glacote a écrit :
Merci pour ces précisions. Je suis totalement d'accord sur le principe selon lequel trier et regrouper les requêtes permet d'accroître énormément les performances.
|
certes le disque dur est le maillon le plus lent, toutes optimisation est bienvenue
glacote a écrit :
Je persiste néanmoins à dire que l'ordonnanceur (au niveau du pilote de disque) le fait déjà, depuis Unix et même SmartDrv.exe sous DOS 5.0 (1993): la meilleure preuve en est qu'il interceptait CTRL+ALT+DEL pour vider le cache en écriture avant de rebooter. Quoi que l'application ait voulu faire, de toute façon ses requêtes désordonnées étaient déjà interceptées par SmartDrive pour y être regroupées.
|
Non CTRL+ALT+DEL fait appel au gestionnaire de mémoire sous NT ===> le noyau système. l'accès de vidage de mémoire ne se fait pas par l'INT13 et ne passe pas par le cache disque de l'OS ou par SmartDrive (qui est en autre un cache tampon, comme les cache mémoire du disque en lecture et écriture)
glacote a écrit :
EDIT: exemple typique, ton application/le swap modifie dix fois successivement un morceau du même secteur sur disque; il ne sera bien-sûr écrit qu'une seule fois, à la fin, et non pas dix fois.
|
Non l'image du fichiers temporaire est constituer petit à petit au fur est à mesure des calculs opérés par le CPU
il seras écrit au coup par coup
entre deux le gestionnaire de mémoire devra libérer de la mémoire pour continue à exécuter les modifications de chaque pixel/ligne du fichier.
glacote a écrit :
Je fais en plus l'hypothèse (rectifiée suite à l'exemple de Westren Digital, merci) que la majorité des requêtes sont contiguës (ie > 10 secteurs consécutifs, soit 40ko) et donc qu'il n'y a pas d'odre plus efficace que l'ordre croissant.
|
Oui si cest contigu,
le paramètre « ContigFileAllocationSize « de la base de registre Windows oblige le disque décrire sur un secteur contigu libre dune certaine taille (512Ko par défaut). A 512 Ça limite la fragmentation et permet dinscrire un fichier de 512ko sur 1024 secteurs contigus
Cette optimisation est très intéressante pour la vidéo et le direct to disque. Bref les gros fichiers
glacote a écrit :
J'en déduis que l'ordonnanceur (du pilote de disque dur de l'OS) fait déjà dans la majorité des cas (contre-exmple: Western Digital ...) le travail censément accompli par le Taggeed/Native Command Queueing.
|
Pourquoi ? cest loin dêtre la majorité des cas ! la fragmentation des fichier dun disque dur le prouve bien !
Message édité par melba le 16-06-2004 à 23:38:38