Solution communautaire

Copie NVMe interne de ZimaOS à 600 Mo/s : pourquoi le chiffre affiché dans l’interface Web n’est pas une limite SATA

A November 2025-January 2026 thread where several users saw roughly 600–650 MB/s internal WebUI copies despite much faster NVMe hardware. One user then measured about 2.3 GB/s direct dd writes and about 2.2 GB/s fio writes, strongly ruling out a SATA-style OS-wide cap.

La preuve la plus solide de cette discussion n’est pas la capture d’écran de Files à 600 Mo/s, mais le test ultérieur du stockage direct. Un utilisateur dont la copie via l’interface Web de ZimaOS restait autour de 600–650 Mo/s a mesuré environ 2,3 Go/s en écriture directe avec dd et environ 2,2 Go/s en écriture avec fio. Cela exclut, pour cette machine, l’hypothèse selon laquelle le système d’exploitation limiterait globalement le NVMe aux performances du SATA III.

La conclusion la plus défendable est que le débit faible concernait le processus de copie interne de Files ou des effets liés à la charge de copie, comme les métadonnées, le copy-on-write de Btrfs, la mise en mémoire tampon ou les limites d’un seul thread, et non le chemin NVMe physique lui-même.

Tâche de copie interne de ZimaOS Files affichant une vitesse de transfert d’environ 635 Mo/s
La vitesse de transfert de l’interface Web ressemblait à une limite du SATA, mais des tests ultérieurs d’E/S directes ont réfuté l’existence d’une limite générale du NVMe.

La source a reproduit la limite avec plusieurs chemins de copie

Dave a signalé un comportement similaire avec les configurations NVMe vers NVMe, NVMe vers RAID0, RAID0 vers un seul NVMe et les flux 10GbE. Un autre utilisateur a ensuite indiqué que la copie SMB de Windows vers ZimaOS pouvait atteindre le débit complet du 10GbE, tandis que la copie interne de Files restait autour de 650 Mo/s.

Les écritures directes avec dd ont atteint environ 2,3 Go/s

La source a utilisé dd if=/dev/zero of=/DATA/testfile bs=1G count=10 oflag=direct status=progress et publié un résultat proche de 2,3 Go/s, bien supérieur au débit pratique du SATA III.

fio a également atteint environ 2,2 Go/s

L’exécution de fio présentée dans la source indiquait environ 2163 Mio/s, soit 2268 Mo/s, en écriture. Même si le moteur synchrone sélectionné limitait de fait la profondeur de file d’attente à un, le résultat prouvait tout de même que la pile de stockage pouvait dépasser plusieurs fois le débit de la copie Files.

Sortie du terminal d’un benchmark NVMe direct de ZimaOS affichant un débit de plusieurs gigaoctets par seconde
Le benchmark en ligne de commande publié montrait que le chemin NVMe lui-même fonctionnait largement au-dessus de 600 Mo/s.

Interprétez avec prudence le débit de lecture dd indiqué dans la source

La source a également mesuré environ 3,0 Go/s en lisant le fichier de test fraîchement créé vers /dev/null. Comme cette lecture n’utilisait pas explicitement les E/S directes et ne vidait pas le cache de pages, la mise en cache peut avoir influencé le résultat.

Une faible utilisation globale du processeur n’exclut pas un goulot d’étranglement sur un seul thread

Un processus de copie en espace utilisateur peut saturer un cœur tandis que l’utilisation totale du processeur reste modérée sur un système multicœur. Surveillez l’utilisation du processeur par thread et celle du disque pendant la copie lente dans Files.

Comparez le même fichier volumineux avec la ligne de commande et Files

Utilisez la même source, la même destination et le même fichier de test volumineux pour les copies avec Files et en ligne de commande, puis comparez les résultats à ceux d’un benchmark d’E/S directes non persistant. Cela permet de distinguer la surcharge de copie de l’interface et du backend des capacités brutes du périphérique.

Le nombre de fichiers et les métadonnées Btrfs peuvent modifier le débit réel des copies

Des milliers de petits fichiers nécessitent des opérations répétées sur les métadonnées, et le comportement de copy-on-write de Btrfs peut modifier le coût d’une copie interne.

Ne présentez pas cela comme une limitation universelle actuelle de ZimaOS

La source fournit des preuves solides d’un goulot d’étranglement historique dans Files et les copies internes sur plusieurs systèmes. Elle ne démontre pas que ZimaOS 1.7.1 présente encore exactement la même limite sur toutes les combinaisons de matériel et de systèmes de fichiers.

Une copie interne peut lire et écrire simultanément sur le même stockage

Si la source et la destination se trouvent sur le même NVMe physique ou le même pool RAID, le disque doit traiter les lectures et les écritures simultanément. Le débit de copie affiché n’est donc pas comparable à celui d’un benchmark d’écriture séquentielle unidirectionnelle.

Notez les périphériques physiques source et destination avant de comparer les résultats. « Copie interne » décrit le chemin logiciel, pas nécessairement deux SSD indépendants.

Vérifiez la largeur et la génération du lien PCIe avant de comparer les chiffres annoncés

Un NVMe haut de gamme peut être limité par un lien PCIe x1/x2, une génération plus ancienne, un partage de lignes avec le chipset ou un câblage de la plateforme différent de ce que laisse penser la taille physique du connecteur. Un benchmark brut atteignant plus de 2 Go/s exclut déjà une limite à 600 Mo/s, mais le débit peut rester inférieur au maximum indiqué par le fabricant du SSD pour des raisons légitimes liées à la topologie.

Les copies prolongées peuvent déclencher des limites thermiques ou liées au cache SLC du SSD

Les benchmarks courts et les copies de fichiers longues sollicitent les SSD différemment. Un disque peut démarrer très rapidement, puis ralentir lorsque son cache pseudo-SLC est rempli ou que sa température augmente. Surveillez la température du NVMe et le débit soutenu sur une période suffisamment longue avant d’attribuer chaque baisse à Files.

Le cache de pages peut faire paraître certains tests plus rapides que le périphérique

Le résultat d’écriture directe de la source constitue une preuve solide, car il utilisait les E/S directes. Les tests de lecture effectués immédiatement après l’écriture peuvent être influencés par le cache mémoire, sauf si le benchmark le désactive explicitement.

Pour obtenir des comparaisons reproductibles, utilisez une configuration de benchmark indiquant si les E/S directes sont activées et définissez une taille de fichier suffisamment grande pour réduire les effets du cache.

Testez à nouveau le processus Files actuel avant de considérer 600 Mo/s comme une limite fixe du produit

La discussion couvre des versions de ZimaOS antérieures à la version actuelle. Si Files semble toujours limité aujourd’hui, reproduisez le problème avec le même fichier volumineux, la même source, la même destination et une comparaison actuelle avec la ligne de commande et les E/S directes. Vous obtiendrez ainsi des preuves exploitables au lieu de perpétuer indéfiniment une ancienne limite chiffrée.

FAQ sur la vitesse du NVMe

La source a-t-elle prouvé que ZimaOS limite le NVMe à la vitesse du SATA ?

Non. Les écritures directes avec dd et fio ont dépassé 2 Go/s sur le même système.

Qu’est-ce qui était le plus probablement en cause selon la source ?

Le processus de copie interne de l’interface Web ou du gestionnaire de fichiers, ou la surcharge liée à la charge de travail, plutôt que le périphérique NVMe lui-même.

Faut-il considérer le résultat de lecture dd du fichier fraîchement écrit comme la vitesse réelle du disque ?

Pas nécessairement. Sans lecture directe ni contrôle du cache, le cache de pages peut influencer le résultat.