{"id":993,"date":"2020-10-08T20:27:32","date_gmt":"2020-10-08T19:27:32","guid":{"rendered":"https:\/\/lapineige.fr\/wp\/?p=993"},"modified":"2022-07-18T09:14:58","modified_gmt":"2022-07-18T07:14:58","slug":"linux-systeme-de-fichier-btrfs-et-compression-performances-comparees-des-differentes-possibilites","status":"publish","type":"post","link":"https:\/\/lapineige.fr\/wp\/blog\/2020\/10\/linux-systeme-de-fichier-btrfs-et-compression-performances-comparees-des-differentes-possibilites\/","title":{"rendered":"[Linux] Syst\u00e8me de fichier Btrfs et compression : performances compar\u00e9es des diff\u00e9rentes possibilit\u00e9s"},"content":{"rendered":"<p>J&rsquo;ai d\u00e9couvert r\u00e9cemment le syst\u00e8me de fichier <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Btrfs\" class=\"ek-link\">Btrfs<\/a>, un syst\u00e8me de fichier bien plus avanc\u00e9 et int\u00e9ressant que le traditionnel Ext4 utilis\u00e9 par d\u00e9faut un peu partout c\u00f4t\u00e9 Linux. Gr\u00e2ce au fait qu&rsquo;il est maintenant int\u00e9gr\u00e9 (certes basiquement) aux installeurs graphiques, j&rsquo;ai pu m&rsquo;y essayer.<br>Il n&rsquo;en reste pas moins assez complexe a appr\u00e9hender, et \u00e0 param\u00e9trer (essentiellement en ligne de commande, vivement un utilitaire graphique !).<\/p>\n\n\n\n<p class=\"has-small-font-size\"><em>Je ne d\u00e9taillerai pas dans ce billet ce qu&rsquo;est Btrfs ni comment l&rsquo;utiliser, mais vous pouvez par exemple consulter <a href=\"https:\/\/sebsauvage.net\/wiki\/doku.php?id=btrfs\" class=\"ek-link\">ce billet de sebsauvage<\/a> (que je remercie chaleureusement au passage).<\/em><\/p>\n\n\n\n<p>En particulier, <strong>ce syst\u00e8me de fichier propose une compression \u00e0 la vol\u00e9e des fichiers<\/strong> &#8211; tr\u00e8s pratique pour gagner \u00ab\u00a0gratuitement\u00a0\u00bb beaucoup d&rsquo;espace de stockage !<br>Sauf qu&rsquo;on a le choix entre 3 algorithmes de compression, et plusieurs niveaux de compression pour certains d&rsquo;entre eux. Que choisir ? \ud83e\udd14<br>Il y a un cruel manque d&rsquo;explications accessibles et document\u00e9es sur la question.<\/p>\n\n\n\n<p>En cherchant sur le Web, pas moyen de trouver grand chose de complet et pertinent \u00e0 me mettre sous la dent\u2026 Il me faut signaler c<a href=\"https:\/\/www.reddit.com\/r\/linux\/comments\/bppk9g\/my_benchmarks_of_btrfs_new_zstd_levels_in_linux_51\/\" class=\"ek-link\">e benchmark de compression<\/a> et <a href=\"https:\/\/www.reddit.com\/r\/btrfs\/comments\/hyra46\/benchmark_of_btrfs_decompression\/\" class=\"ek-link\">celui de d\u00e9compression<\/a>, mais c&rsquo;est \u00e0 peu pr\u00e8s tout, et dans une configuration sp\u00e9cifique et assez diff\u00e9rente de la mienne. Je restais sur ma faim\u2026<\/p>\n\n\n\n<p><strong>J&rsquo;ai donc cherch\u00e9 \u00e0 comparer les diff\u00e9rents algorithmes de compression en cherchant \u00e0 d\u00e9terminer quelle \u00e9tait la ou les options optimales<\/strong>, selon les cas d&rsquo;usages.<br>On y va ? \ud83d\ude03<\/p>\n\n\n\n<div style=\"color:#32373c;background-color:#ee820d\" class=\"wp-block-genesis-blocks-gb-notice gb-font-size-15 gb-block-notice\" data-id=\"b1ddfc\"><div class=\"gb-notice-title\" style=\"color:#fff\"><p>Avertissement<\/p><\/div><div class=\"gb-notice-text\" style=\"border-color:#ee820d\"><p>Ce test n&rsquo;a pas la pr\u00e9tention d&rsquo;\u00eatre exhaustif, de couvrir tous les cas d&rsquo;usage, ni de fournir des mesures tr\u00e8s pr\u00e9cises des performances ou une conclusion d\u00e9finitive sur le choix de \u00ab\u00a0la meilleure option\u00a0\u00bb (si tant est quelle existe&#8230;).<br\/>Faute de trouver les ressources suffisantes en ligne, j&rsquo;ai voulu mesurer quelle option \u00e9tait la plus optimale dans <em>mon cas particulier<\/em>. Et je vous partage mes r\u00e9sultats car je trouve que c&rsquo;est trop peu document\u00e9 en ligne.<br\/>Libre \u00e0 vous de reproduire le m\u00eame test dans <em>vos <\/em>conditions r\u00e9elles, rien ne sera plus adapt\u00e9 \u00e0 votre situation \ud83d\ude09<\/p><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9thodologie<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Mat\u00e9riel utilis\u00e9<\/h3>\n\n\n\n<p>C\u00f4t\u00e9 processeur : un Ryzen 5 3600 (6 c\u0153urs\/12threads, autour de 4,1Ghz au maximum de ses performances d&rsquo;usine).<em><br>Ce processeur est int\u00e9ressant comme \u00e9l\u00e9ment de comparaison, en effet il repr\u00e9sente le milieu de gamme actuel d&rsquo;AMD, et plut\u00f4t la tranche du haut de gamme du march\u00e9 grand public, d&rsquo;autant plus que c&rsquo;est un processeur r\u00e9cent.<br>Dans le test cit\u00e9 plus haut, vous avez une id\u00e9e des performances pour un vieux processeur haut de gamme d&rsquo;AMD, qui correspond plus \u00e0 l&rsquo;entr\u00e9e de gamme actuelle. Je note d&rsquo;ailleurs que l&rsquo;\u00e9cart de performances est assez faible.<\/em><\/p>\n\n\n\n<p>C\u00f4t\u00e9 stockage :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Un disque dur Seagate Barracuda 2To, 7200 tours\/min.<\/li><li>Un SSD Intel 660p 512Go, de type NVMe c&rsquo;est-\u00e0-dire un SSD branch\u00e9 sur un port PCI-E (3.0), qui permet des d\u00e9bits bien sup\u00e9rieurs au SATA 3.<\/li><\/ul>\n\n\n\n<div style=\"color:#32373c;background-color:#3373dc\" class=\"wp-block-genesis-blocks-gb-notice Always Show gb-font-size-14 gb-block-notice\" data-id=\"61f53f\"><div class=\"gb-notice-title\" style=\"color:#fff\"><p>Apart\u00e9<\/p><\/div><div class=\"gb-notice-text\" style=\"border-color:#3373dc\"><p>J&rsquo;ai \u00e9galement un SSD branch\u00e9 en SATA\u00a03 (donc limit\u00e9 \u00e0 550Mo\/s par la connectique), que je n&rsquo;ai pas test\u00e9 (parce qu&rsquo;il faudrait que j&rsquo;y cr\u00e9\u00e9 une partition d\u00e9di\u00e9e).<br\/>Il serait int\u00e9ressant d&rsquo;observer quel gain la compression peut apporter : si l&rsquo;on peut compresser les donn\u00e9es assez vite, les 550Mo\/s de donn\u00e9es compress\u00e9es donneront une vitesse \u00ab\u00a0r\u00e9elle\u00a0\u00bb sup\u00e9rieure.<br\/>Je suis preneur de retour l\u00e0-dessus \ud83d\ude42<\/p><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Conditions du test<\/h3>\n\n\n\n<p>Le test a \u00e9t\u00e9 r\u00e9alis\u00e9 sur une distribution Linux (Kubuntu 20.10) avec un noyau en version 5.8 (ce qui semble compter vu les am\u00e9liorations du support de Btrfs introduites par cette version).<br>C&rsquo;est ma machine principale et non un serveur ou autre, elle \u00e9tait donc utilis\u00e9e en parall\u00e8le (ex: Firefox \u00e9tait actif) ce qui introduit un peu de variabilit\u00e9 dans les r\u00e9sultats, mais est aussi plus fid\u00e8les aux conditions r\u00e9elles d&rsquo;utilisation (en multi-t\u00e2che sur un ordinateur grand public).<\/p>\n\n\n\n<p>J&rsquo;ai test\u00e9 les compressions suivantes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>lzo : a priori le plus rapide, et le moins efficace c\u00f4t\u00e9 compression.<\/li><li>Zstandard, abr\u00e9g\u00e9 zstd dans la suite de ce billet, du niveau de compression 1 \u00e0 15 (le niveau maximum g\u00e9r\u00e9 par Btrfs). Et sans forc\u00e9ment tester tous les interm\u00e9diaires, vous verrez pourquoi ensuite.<\/li><li>zlib : aux niveaux de compression 1 (le minimum), 3 et 9 (le maximum).<\/li><\/ul>\n\n\n\n<p>J&rsquo;ai utilis\u00e9 l&rsquo;option de montage <em>compress-force<\/em> car c&rsquo;est la plus performante et celle que j&rsquo;utilise au quotidien.<\/p>\n\n\n\n<p>La plupart des tests on \u00e9t\u00e9 reproduits plusieurs fois, g\u00e9n\u00e9ralement \u00e0 la suite. J&rsquo;ai pris la moyenne des valeurs (qui ne varient pas tant que \u00e7a, sauf utilisation du disque pour autre chose en m\u00eame temps) en \u00e9liminant les \u00e9ventuelles valeurs incoh\u00e9rentes.<\/p>\n\n\n\n<p>\u00c0 noter que j&rsquo;ai utilis\u00e9 le \u00ab\u00a0gouverneur\u00a0\u00bb <em>performance<\/em> (et non celui <em>ondemand<\/em> par d\u00e9faut) qui grosso modo s&rsquo;assure que le processeur tourne toujours au maximum de ses performances (et de sa consommation\u2026) sans baisser en fr\u00e9quence pour \u00e9conomiser de l&rsquo;\u00e9nergie et de la dissipation de chaleur. La diff\u00e9rence est faible avec les conditions r\u00e9elles d&rsquo;usages, et le but est d&rsquo;\u00e9viter les biais de mesure.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le test en lui-m\u00eame<\/h3>\n\n\n\n<p>Le fichier utilis\u00e9: un profil Firefox, regroup\u00e9 dans un archive format <em>.tar<\/em> de 5,1Go. Il a l&rsquo;avantage de m\u00e9langer des fichiers bien compressibles (texte, base de donn\u00e9es&#8230;) et d&rsquo;autres moins (images) et de repr\u00e9senter <em>\u00e0 peu pr\u00e8s<\/em> des fichiers courants sur un ordinateur.<\/p>\n\n\n\n<p>\u2192 Pour le test de d\u00e9compression: j&rsquo;ai r\u00e9adapt\u00e9 le script du <a aria-label=\"benchmark cit\u00e9 plus (opens in a new tab)\" href=\"https:\/\/www.reddit.com\/r\/btrfs\/comments\/hyra46\/benchmark_of_btrfs_decompression\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">benchmark cit\u00e9 plus haut<\/a> en utilisant mon propre fichier de test. Il semble pertinent (m\u00eame si je ne comprends pas tout bien \ud83d\ude05) pour \u00e9viter les effets de cache et autres qui fausseraient les r\u00e9sultats.<\/p>\n\n\n\n<p>\u2192 Pour le test de compression: j&rsquo;ai adapt\u00e9 le m\u00eame script, en y pla\u00e7ant une copie (toujours via <em>pv<\/em>) vers une zone du disque au lieu de <em>\/dev\/null<\/em>. Faute d&rsquo;y arriver pour le cas du disque dur, j&rsquo;ai finalement r\u00e9duit \u00e7a \u00e0 une simple copie a la mano (les r\u00e9sultats sont similaires).<\/p>\n\n\n\n<p>Limites de ma m\u00e9thodologie:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Je ne sais pas trop si des param\u00e9trages de cache, d\u00e9duplication ou autre pourraient influer sur les r\u00e9sultats\u2026 J&rsquo;ai tout de m\u00eame \u00e9cart\u00e9 les r\u00e9sultats aberrants ou tr\u00e8s loin des performances th\u00e9oriques de mes disques (7Go\/s sur le SSD \u00e0 un moment, plus rapide que la RAM, j&rsquo;ai des doutes :p )<\/li><li>Pour les tests d&rsquo;\u00e9criture sur le SSD, je copiais un fichier du SSD vers lui-m\u00eame. \u00c7a a forc\u00e9ment ralenti l&rsquo;op\u00e9ration, par contre \u00e7a ne fausse pas les ordres de grandeurs (c&rsquo;est le principal).<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9sultats<\/h2>\n\n\n\n<p>Une pr\u00e9cision avant de d\u00e9tailler les r\u00e9sultats et de vous montrer les graphiques: ces graphiques montrent la vitesse r\u00e9elle d&rsquo;\u00e9criture (ou de lecture) sur le disque. C&rsquo;est-\u00e0-dire: la vitesse \u00e0 laquelle mon ordinateur (d\u00e9)compresse des donn\u00e9es et les \u00e9crit (lit) sur le support de stockage. Ce n&rsquo;est pas juste la vitesse de (d\u00e9)compression, ni celle d&rsquo;\u00e9criture (lecture) seule, mais c&rsquo;est ce que sont capables de faire le couple processeur+stockage &#8211; et c&rsquo;est ce qui nous int\u00e9resse en pratique.<\/p>\n\n\n\n<p>Aussi: certaines courbes comportent des barres d&rsquo;erreurs, qui indiquent la variabilit\u00e9 entre les mesures (la taille des barres est d&rsquo;un \u00e9cart-type) quand il y en a plusieurs. De mani\u00e8re g\u00e9n\u00e9rale, je consid\u00e8re qu&rsquo;une variation de &lt;5% (50Mo\/1Go par exemple) est n\u00e9gligeable et peut-\u00eatre due aux conditions de test.<\/p>\n\n\n\n<p class=\"has-small-font-size\"><em>Ah et, pour les maniaques: oui, je sais que tracer des lignes sur des donn\u00e9es discr\u00e8tes n&rsquo;a pas de sens, et qu&rsquo;il faudra un diagramme en barre. Mais: 1) je n&rsquo;ai pas mesur\u00e9 chaque niveau de compression, \u00e7a me permet de mieux voir la tendance 2) c&rsquo;est finalement plus lisible. Je vous rassure, vous vous en remettrez \ud83d\ude09<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le disque dur<\/h3>\n\n\n\n<p>Premi\u00e8rement, les performances d&rsquo;\u00e9criture sans compression du disque dur sont impressionnantes -pour un disque dur- avec 300Mo\/s (pas si loin d&rsquo;un SSD SATA, notamment bas de gamme). Apr\u00e8s <a href=\"https:\/\/hdd.userbenchmark.com\/SpeedTest\/466743\/ST2000DM008-2FR102\" class=\"ek-link\">recherche sur le net<\/a>, il est plut\u00f4t donn\u00e9 \u00e0 180Mo\/s, ce qui me fait \u00e9mettre un doute sur la fiabilit\u00e9 de mon r\u00e9sultat\u2026<br>En lecture et sans compression, il monte \u00e0 180Mo\/s, ce qui est conforme aux r\u00e9sultats des <em>benchmarks<\/em>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Performances en lecture \ud83d\udcd6 <\/h4>\n\n\n\n<p>On note une <strong>augmentation des performances en lecture de 66% gr\u00e2ce \u00e0 la compression !<\/strong> L&rsquo;\u00e9cart est d&rsquo;autant plus gigantesque sur un support de stockage \u00ab\u00a0lent\u00a0\u00bb ! 300Mo\/s sur un disque dur, c&rsquo;est excellent.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"996\" height=\"560\" src=\"https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_lecture.png\" alt=\"\" class=\"wp-image-1046\" srcset=\"https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_lecture.png 996w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_lecture-512x288.png 512w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_lecture-768x432.png 768w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_lecture-780x439.png 780w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_lecture-800x450.png 800w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_lecture-400x225.png 400w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/figure>\n\n\n\n<p>Comme vous pouvez le voir,<strong> la vitesse de d\u00e9compression est tr\u00e8s similaire quelque soit le niveau de compression<\/strong> (ce qui est une bonne nouvelle :). Je ne le savais pas avant de tester, mais en fait <a href=\"https:\/\/indico.cern.ch\/event\/695984\/contributions\/2872933\/attachments\/1590457\/2516802\/ZSTD_and_ZLIB_Updates_-_January_20186.pdf\" class=\"ek-link\">c&rsquo;est un attendu pour cet algorithme<\/a>.<br>Par contre, on pourrait s&rsquo;attendre \u00e0 une augmentation de la vitesse de lecture due au fait qu&rsquo;une plus forte compression permet d&rsquo;extraire plus de donn\u00e9es de disque, pour un m\u00eame volume lu. Or vous verrez plus loin que la compression ne varie quasiment pas pour zstd. Cependant ceci est valable pour lzo, qui \u00e9crit un fichier nettement plus gros.<br><em>NB: Le gain de performances, ici d&rsquo;environ 30%, est li\u00e9 \u00e0 la compression : plus les donn\u00e9es sont compress\u00e9es, plus on transf\u00e8re de donn\u00e9es (en \u00e9quivalent non compress\u00e9) avec une m\u00eame vitesse. Ainsi ici les donn\u00e9es sont r\u00e9duites d&rsquo;1\/3 de leur taille (cf. paragraphe d\u00e9di\u00e9) ce qui explique qu&rsquo;on gagne\u2026 1\/3 en vitesse (\u00e9quivalent non compress\u00e9)<\/em>. Cette remarque vaut pour les prochains paragraphes \ud83d\ude09<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Performances en \u00e9criture \ud83d\udcbe<\/h4>\n\n\n\n<p>On voit ici que <strong>la compression permet au disque dur d&rsquo;\u00e9crire 30% plus vite<\/strong>. Idem que pour la lecture, l&rsquo;\u00e9cart est d&rsquo;autant plus consid\u00e9rable que ce support est \u00ab\u00a0lent\u00a0\u00bb.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"996\" height=\"560\" src=\"https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_\u00e9criture.png\" alt=\"\" class=\"wp-image-1045\" srcset=\"https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_\u00e9criture.png 996w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_\u00e9criture-512x288.png 512w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_\u00e9criture-768x432.png 768w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_\u00e9criture-780x439.png 780w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_\u00e9criture-800x450.png 800w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_hhd_\u00e9criture-400x225.png 400w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/figure>\n\n\n\n<p>Lzo ne fait m\u00eame pas mieux que la vitesse d&rsquo;\u00e9criture sans compression, et zlib est loin derri\u00e8re zstd, et m\u00eame que la vitesse sans compression pour zlib-9.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le SSD<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Performances en \u00e9criture \ud83d\udcd6<\/h4>\n\n\n\n<p>On voit ici que <strong>la compression permet au SSD d&rsquo;\u00e9crire au mieux 40% plus vite.<\/strong><br>L&rsquo;\u00e9cart est tr\u00e8s important, mais \u00e0 relativiser, un SSD NVMe est un stockage tr\u00e8s rapide, tr\u00e8s peu de cas d&rsquo;usage b\u00e9n\u00e9ficieront d&rsquo;un SSD 3 fois plus rapide (1,7Go\/s) qu&rsquo;un SSD SATA (d\u00e9j\u00e0 tr\u00e8s rapide, 0,55Go\/s) au lieu de 2,3 fois (1,26Go\/s).<\/p>\n\n\n\n<p class=\"has-small-font-size\"><a href=\"https:\/\/lapineige.fr\/wp\/blog\/2020\/10\/ssd-ultra-rapides-en-pcie-compares-au-sata-un-vrai-gain-en-temps-de-chargement-des-jeux\/\" class=\"ek-link\">La preuve ?<\/a> \ud83d\ude09<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"996\" height=\"560\" src=\"https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_ssd_\u00e9criture.png\" alt=\"\" class=\"wp-image-1044\" srcset=\"https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_ssd_\u00e9criture.png 996w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_ssd_\u00e9criture-512x288.png 512w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_ssd_\u00e9criture-768x432.png 768w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_ssd_\u00e9criture-780x439.png 780w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_ssd_\u00e9criture-800x450.png 800w, https:\/\/lapineige.fr\/wp\/wp-content\/uploads\/2020\/10\/Btrfs_ssd_\u00e9criture-400x225.png 400w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/figure>\n\n\n\n<p>Lzo fait aussi bien que les plus faibles niveaux de compression zstd . Zlib est compl\u00e8tement \u00e0 la ramasse, on repasse sur les performances d&rsquo;un SSD SATA\u2026<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Performances en lecture \ud83d\udcd6 <\/h4>\n\n\n\n<p>Je ne pr\u00e9sente pas de graphique pour les r\u00e9sultats en lecture&nbsp;: comme pour le disque dur, la courbe est quasiment plate, les variations sont n\u00e9gligeables autour de 2Go\/s\u2026 Et 1,4Go\/s sans compression.<br><em>NB: Une valeur surprenante pour un SSD donn\u00e9 \u00e0 1Go\/s, m\u00eame si d&rsquo;apr\u00e8s de nombreux benchmark (<a href=\"https:\/\/www.tomshardware.fr\/test-ssd-1to-intel-660p-crucial-p1-pny-cs3030-comparatif\/2\" class=\"ek-link\">ici 1,4Go\/s<\/a>) il est fr\u00e9quent qu&rsquo;il fasse mieux que la valeur annonc\u00e9e par le constructeur (en fonction des conditions de test<\/em>).<br><em>Le cache (fait de m\u00e9moire plus rapide, mais limit\u00e9 \u00e0 quelques Go) doit aussi jouer. Ainsi un fichier plus petit (1,1Go) est transf\u00e9r\u00e9 \u00e0 2,34Go\/s.<\/em><\/p>\n\n\n\n<p>Je note toutefois une l\u00e9g\u00e8re augmentation des performances (+6%) au niveau de compression 15, qui est peut-\u00eatre due \u00e0 la compression tr\u00e8s l\u00e9g\u00e8rement sup\u00e9rieure (~1% de 5Go, soit 50Mo\u2026 question d&rsquo;arrondi ?).<\/p>\n\n\n\n<p>Au vu des r\u00e9sultats en \u00e9criture, je n&rsquo;ai pas pris le temps de tester les compression lzo et zlib. Elles ne me semblent rien apporter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le taux de compression<\/h3>\n\n\n\n<p>De fa\u00e7on surprenante, <strong>le taux de compression est tr\u00e8s stable entre les diff\u00e9rents niveaux de compression zstd<\/strong> (2% entre 1 et 15&#8230;). Dans mon cas, autour de 66-67%. J&rsquo;ai essay\u00e9 avec d&rsquo;autres fichiers, \u00e7a ne semble pas li\u00e9 \u00e0 mon fichier de test (<a href=\"https:\/\/www.reddit.com\/r\/linux\/comments\/bppk9g\/my_benchmarks_of_btrfs_new_zstd_levels_in_linux_51\/\" class=\"ek-link\">et d&rsquo;autres ont fait la m\u00eame observation<\/a>). Je n&rsquo;ai pas d&rsquo;explication \u00e0 ce ph\u00e9nom\u00e8ne.<\/p>\n\n\n\n<p>Zlib n&rsquo;est pas int\u00e9ressant, le niveau minimum de compression est moins bon que zstd (68%) et le meilleur \u00e0 peine \u00e9quivalent \u00e0 la pire valeur (67%).<br>Lzo est hors-jeu avec 82%, c&rsquo;\u00e9tait attendu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comparaison SSD \/&nbsp;HDD<\/h3>\n\n\n\n<p>On pourrait s&rsquo;attendre \u00e0 ce que les performances de compression limitent plus le SSD que le disque dur, c&rsquo;est-\u00e0-dire que la vitesse de compression soit plus souvent sup\u00e9rieure \u00e0 la vitesse d&rsquo;\u00e9criture du disque qu&rsquo;\u00e0 celle du SSD.<br>Dans ce cas, on devrait voir la courbe de l&rsquo;\u00e9criture c\u00f4t\u00e9 disque dur s&rsquo;\u00e9crouler au niveau de compression o\u00f9 les performances d&rsquo;\u00e9critures sont identiques sur le SSD (par rapport \u00e0 une copie brute sur le disque dur)&nbsp;: la compression n&rsquo;arrivant pas \u00e0 d\u00e9biter autant que ce que le disque peut \u00e9crire, le disque dur devrait \u00e9crire moins vite.<br>Chose \u00e9tonnante, ce n&rsquo;est pas le cas. Les perfs du disque s&rsquo;\u00e9croulent au niveau 11, alors que c\u00f4t\u00e9 SSD il faut attendre le niveau 13 pour descendre sous les performances maximales du disque dur (400Mo compress\u00e9s\/s).<\/p>\n\n\n\n<p>Pourquoi ? \ud83e\udd14<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Donn\u00e9es non mesur\u00e9es<\/h3>\n\n\n\n<p>Je n&rsquo;ai pas mesur\u00e9 pr\u00e9cis\u00e9ment la <strong>charge du processeur<\/strong>, pour voir quelle compression est plus co\u00fbteuse et potentiellement g\u00eanante (un gain de performances en lecture\/\u00e9criture contre une perte en vitesse de calcul n&rsquo;est pas forc\u00e9ment int\u00e9ressant selon ce qui est le plus limitant dans votre cas).<br>Je n&rsquo;ai fait que garder sous l&rsquo;\u0153il le pourcentage de charge du processeur pendant mes tests. J&rsquo;observe 3 \u00e9l\u00e9ments:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Une simple copie sur le SSD (le plus rapide, donc le plus demandeur en calcul du processeur) de ces 5Go consomme environ 5% de la puissance disponible. On peut grosso modo soustraire cette valeur \u00ab\u00a0de base\u00a0\u00bb li\u00e9e \u00e0 la copie aux donn\u00e9es ci-dessous.<\/li><li>Les compressions les plus l\u00e9g\u00e8res consomment 10-20%.<\/li><li>Les compressions Zlib (sauf peut-\u00eatre zlib1 ?) et les compressions zstd les plus \u00e9lev\u00e9es (niveaux 13~15) consomment jusqu&rsquo;\u00e0 80% de la puissance du processeur &#8211; ce qui est quand m\u00eame tr\u00e8s limite sur un mod\u00e8le plut\u00f4t puissant.<\/li><\/ul>\n\n\n\n<p>On peut voir qu&rsquo;il y a une forte variation de la charge selon le niveau de compression&#8230; Et que les valeurs les plus \u00e9lev\u00e9es sont tr\u00e8s co\u00fbteuses. Pour moi c&rsquo;est assez prohibitif, car cela concurrencera certaines t\u00e2ches lourdes (encodage vid\u00e9o, rendu 3D&#8230;) en cas d&rsquo;\u00e9criture prolong\u00e9e. La surconsommation d&rsquo;\u00e9nergie sera probl\u00e9matique sur un portable.<br>J&rsquo;en tire une conclusion par rapport aux performances : la charge c\u00f4t\u00e9 processeur est peu limitante pour zstd, tant qu&rsquo;on reste dans des niveaux faibles (et pas du tout limitante sur disque dur avant des niveaux \u00e9lev\u00e9s). En effet si la compression ne prend qu&rsquo;une (faible) partie du temps de calcul disponible, c&rsquo;est que le support de stockage est satur\u00e9 avant &#8211; sachant que le taux de compression ne varie (presque) pas &#8211; donc le processeur se tourne les pouces. C&rsquo;est coh\u00e9rent avec les valeurs de vitesse qui s&rsquo;effondrent quand la charge processeur augmente (niveau de compression plus important).<\/p>\n\n\n\n<p><em>NB: \u00c0 noter qu&rsquo;on parle l\u00e0 d&rsquo;un fichier relativement gros, 5Go, et que pour des \u00e9critures plus classiques l&rsquo;impact doit-\u00eatre quasi-invisible tellement il est bref. Et que de toute fa\u00e7on la copie sur SSD de ce fichier est tr\u00e8s courte (quelques secondes), et assez courte sur un disque dur (10-20s).<\/em><\/p>\n\n\n\n<p>Je n&rsquo;ai pas mesur\u00e9 la <strong>consommation en m\u00e9moire<\/strong>, donn\u00e9e comme sup\u00e9rieure en zstd qu&rsquo;en lzo (et probablement encore sup\u00e9rieure en zlib). La diff\u00e9rence semble assez faible, et m&rsquo;importe assez peu dans mon usage courant (j&rsquo;ai 16Go de RAM, rarement satur\u00e9s ou alors par plusieurs Go). Ma RAM est aussi en compress\u00e9e via <a href=\"https:\/\/doc.ubuntu-fr.org\/zram\" class=\"ek-link\">zram<\/a>, ce qui r\u00e9duit d&rsquo;autant plus l&rsquo;importance de ces diff\u00e9rences.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Pour un SSD comme pour un HDD, l<strong>a compression zstd est toujours b\u00e9n\u00e9fique pour les vitesses de lecture et d&rsquo;\u00e9criture<\/strong>, sachant que le processeur n&rsquo;est pas un facteur limitant dans ce cas &#8211; s&rsquo;il l&rsquo;avait \u00e9t\u00e9 la compression pourrait \u00eatre probl\u00e9matique. <strong>On lit et \u00e9crit plus rapidement et on gagne de l&rsquo;espace de stockage !<\/strong><\/p>\n\n\n\n<p>Comme on pouvait <a href=\"https:\/\/blog.seboss666.info\/2020\/03\/zstd-cest-quoi-ce-format-de-compression\/\" class=\"ek-link\">s&rsquo;y attendre<\/a>, <strong>Zstandard est le format de compression le plus int\u00e9ressant, \u00e0 tel point qu&rsquo;il ne me semble m\u00eame pas int\u00e9ressant d&rsquo;envisager les autres<\/strong>: lzo compresse peu et le suppl\u00e9ment de donn\u00e9es \u00e0 lire\/\u00e9crire fait perdre plus de temps, il n&rsquo;a d&rsquo;int\u00e9r\u00eat que si le processeur est vraiment tr\u00e8s limitant ; et <a href=\"https:\/\/indico.cern.ch\/event\/695984\/contributions\/2872933\/attachments\/1590457\/2516802\/ZSTD_and_ZLIB_Updates_-_January_20186.pdf\" class=\"ek-link\">zlib est trop lent et ne compresse pas mieux<\/a>, <a href=\"https:\/\/www.cnx-software.com\/2016\/12\/19\/facebook-zstandard-zstd-pzstd-data-compression-tools-deliver-high-performance-efficiency\/\" class=\"ek-link\">voir moins bien<\/a>.<\/p>\n\n\n\n<p><strong>Le taux de compression est tr\u00e8s similaire entre les diff\u00e9rentes compressions zstd<\/strong>, \u00e0 tel point que la diff\u00e9rence est n\u00e9gligeable sauf pour de tr\u00e8s gros volumes de donn\u00e9es (quelques Go tous les 100Go). <strong>La vitesse de lecture est similaire pour tous les niveaux de compression.<\/strong><br>\u00c9tant donn\u00e9 l&rsquo;impact sur les performances des niveaux de compression les plus \u00e9lev\u00e9s, <strong>je recommande fortement de rester entre zstd 1 et 2<\/strong>, ou zstd 3-5 (\u00e0 tester&#8230;) pour un gain l\u00e9ger en compression avec une faible perte en vitesse d&rsquo;\u00e9criture. Pour compresser un maximum (pour de l&rsquo;archivage par exemple), on passera en zstd 15, au prix d&rsquo;une perte massive de performances en \u00e9criture et d&rsquo;un fort surco\u00fbt en calcul.<\/p>\n\n\n\n<p>Personnellement j&rsquo;ai mis mes archives en ztsd 4, mes dossiers courants en zstd 2. Mes sauvegardes sur d&rsquo;autres supports sont plus compress\u00e9es.<\/p>","protected":false},"excerpt":{"rendered":"<p>J&rsquo;ai d\u00e9couvert r\u00e9cemment le syst\u00e8me de fichier Btrfs, un syst\u00e8me de fichier bien plus avanc\u00e9 et int\u00e9ressant que le traditionnel Ext4 utilis\u00e9 par d\u00e9faut un peu partout c\u00f4t\u00e9 Linux. Gr\u00e2ce au fait qu&rsquo;il est maintenant int\u00e9gr\u00e9 (certes basiquement) aux installeurs <a class=\"more-link\" href=\"https:\/\/lapineige.fr\/wp\/blog\/2020\/10\/linux-systeme-de-fichier-btrfs-et-compression-performances-comparees-des-differentes-possibilites\/\">Lire la suite&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":10,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","fifu_image_url":"","fifu_image_alt":"","activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[9,7,13],"tags":[],"class_list":["post-993","post","type-post","status-publish","format-standard","hentry","category-informatique","category-linux","category-logiciels"],"featured_image_urls_v2":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":"","gb-block-post-grid-landscape":"","gb-block-post-grid-square":"","gridalicious-featured":"","gridalicious-featured-grid":"","gridalicious-featured-content":"","gridalicious-featured-header":"","ab-block-post-grid-landscape":"","ab-block-post-grid-square":""},"post_excerpt_stackable_v2":"<p>J&rsquo;ai d\u00e9couvert r\u00e9cemment le syst\u00e8me de fichier Btrfs, un syst\u00e8me de fichier bien plus avanc\u00e9 et int\u00e9ressant que le traditionnel Ext4 utilis\u00e9 par d\u00e9faut un peu partout c\u00f4t\u00e9 Linux. Gr\u00e2ce au fait qu&rsquo;il est maintenant int\u00e9gr\u00e9 (certes basiquement) aux installeurs graphiques, j&rsquo;ai pu m&rsquo;y essayer.Il n&rsquo;en reste pas moins assez complexe a appr\u00e9hender, et \u00e0 param\u00e9trer (essentiellement en ligne de commande, vivement un utilitaire graphique !). Je ne d\u00e9taillerai pas dans ce billet ce qu&rsquo;est Btrfs ni comment l&rsquo;utiliser, mais vous pouvez par exemple consulter ce billet de sebsauvage (que je remercie chaleureusement au passage). En particulier, ce syst\u00e8me de\u2026<\/p>\n","category_list_v2":"<a href=\"https:\/\/lapineige.fr\/wp\/blog\/category\/informatique\/\" rel=\"category tag\">Informatique<\/a>, <a href=\"https:\/\/lapineige.fr\/wp\/blog\/category\/linux\/\" rel=\"category tag\">Linux<\/a>, <a href=\"https:\/\/lapineige.fr\/wp\/blog\/category\/informatique\/logiciels\/\" rel=\"category tag\">Logiciels<\/a>","author_info_v2":{"name":"Lapineige","url":"https:\/\/lapineige.fr\/wp\/blog\/author\/the_lapineige\/"},"comments_num_v2":"0 commentaire","featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"Lapineige","author_link":"https:\/\/lapineige.fr\/wp\/blog\/author\/the_lapineige\/"},"_links":{"self":[{"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/posts\/993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/comments?post=993"}],"version-history":[{"count":69,"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/posts\/993\/revisions"}],"predecessor-version":[{"id":1401,"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/posts\/993\/revisions\/1401"}],"wp:attachment":[{"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/media?parent=993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/categories?post=993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lapineige.fr\/wp\/wp-json\/wp\/v2\/tags?post=993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}