Forum Linux.noyau BCache et Bypass Misses très élevé

Posté par  . Licence CC By‑SA.
Étiquettes :
3
6
avr.
2019

Bonjour

Suite à l'installation de Fedora, j'ai fait la découverte de bcache-status qui n'était pas fourni avec mes Ubuntu et Mint habituelles. En lançant la commande pour la première fois, j'ai obtenu le résultat suivant :

--- bcache ---
UUID 92e0ae26-2da8-4eb3-b6d3-63c921174c66
Block Size 512 B
Bucket Size 512.00 KiB
Congested? False
Read Congestion 2.0ms
Write Congestion 20.0ms
Total Cache Size 40 GiB
Total Cache Used 40 GiB (100%)
Total Cache Unused 0 B (0%)
Evictable Cache 40 GiB (100%)
Replacement Policy [lru] fifo random
Cache Mode writethrough writeback [writearound] none
Total Hits 56858 (96%)
Total Misses 2194
Total Bypass Hits 64210 (43%)
Total Bypass Misses 83387
Total Bypassed 3 GiB

Agréablement surpris des résultats de 'Total Hits' et 'Total Misses', j'ai été beaucoup plus intrigué par la partie 'Bypass'

Après plusieurs heures de recherches et de lecture sur internet, tout ce que j'ai cru comprendre de pertinent, c'est que le 'Bypass' est une méthode pour prévenir les cas où les écritures et les lectures sur un même fichier se font dans des zones mémoires différentes, invalidant de fait les éventuels effet bénéfiques d'un writeback du fait que la lecture ne se fera pas dans la même ligne de cache que l'écriture. J'ai peut-être mal compris, cela dit…

La raison de cette différence tient peut-être simplement au fait que je n'utilise pas de cache en écriture, mais alors justement, que peuvent bien signifier les "Bypass Hits" dans ce cas ? J'aurais aimé en savoir plus au cas où une petite optimisation serait possible…

Merci

  • # Par ordre de préférence: un max de "Total Hits", un min de "Total Misses", un max de "Bypass Hits"

    Posté par  . Évalué à 3.

    Bonjour,

    De ce que j'ai compris, l'idée principale de Bcache est qu'un SSD est meilleur qu'un HDD en lecture aléatoire. Comme le cache est plus petit que le disque, il doit faire des choix: ici, épargner du temps de trajet à la tête du HDD.

    Donc, lors de la lecture d'un gros fichier (vidéo par exemple), Bcache va chercher à fournir les premiers secteurs depuis le SSD; car ce dernier y accède le plus vite. Et ensuite, une fois que pendant ce temps la tête du disque dur sera positionnée au bon endroit, continuer avec les données du disque dur. Le fichier s'ouvre ainsi plus rapidement et est lu ensuite à son rythme, en évitant du cache qui n'aurait pas apporté grand chose. C'est ce mécanisme de détection des lectures séquentielles qui est appelé "Bypass". Si j'ai bien suivi, les "Bypass hits" sont dans blocs trouvés dans le SSD (donc légère amélioration), "Bypass misses" ne sont pas trouvés dans le SSD (pas très grave, le HDD est peut être au bon endroit).

    Le cache en écriture pourrait être utile si tu fais de très nombreuses écritures aléatoires mais l'inconvénient est que si tu as un problème avec le SSD, tu corrompt ton système de fichier (tu prendre le risque du SDD + du HDD, un peu comme du raid 0). L'optimisation et les paramètres du cache dépendent de ton utilisation, les valeurs par défaut sont "raisonnables" pour une utilisation dans la "moyenne", pour faire mieux, il faut faire des tests en essayant les différents paramètres.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.