7 votes

Quand fstrim doit-il fonctionner ?

Sur cette base fil du forum cyanogenmod J'ai essayé de résoudre le problème du délai d'exécution des applications et du passage d'une application à l'autre sur mon Galaxy Nexus fonctionnant sous cyanogenmod et Android 4.4.4 en exécutant fstrim manuellement.

root@maguro:/ # fstrim -v /data                                                          
/data: 11649122304 bytes trimmed                                                         
root@maguro:/ # fstrim -v /cache                                                         
/cache: 436121600 bytes trimmed                                                          
root@maguro:/ # fstrim -v /system                                                        
/system: 80490496 bytes trimmed
root@maguro:/ # exit

Cela a largement résolu les problèmes de retard. Le délai pour revenir à l'écran d'accueil, par exemple, est passé d'environ 4 secondes à moins d'une seconde. D'après cette amélioration des performances, je pense que le délai était dû à un fonctionnement inefficace du système de fichiers.

Le système d'exploitation Android n'est-il pas censé faire tourner fstrim tout seul ? Quand est-ce que cela est censé arriver ?

6voto

Irfan Latif Points 16863

El article référencé dans @ mattm La réponse de l'entreprise est un peu dépassée. IdleMaintenanceService a été supprimé dans Lollipop, les choses ont changé. Sur Pie, le programme fstrim est déclenché à partir de StorageManagerService ( 1 ) a MountService ( 2 ) :

si le dispositif est vivant à minuit + oisiveté fstrim est exécuté à la prochaine date disponible. charge + ralenti temps

* ( 3 )
Appels de service du Mont StorageManager qui à son tour appelle Vold à faire fstrim .

Si le planning n'est pas respecté parce que les conditions ne sont pas réunies et que fstrim n'a pas couru pour la dernière fois 3 days ( 4 ) il sera forcé lors du démarrage du dispositif si celui-ci est redémarré. SystemServer ( 5 ) , PackageManager ( 6 ) , StorageManager ( 7 ) y Vold ( 8 ) sont impliqués.

Dans chaque cas, le fichier /data/system/last-fstrim ( 9 ) (depuis Lollipop) est mis à jour ( 10 ) vous pouvez donc vérifier son horodatage ( nécessite une racine ) pour savoir quand fstrim a été exécuté en dernier.

Si vous voulez faire TRIM manuellement, utilisez l'outil de ligne de commande d'Android sm fstrim (nécessite Root ou adb shell ). Auparavant, il s'agissait vdc fstrim dotrim mais ajouté au gestionnaire de stockage dans Oreo ( 11 ) et retiré de vold dans Pie ( 12 ) .

Afin d'envoyer FITRIM ioctl au(x) système(s) de fichiers sélectionné(s) seulement, utilisez fstrim outil ( nécessite une racine ) ; une applet busybox.


Et si vous n'avez pas de Root ?
Et vous soupçonnez que le programme fstrim est manquée pendant plus de 3 jours, redémarrez l'appareil, fstrim sera forcé (depuis Lollipop 5.1 ( 13 ) ). Simple.

Les applications ne peuvent pas TRIM sans Root ; voir cette réponse .


À QUELLE FRÉQUENCE LA GARNITURE DOIT-ELLE ÊTRE EXÉCUTÉE ?

La mémoire flash (y compris les SSD, les eMMC, les cartes SD, les clés USB, etc.) a un nombre limité de cycles de programmation/effacement avant de mourir. Mais à la différence des disques durs, les données ne peuvent pas être simplement écrasées sur la mémoire flash, elles doivent d'abord être effacées, ce qui est possible grâce aux techniques suivantes Garbage Collection .

Maintenant, si nous en faisons trop fstrim ce qui entraînera des GC fréquents en arrière-plan et une consommation précieuse. P/E cycles et donc de réduire la durée de vie. Si nous ne faisons pas fstrim du tout, il pourrait y avoir un GC inutile (de données déjà supprimées), et les opérations d'écriture deviendront trop lentes avec le temps car Erase devra être effectuée avant l'écrasement des données, ce qui entraîne une latence très élevée par rapport à l'écrasement des données. Program fonctionnement.

Nous avons donc besoin d'un équilibre entre les deux.

Il y a également d'autres facteurs, par exemple si le contrôleur eMMC prend en charge over provisioning L'efficacité de la gestion de la GC en arrière-plan, de la gestion de l'usure et de la gestion de l'amplification de l'écriture, etc.

Donc, à moins que vous ne disposiez de la fiche technique de la carte eMMC de votre téléphone et que vous soyez sûr de ce que vous faites, il est préférable de laisser l'option fstrim à OS. Sur les PC ( 14 ) :

Exécuter fréquemment fstrim, ou même utiliser mount -o discard peut avoir un effet négatif sur la durée de vie des dispositifs SSD de mauvaise qualité. Pour la plupart des systèmes d'ordinateurs de bureau et de serveurs, une fréquence de coupe suffisante est de une fois par semaine .

Mais cela peut varier selon les situations.

RELATED :

4voto

mattm Points 4120

Le commentaire d'Unforgettableid comprenait un Article d'AnandTech qui décrit les conditions dans lesquelles fstrim est censé fonctionner :

J'ai appris un peu plus sur les conditions sous-jacentes quand Android 4.3 va TRIM les systèmes de fichiers, comme il n'était pas complètement clair avant. Le framework Android envoie un événement "start idle maintenance window" que le MountService écoute, puis invoque vold pour trier les systèmes de fichiers lorsque quelques conditions sont remplies - l'appareil n'a pas été touché pendant plus d'une heure, aucun événement "idle maintenance window" n'a été envoyé en 24 heures, et l'appareil est soit hors charge avec 80% de batterie, soit en charge avec 30% de batterie. L'objectif est de faire en sorte que fstrim fonctionne environ une fois toutes les 24 heures si vous avez l'habitude de brancher l'appareil pour le charger chaque nuit.

1voto

beeshyams Points 37355

Réponse de mattm indique les conditions dans lesquelles, fstrim devrait fonctionner. Je ne sais pas si le comportement a changé dans les versions ultérieures d'Android, mais je suis tombé sur une application qui fait fstrim à la demande comme au redémarrage . Root nécessaire. Je partage cette information car elle peut être utile à ceux qui ne sont pas familiers avec Linux (comme moi).

SSD Boost

Android 4.3+ supporte nativement le trim, cela signifie que le système d'exploitation après avoir supprimé un fichier enverra une commande trim au contrôleur nand notifiant les blocs utilisés par le fichier, le contrôleur les effacera lorsqu'il est inactif afin de pouvoir écrire rapidement sans effacer la prochaine fois.

Mais les utilisateurs n'ont aucun contrôle sur ce processus et Android ne réduit pas le stockage pendant très longtemps.

SSD Boost " vous permet d'effectuer un ajustement manuel de votre appareil si vous sentez qu'il est devenu lent et, de toute façon, il effectue l'ajustement à chaque redémarrage.

Je sais que cela ne répond pas directement à la question, mais j'ai pensé que c'était la meilleure question sur le site pour la partager.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X