Android prend en charge fstrim
mais cela ne fonctionne que si le téléphone est inactif pendant longtemps tout en étant en charge
Non, sur les versions plus récentes, Android exécute fstrim
selon un calendrier quotidien, à condition que les conditions soient remplies. Ou il devrait s'exécuter au redémarrage s'il n'est pas exécuté depuis plus de 3 jours. Voir cette réponse pour plus de détails et comment vous pouvez exécuter fstrim
manuellement.
FRAGMENTATION DE LA MÉMOIRE FLASH :
Je pense que mon téléphone est trop fragmenté et manque de performance
Non, la fragmentation n'existe pas sur la mémoire flash, ou du moins n'affecte pas les performances. En fait, c'est le système de fichiers qui se fragmente (c'est pourquoi un système de fichiers nouvellement formaté a 0 % de fragmentation), transférant la même chose au stockage physique sous-jacent. Cependant, le support sous-jacent gère cela différemment.
Commençons d'abord par une brève mise en perspective de la relation entre le système de fichiers et le support de stockage. Le système de fichiers interagit avec les adresses de bloc logique (LBAs), qui ne sont que des nombres représentant une unité de mémoire. La correspondance du système de fichiers aux LBAs est indépendante du fait que le support de stockage sous-jacent soit un HDD ou un SSD.
Sur les HDD, la correspondance des LBAs aux adresses de cylindre-tête-secteurs (CHS ; disques magnétiques rotatifs) (1:1 / séquentielle / linéaire) (1) est créée lors du formatage de bas niveau du disque dur lors de la fabrication, ce qui ne change jamais sauf si un secteur est marqué comme défectueux par le firmware du contrôleur du disque (dans la liste g de la table de défauts du disque) et remappé à un autre secteur de secours. Le système d'exploitation peut également marquer des secteurs comme défectueux dans le système de fichiers pour les exclure de toute utilisation future, comme le fait CHKDSK
sous Windows lors d'un formatage complet et e2fsck
/badblocks
sous Linux. Ainsi, le système d'exploitation est conscient de la géométrie physique du disque, qui est proportionnelle à la géométrie des LBAs.
Sur la mémoire flash (y compris les SSD, les eMMC, les cartes SD et les clés USB, etc.), la correspondance des LBAs aux adresses de bloc physique (PBAs ; cellules de silicium) est entièrement contrôlée par la couche de traduction de flash (FTL) ; une partie du firmware du contrôleur de mémoire. Le système d'exploitation n'en sait rien, il ne peut voir qu'au maximum les LBAs, pas ce qui se passe en dessous, pas même le ECC des cellules de mémoire défectueuses (tout comme les secteurs défectueux sur les HDD), et c'est pourquoi nous ne réalisons pas la mauvaise santé de l'eMMC tant qu'il ne tombe pas en panne. Comme une page de mémoire ne peut pas être simplement écrasée contrairement aux HDD, elle doit être effacée avant d'être programmée (écrite). Un effet secondaire est qu'un certain nombre de pages sont effacées/réécrites et la correspondance physique change même si un petit fichier est édité. Sur les HDD, les fichiers ne sont pas remplacés physiquement sauf s'ils sont raccourcis ou prolongés. Le système d'exploitation est conscient de ces changements physiques sur les HDD, mais pas sur la mémoire flash.
Ainsi, sur les HDD, le système d'exploitation est conscient de la fragmentation physique qui est la même que la fragmentation du système de fichiers (LBAs), et la défragmentation
(comme celle effectuée par Windows régulièrement) se produit au niveau physique. Mais sur la mémoire flash, vous ne pouvez pas simplement faire de la défragmentation
en réalité, plutôt de bons contrôleurs de mémoire flash fragmentent délibérément en tant que stratégie de nivellement de l'usure
. Le système d'exploitation n'a aucun contrôle sur la fragmentation réelle au niveau physique (à moins d'avoir des outils avancés pour communiquer avec le contrôleur de flash). Cependant, le système d'exploitation est conscient de la fragmentation dans le système de fichiers. Mais si vous défragmentez le système de fichiers, cela ne défragmentera pas la mémoire flash.
Comme @Robert l'a mentionné dans un commentaire, il n'y a aucun effet de la fragmentation physique sur les performances de la mémoire flash car il n'y a pas de composants mécaniques dans la mémoire flash, c'est-à-dire pas de latence de recherche due au déplacement de la tête sur différentes pistes comme dans les HDD. Les experts pensent que la fragmentation du système de fichiers peut avoir un certain impact en raison du nombre accru de requêtes d'E/S que le système d'exploitation doit effectuer pour lire/écrire des données dispersées.
En résumé, les lignes ci-dessus :
- Sur les HDD, c'est le système d'exploitation/le système de fichiers qui contrôle où les données sont réellement enregistrées sur la mémoire physique, donc il peut la défragmenter.
- Sur les supports de stockage flash, le système d'exploitation/le système de fichiers ne sait pas où les données sont réellement enregistrées sur la mémoire physique, donc il ne peut pas les défragmenter.
Comme TRIM est important pour améliorer la vitesse du SSD, j'aimerais vraiment exécuter TRIM sur mon téléphone
Lorsqu'un système d'exploitation demande à un système de fichiers d'envoyer TRIM à l'eMMC, il demande en fait au contrôleur de mémoire flash d'effectuer une collection des déchets
- effacer les PBAs qui correspondent aux LBAs appartenant à des fichiers supprimés. Ainsi, le contrôleur de l'eMMC mappe ces LBAs à des blocs déjà/nouvellement effacés (PBAs). Cela ne fera pas de défragmentation. Consultez la réponse mentionnée ci-dessus pour savoir à quelle fréquence fstrim
devrait être exécuté.
EST-CE QUE LA RÉINITIALISATION D'USINE EFFECTUE TRIM ?
Je veux le réinitialiser mais je ne suis pas sûr que TRIM s'exécutera également si je le fais
La réinitialisation d'usine
sur les appareils Android formate les partitions /data
et /cache
(2). La question est donc de savoir si le formatage est accompagné de TRIM ou non.
Eh bien, cela ne peut pas être standardisé. Le formatage et TRIM sont des choses différentes, donc cela dépend de l'utilitaire de formatage s'il envoie ou non la commande TRIM à l'eMMC. Le formatage peut impliquer une partition
mais dans la plupart des cas (en particulier sur Android), c'est juste le formatage de haut niveau
c'est-à-dire pour créer des structures de données (par exemple, super-blocs, tables de fichiers, répertoires, bitmaps d'inode/bloc, journaux, etc.) utilisées par le système d'exploitation pour identifier le contenu de la partition.
Si nous examinons les lignes du code source de la restauration standard
qui gère le formatage des partitions lors de la réinitialisation d'usine, nous ne voyons aucune notion de TRIM il effectue wipe_block_device
(3) qui appelle BLKDISCARD
ou BLKSECDISCARD
à condition qu'ils soient pris en charge (4). Les deux ioctls sont essentiellement du TRIM au niveau du périphérique de bloc (pas au niveau du système de fichiers). fstrim
n'est exécuté que par vold
à l'intérieur du système d'exploitation principal Android. De plus, l'un des outils utilisés pour créer le système de fichiers mke2fs_static
tente d'effacer le périphérique avant la création du système de fichiers (5), mais pas l'autre outil e2fsdroid_static
. Il y a donc des chances que l'eMMC reçoive une demande de TRIM/discard pendant la réinitialisation d'usine, mais méfiez-vous du passé : les téléphones Android ne suppriment pas complètement les données lorsqu'ils exécutent leur option de réinitialisation d'usine.
0 votes
Si votre téléphone ne "performe pas bien" dans 99,99999% des cas, la fragmentation de la mémoire flash n'est pas le problème. Sur la mémoire flash, l'effet de la fragmentation sur les performances est pratiquement inexistant.
0 votes
Oh je ne savais pas ça. Mais la réinitialisation exécutera-t-elle Trim pour autant?
0 votes
Le plus probablement, oui.