pt
Moulé à la louche depuis 1999
Les trucs qui m'énervent... et je vais pas prendre de pincettes
Internet, informatique, logiciel libre, économie, politique, vie courante et tout le reste...

La réalité technique est contre-intuitive

Vendredi 18 septembre 2009

L'ordinateur est quelque chose de formidablement compliqué. Tout concourt à nous présenter une vue simplifié (parfois simpliste) de cette machinerie. C'est un bien, mais c'est aussi un mal car cela mène à beaucoup d'erreurs de jugement et de mauvaises interprétations. En fait, c'est même une source de mythes et légendes informatiques, et donc de problèmes pour l'utilisateur.

Exemple classique

Prenons un exemple classique: La (dé)fragmentation des fichiers.

Prenons un disque, avec les secteurs les uns à la suite des autres (représentés par une grille avec des cases de gauche à droite, puis de haut en bas). Il contient 3 fichiers qui sont fragmentés (répartis à différents endroits du disque). En principe, ce n'est pas optimal puisque cela oblige la tête du disque dur à se déplacer pour aller lire les différents bouts de fichiers, ce qui est long.


Maintenant nous allons "défragmenter" ces fichiers, mais avec 2 méthodes différentes:


Méthode A : On place tous les fichiers au début du disque.


Méthode B: On défragmente juste les fichiers.

A mon avis, vous pouvez faire un sondage: 90% des utilisateurs seront persuadés que la méthode A est meilleure. Logique, non ? Puisque tous les fichiers sont bien rangés au début du disque.

Maintenant, quand on a des fichiers, c'est souvent pour les modifier. Ajoutons donc des données au fichier vert, dans chacun des cas:


Méthode A: Le fichier vert est fragmenté.


Méthode B: Le fichier vert n'est pas fragmenté.


Si vous avez défragmenté avec la méthode A, le seul moyen d'ajouter des données au fichier vert est de le faire là où il y a de place, c'est à dire après le fichier bleu. Vos fichiers se retrouvent donc à nouveau fragmentés à la moindre écriture. Alors qu'avec la méthode B, aucun problème: Les fichiers ne se sont pas fragmentés.

Sans compter que si vous défragmentez toujours avec la méthode A, l'opération de défragmentation oblige à faire beaucoup de déplacements de fichiers (pour combler les vides): La défragmentation est donc toujours beaucoup plus longue qu'avec la méthode B, et elle use plus le disque dur.

La solution optimale n'est pas intuitive, et les utilisateurs auront fait le mauvais choix.

Autre exemple

Nous avons deux fichiers sur le disque. D'après vous, de quelle distance la tête de lecture du disque va-t-elle devoir se déplacer pour aller lire les deux fichiers ?



Réponse instinctive ? Elle va devoir parcourir environ la moitié du du disque, ce n'est donc pas optimale. Que feraient la plupart des utilisateurs ? Ils défragmenteraient leur disque avec la méthode A, pour tout mettre au début du disque.

Sauf que... votre disque n'est pas une simple suite de blocs. C'est un empilement de plateaux. Chaque plateau contient un ensemble de secteurs. Si ça se trouve, la tête de lecture n'aurait même pas besoin de bouger pour aller lire les deux fichiers !



Il est tout à fait possible que les fichiers rouges et bleus soient sur des secteurs identiques (ou proches) sur des plateaux différents. Et donc le déplacement de la tête de lecture est minimal.

Mais une fois de plus, ce n'est pas intuitif et les utilisateurs auront vite fait de faire le mauvais choix, et de tout mettre en début de disque (méthode A).

Il n'y a pas de réponse unique et toujours optimale

Rien que pour la (dé)fragmentation, il y a une myriades de paramètres de ce genre qui viennent rendre la réponse complexe (répartition de la taille des fichiers, activité du disque, taux lecture/écriture, taux de remplissage du disque, système de fichier utilisé, initiatives du système d'exploitation, relocation automatique des blocs par l'électronique du disque dur...). Il n'y a pas de réponse unique et toujours optimale.

En croyant faire des choix pointus (ce que proposent souvent les logiciels de défragmentation), on arrive vite à faire de mauvais choix, au mieux inutiles, au pire qui vont agraver la situation.

Dans ce cas, une solution: Rester simple. Faire une simple défragmentation des fichiers sera dans la majorité des cas le meilleur choix (méthode B). On peut faire cela avec le logiciel gratuit Defraggler.

Pourtant, on voit encore des tas d'utilisateurs dépenser une énergie folle à trifouiller les paramètres de logiciels comme OODefrag, alors que dans la pratique le gain apporté par ces logiciels est négligeable (Sauf cas particuliers, bien sûr, comme un serveur vidéo manipulant des fichiers de plusieurs giga-octets.)

Ailleurs

Ce genre de problématique se retrouve un peu partout, et le comportement apparent du système mène à de nombreuse mauvaises interprétations (comme cette légende du vidage du dossier préfecth pour accélérer Windows, ou encore le fait que Vista semble copier les fichiers moins vite que Windows XP). On retrouve également beaucoup le phénomène en cryptographie (d'où la difficulté d'expliquer pourquoi les algorithmes de chiffrement doivent être publiques et connus, comment et pourquoi le hashage cryptographique fonctionne, etc.)

J'ai cessé de gaspiller mon énergie à essayer convaincre les utilisateurs de leurs erreurs. Je donne les clés, les informations, à eux de les utiliser (ou non). Sinon je perdrais ma santé mentale (Il suffit de voir certains discussions sur Clubic).