GNT sans publicité, site mobile, fonctionnalitées exclusives...

caches et dsques durs

Le
Gilles Berger Sabbatel
Les disques durs disposent de cache de tailles diverses, avec souvent la
possibilité pour une dizaine d'euros de plus, de passer d'un cache 2MO à
un cache 8MO. La question que je me pose est de savoir si cette dizaine
d'euros est bien employée, autrement dit, si ce cache peut apporter un
réel gain de performances sous Linux

Je comprend à peu près comment ces caches fonctionnennt et peuvent,
théoriquement apporter un gain de performances, mais ne font-ils pas
double emploi avec le cache du système (souvent bien plus gros), et
l'intelligence déjà incluse dans les systèmes de fichiers (lectures
anticipées, etc)? Qu'apporte-t-ils de plus, éventuellement?

Par ailleurs, qu'en est-il de la tolérance aux arrêts brutaux, en
particulier avec les systèmes de fichiers journalisés? L'ordre des
écritures sur le disque est-il préservé? Si oui, il me semble que le
cache n'introduit pas réellement de nouveau problème (il ne fait que
décaler les écritures dans le temps). Sinon, le risque d'incohérence
en cas d'arrêt brutal est sérieux.

Commentaires, explications, et retours d'expériences seraient les
bienvenus sur ces questions

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Lire les 14 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Erwann ABALEA
Le #7250421
Bonjour,

On Tue, 31 Jan 2005, Gilles Berger Sabbatel wrote:

Par ailleurs, qu'en est-il de la tolérance aux arrêts brutaux, en
particulier avec les systèmes de fichiers journalisés? L'ordre des
écritures sur le disque est-il préservé? Si oui, il me semble que le
cache n'introduit pas réellement de nouveau problème (il ne fait que
décaler les écritures dans le temps). Sinon, le risque d'incohérence
en cas d'arrêt brutal est sérieux.



Il me semble avoir lu (mais je ne sais plus où) qu'un disque IDE qui a
accepté un ordre d'écriture (au sens IDE/ATAPI du terme) garantit de la
réaliser, *quoi qu'il arrive* (c'est à dire y compris en cas de coupure de
courant). Ca peut être accompli de 2 façons différentes:
- on garde assez de courant dans un accumulateur pour continuer à écrire
(avec 8M de cache, je doute, mais sans cache c'est faisable)
- on garde ce courant pour conserver la mémoire, voire en s'aidant d'une
petite pile, et on réalise les écritures la prochaine fois qu'on sera
sous tension

--
Erwann ABALEA -----
Press Control-Alt-$ to appease spirits.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Basile Starynkevitch [news]
Le #7250431
On 2005-01-31, Gilles Berger Sabbatel
Les disques durs disposent de cache de tailles diverses, avec souvent la
possibilité pour une dizaine d'euros de plus, de passer d'un cache 2MO à
un cache 8MO. La question que je me pose est de savoir si cette dizaine
d'euros est bien employée, autrement dit, si ce cache peut apporter un
réel gain de performances sous Linux...



A mon avis, le seul moyen de savori est de mesurer effectivement deux
modèles les plus similaires possibles (et c'est difficile à savoir),
l'un avec un cache de 2Mo l'autre avec un cache de
8Mo. Personnellement, quand je changerais de disque, je pense que je
dépenserais 10 euros de plus pour un cache plus gros...


Je comprend à peu près comment ces caches fonctionnennt et peuvent,
théoriquement apporter un gain de performances, mais ne font-ils pas
double emploi avec le cache du système (souvent bien plus gros), et
l'intelligence déjà incluse dans les systèmes de fichiers (lectures
anticipées, etc...)? Qu'apporte-t-ils de plus, éventuellement?



Je n'y connais pas grand chose, mais j'imagine que le cache du disque
connait la géometrie physique réelle des secteurs du disque (de nos
jours les pistes physiques ont des capacités variant avec leur
rayon). J'imagine donc que le cache permet de mieux tenir compte de la
latence de rotation. Mais en réalité, je ne sais rien sur le
fonctionnement interne d'un disque récent.

Par ailleurs, qu'en est-il de la tolérance aux arrêts brutaux, en
particulier avec les systèmes de fichiers journalisés? L'ordre des
écritures sur le disque est-il préservé? Si oui, il me semble que le
cache n'introduit pas réellement de nouveau problème (il ne fait que
décaler les écritures dans le temps). Sinon, le risque d'incohérence
en cas d'arrêt brutal est sérieux.



En fait, la question est: est-ce que le disque "sait" que le courant
est coupé, et qu'il lui reste quelques millisecondes pour ....?


Commentaires, explications, et retours d'expériences seraient les
bienvenus sur ces questions...




Et j'imagine même que deux modèles de même référence commerciale
puissent avoir un firmware différent et se comporter différemment....

Cela étant dit, est-ce si important? Un disque va tomber un jour ou
l'autre en panne et il faut de toute façon sauvegarder ses données
importantes....

--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faïencerie, 92340 Bourg La Reine, France

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
JRD
Le #7250401
Bonjour,

Erwann ABALEA
Bonjour,
On Tue, 31 Jan 2005, Gilles Berger Sabbatel wrote:



Pour un usage personnel, je ne pense pas que le cache disque physique
change les performances "perceptibles" (entre 2Mo et 8Mo).

Pour un usage professionnel, en fonction de l'usage du serveur, il
peut être intéressant de faire un comparatif de performance (avec
l'aide d'un revendeur qui veut bien préter deux machines en sachant
qu'il va en vendre une!). Dans le cas de nombreuses écritures, la
différence est peut-être vraiment sensible.

Par ailleurs, qu'en est-il de la tolérance aux arrêts brutaux, en
particulier avec les systèmes de fichiers journalisés? L'ordre des
écritures sur le disque est-il préservé? Si oui, il me semble que le
cache n'introduit pas réellement de nouveau problème (il ne fait que
décaler les écritures dans le temps). Sinon, le risque d'incohérence
en cas d'arrêt brutal est sérieux.





Un système "journalisé" (par définition) sert à être sûr que les
écritures sur le disque sont cohérentes. Donc, une façon simpliste de
le faire est de procéder de cette façon :
1. écriture dans le journal de la mise à jour à effectuer (données +
emplacement)
2. écriture des données à l'emplacement prévu
3. comparaison des données entre le journal et l'emplacement
4. suppression du journal

Avec ce genre d'algo, le système est "journalisé" convenablement.

En cas de crash (arrêt brutal), il suffit de lire le journal.
- S'il est vide, tout est OK.
- S'il n'est pas vide :
alors vérification à partir du point 3. puis retour au point 2. si
nécessaire.

Si le plantage à eu lieu pendant le point 1., le système prévient
qu'une écriture est manquante mais ne peut pas la faire. Elle est
supprimée du journal par 4.

Il me semble avoir lu (mais je ne sais plus où) qu'un disque IDE qui a
accepté un ordre d'écriture (au sens IDE/ATAPI du terme) garantit de la
réaliser, *quoi qu'il arrive* (c'est à dire y compris en cas de coupure de
courant). Ca peut être accompli de 2 façons différentes:
- on garde assez de courant dans un accumulateur pour continuer à écrire
(avec 8M de cache, je doute, mais sans cache c'est faisable)
- on garde ce courant pour conserver la mémoire, voire en s'aidant d'une
petite pile, et on réalise les écritures la prochaine fois qu'on sera
sous tension



- l'acceptation de l'ordre d'écriture est envoyé après l'écriture.

JRD.
--
jerome (dot) drapeau <at> free (dot) fr
http://jerome.drapeau.free.fr
La critique est aisée, l'art est difficile.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
yves
Le #7250411
Gilles Berger Sabbatel a écrit :
Par ailleurs, qu'en est-il de la tolérance aux arrêts brutaux, en
particulier avec les systèmes de fichiers journalisés? L'ordre des
écritures sur le disque est-il préservé? Si oui, il me semble que le
cache n'introduit pas réellement de nouveau problème (il ne fait que
décaler les écritures dans le temps). Sinon, le risque d'incohérence
en cas d'arrêt brutal est sérieux.



Ca dépend si le cache est utilisé en lecture/écriture ou seulement en
lecture. Par définition, un cache à l'écriture est dangereux, et en
général on le désactive surtout avec des systèmes de fichiers
journalisés (je crois me souvenir dun problème fut une époque avec le
ext3 à cause des caches en écriture).

Maintenant, en lecture, c'est très utile. Je ne connais pas la gestion
exacte de ces caches, mais si on suppose qu'ils chargent l'intégralité
d'une piste (ou environ, mais de manière à ce que ça tienne dans les 8
ou 2Mo) chaque fois qu'on accède à une donnée, dès qu'une autre donnée
est demandée, elle sera renvoyée plus vite si elle est dans le cache.
C'est bien là tout l'intérêt de ces caches. En effet, sur les machines
"modernes" on tourne à environ 133Mo/s sur le bus ATA. Seulement un
disque ne peut pas envoyer des données à cette vitesse là, et le bus ATA
ne traitant qu'une seule information à la fois, un deuxième disque ne
peut pas en profiter pour lui aussi envoyer des informations au
contrôleur (gros défaut du ATA vis à vis du SCSI sur ce point). Si on
n'avait pas ces caches, on en serait quites à attendre que le disque
envoie ses informations à la vitesse d'un escargot par rapport à ce que
peut faire le bus. Tout l'intérêt est donc de s'arranger pour que le
cache contienne les données demandées (ou une partie), car là, la
mémoire cache est assez rapide pour utiliser toute la bande passante du
bus ATA. Et du coup, on a gagné du temps non seulement en entrées
sorties, mais également en temps de réaction du système...

Mes 2 cts d'€ ;). Bien entendu, tout celà ne reflète que ma
compréhension du tout, corrigez moi si je me trompe.


Yves

--
http://wiki.rougy.net -- Wiki Unix/Linux

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Michel Arboi
Le #7250391
On Tue Feb 01 2005 at 16:00, yves wrote:

Par définition, un cache à l'écriture est dangereux



C'est pourtant là où il est utile !
Les prédictions apocalyptiques de certains (comme Theo de Raadt) ne se
sont jamais réalisées chez moi.
J'imagine que ces caches sont bien conçus et conservent l'ordre
des opérations, ce qui garantit un fonctionnement correct avec les FS
journalisés.
Il parait qu'en cas de coupure de courant, le moteur se transforme en
générateur (grâce à l'inertie des plateaux) et alimente l'électronique
le temps de vider le cache.

général on le désactive



Ah non.

Maintenant, en lecture, c'est très utile.



J'en doute fort. Je ne vois pas comment il serait meilleur que le
buffer cache du système.

--
http://arboi.da.ru
NASL2 reference manual http://michel.arboi.free.fr/nasl2ref/

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Publicité
Suivre les réponses
Poster une réponse
Anonyme