Jump to content

[TUTO] [MAJ] Corriger les problèmes de latences dans les applications


Recommended Posts

Une solution définitive par curio (le "Voodoo Fix") a été développée, vous trouverez toutes les informations à l'adresse suivante : www.project-voodoo.org

Pour participer à la Beta test du "Voodoo Fix" allez sur www.webchat.freenode.net et connectez vous au channel #project-voodoo

Vous pouvez aussi écrire vos retours sur le forum XDA (en anglais) au topic suivant : http://forum.xda-developers.com/showthread.php?t=774500

ATTENTION ANCIEN TUTORIEL: Ce qui va suivre est obsolète

Ce tuto est basé sur le sujet d'origine de mimocan du forum xda : http://forum.xda-developers.com/showthread.php?t=724251

Note: Si il y a des erreurs, n’hésitez pas à me le signaler

Objectif du tutoriel

L’objectif est de corriger les problèmes de latence lors des chargements ou utilisation d'applications. Ces problèmes de lag sont surtout rencontrés sur les firmwares précédents la version I9000XWJG5 (Juillet 2010).

Après modification, le téléphone est beaucoup plus réactif dans les applications, celles ci se chargent plus vite et les menus s’enchaînent plus rapidement.

Le gain en performance est aussi notable en I9000XWJG5 : Sur l'application de benchmark "Quadrant" je passe de 866 points à 1387 points en ext3 et 1475 en ext4 sur une micro SD de classe 2, passant de la 3ème place à la 1ère place devant le Nexus One Froyo. (histoire d'avoir des chiffres)

XWJG5.jpgXWJG5_ext3.jpgXWJG5_ext4.jpg

Raisons du lag

Lorsque vous installez une application, une base de donnée SQLite associée peut être créée dans votre smartphone. Cette base contient des informations propres à l'application en fonction de ses besoins.

Le problème vient de l'endroit où sont stockées ces bases de données : sur le Galaxy S, les données se trouvent sur la carte SD intégrée au téléphone où les accès en écriture/lecture semblent assez lents à cause du système de fichier RFS Samsung.

Principe de la correction

La correction proposée est de déplacer l'endroit où sont stockées les bases de données vers une zone mémoire où l'accès en écriture et lecture est plus rapide que celle d'origine. On va choisir comme zone mémoire notre carte micro SD externe où l'on créera 2 partitions :

1) La première partition en FAT32 où l'on stockera nos données (musiques, vidéos, documents etc...)

2) La seconde au format ext3 ou ext4 où les bases de données seront sauvegardées. Le format ext4 étant plus efficace on partira sur cette solution dans ce tutoriel.

ATTENTION: L’ordre des partitions est important ! 1ère partition = FAT32, 2nde partition = ext4

Afin que le téléphone aille chercher par défaut votre 2ème partition, il faut flasher un nouveau kernel modifié qui ira monter cette partition au démarrage (le montage se fera sur /disk)

Avantages :

- La solution est indépendante du firmware. Ceci dit, après chaque flashage de firmware ou après factory reset, il faut recréer les liens symboliques vers la carte micro SD.

- Vous pouvez spécifier vous même la taille de la partition qui accueillera les données d’applications.

- Les performances dépendent aussi de la classe de votre carte micro SD : http://fr.wikipedia.org/wiki/Carte_SD

Inconvénients :

- Votre carte micro SD doit toujours être présente pour profiter de la correction. Vous pouvez cependant revenir en arrière en remplaçant les liens symboliques par les dossiers eux même.

- Quand vous reflashez un firmware il faut refaire la manipulation.

PREREQUIS

1) Une carte micro SD (de classe 2 ou au dessus) que l'on partitionnera en 2

2) Un adaptateur de carte micro SD-USB ou un lecteur de carte micro SD

3) Le logiciel GParted Live (gratuit) pour créer les partitions : http://gparted.sourceforge.net/livecd.php

4) Installez Samsung Kies et faire reconnaître son Samsung Galaxy S

5) Avoir les outils de l'Android SDK : http://developer.android.com/sdk/index.html

6) Avoir rooté le smartphone (l'accès root est nécessaire pour créer les liens symboliques vers la carte micro SD etc...) : https://forum.frandroid.com/forum/viewtopic.php?id=19395

7) Le logiciel de flashage Odin pour mettre à jour le kernel linux de votre téléphone : http://www.multiupload.com/DLS7TWUVPY

8) Le kernel modifié :

Si votre partition est en ext3 : http://www.multiupload.com/5QAVQBU6GB

Si votre partition est en ext4 : http://www.multiupload.com/Z8TGXRRNCS

9) Ne pas stresser :p

TUTORIEL

Note: Si ça vous intéresse vous pouvez mesurer les performances du téléphone avant et après modification avec l'application du market "Quadrant" : details?id=com.aurorasoftworks.quadrant.ui.standard

1) Partitionner la carte micro SD

2) Installer Samsung Kies

3) Installer les outils de l'Android SDK

4) Rooter son téléphone

5) Flasher le nouveau kernel

6) Créer les liens symboliques vers la carte micro SD

7) Rebooter

1) Partitionner la carte micro SD

On utilisera le logiciel GParted Live (gratuit), certains ont utilisé d'autres logiciels mais ont eu des soucis après, on partira donc là dessus.

Vous avez le choix d'utiliser GParted Live depuis un CD ou depuis une clef usb bootable : http://gparted.sourceforge.net/livecd.php

Dans mon cas je pars sur la version CD. La dernière ISO stable : http://sourceforge.net/projects/gparted/files/gparted-live-stable/

Une fois le CD gravé, rebootez en laissant votre CD dans le lecteur, votre PC devrait rebooter à partir du celui-ci :

- Vous arrivez sur le menu d'accueil, choisissez "GParted Live (Default settings)"

- Sur la configuration du clavier sélectionnez "Don't touch keymap" vous serez en clavier QWERTY. Il y a une option pour passer en AZERTY mais ça n'a jamais marché chez moi

- Sur le choix du language entrez : 08 (Français) puis validez

- Sur la configuration graphique appuyez sur "Entrée" sans rien changer (paramètre par défaut)

Après initialisation de linux, vous arrivez au bureau suivant :

Accueil.jpg

Par défault vous voyez apparaître les différentes partitions de votre disque dur (/dev/sda dans mon cas)

- Insérez votre carte micro SD (à l'aide d'un adaptateur USB par exemple) puis allez dans "GParted"->"Actualiser les périphériques"

- Aller dans le menu "GParted"->"Périphériques" et sélectionnez votre carte micro SD (/dev/sdb dans mon cas).

- Supprimez les partitions existantes en cliquant sur une partition, cliquez droit puis "Supprimer". Vous devriez avoir une fenêtre semblable :

Micro%20SD%20vide.jpg

Créons maintenant nos 2 partitions, on créé d'abord la partition FAT32 puis ensuite celle en ext4. A noter que dans mon cas je choisis une partition ext4 de 500 Mo mais vous êtes libre de choisir.

ATTENTION: L’ordre des partitions est important ! 1ère partition = FAT32, 2nde partition = ext4

Note: Tant que vous ne cliquez pas sur le bouton "Apply" aucun changement ne sera fait réellement sur votre carte micro SD.

- Cliquez droit dans la zone des partitions, un menu contextuel s'affiche et sélectionnez "Nouvelle"

- Une boîte de dialogue apparaît et remplissez les champs suivants :

  • "Espace libre suivant (Mio) :" = 500 (ici on spécifie la taille de la partition suivante. Mettez 500 si vous voulez que votre partition ext4 fasse 500 Mo)
  • "Système de fichiers :" = fat32
  • "Etiquette :" = [N'importe quel nom]

Creation%20FAT32.jpg

- Valider en cliquant sur "Add", vous devriez avoir la fenêtre suivante :

Creation%20FAT32-1.jpg

Créons maintenant notre partition ext4

- Sélectionnez la partition "non alloué", cliquez droit puis "Nouvelle"

- Une boîte de dialogue apparaît et remplissez les champs suivants :

  • "Système de fichiers :" = ext4
  • "Etiquette :" = [N'importe quel nom]

Creation%20EXT4.jpg

- Valider en cliquant sur "Add", vous devriez avoir la fenêtre suivante :

Creation%20EXT4-1.jpg

Vous êtes prêt à effectuer les changements réels : cliquez sur "Apply"

Une fois le processus terminé, revenez sur le bureau et cliquez sur "Exit" pour rebooter (Le CD s'éjecte) :

Exit.jpg

2) Installer Samsung Kies

Téléchargez Samsung Kies et installez le : http://www.samsungapps.com/about/onPc.as

Faites reconnaître votre Galaxy S par Kies..... en théorie vous branchez votre téléphone en USB et Kies est censé le détecter et installer les drivers.

Ca n'a jamais marché chez moi (Windows XP).

Il y a cependant une solution qui marche à tout les coups, mais vous obligera à effacer toutes les données du téléphone (factory reset). Si vous ne trouvez pas d'autres solutions effectuez ceci :

- Allez dans "Paramètres"->"Confidentialité"->"Rétablir param. par défaut"

- Cliquez sur "Réinitialiser le téléphone"

- Votre téléphone redémarre, vous voyez apparaître des lignes de commandes en jaune défilées, c'est à ce moment là que Kies détecte le téléphone et installe les drivers

SelectionConfid.jpg Confid.jpg Reinit.jpg

3) Installer les outils de l'Android SDK

Vous aurez besoin des outils de l'android SDK pour la suite (adb). Téléchargez le SDK ici : http://developer.android.com/sdk/index.html

Dézippez l'archive dans C:\ (par exemple), vous devriez avoir le répertoire C:\android-sdk-windows

Ouvrez une ligne de commande (cmd.exe), sous Windows XP allez dans le menu "Démarrer", cliquer sur "Exécutez..." puis entrez "cmd" :

Validez et vous avez la fenêtre suivante :

Cmd.jpg

Allez dans le répertoire C:\android-sdk-windows\tools en tapant cd C:\android-sdk-windows\tools

CmdAndroid.jpg

C'est ici que vous taperez vos commandes adb, histoire de tester que tout fonctionne bien, effectuez les étapes suivantes :

Sur votre téléphone :

- Débranchez l'usb (si ce n'est déjà fait).

- Activez le déboguage usb, en allant dans "Paramètres"->"Applications"->"Développemenent" et cliquez sur "Débogage USB"

- Rebranchez votre téléphone au PC

ParamApplications.jpg ApplicationsDev.jpg DebogageUsb.jpg

Sur votre pc depuis la fenêtre de commande :

- Tapez "adb devices", vous devez avoir un résultat similaire :

Si en dessous de "List of devices attached" vous avez "[un nombre] device" c'est que tout est ok

AdbDevices.jpg

4) Rooter son téléphone

Suivez les instructions ici : https://forum.frandroid.com/forum/viewtopic.php?id=19395

(Vous remarquerez à quel point il est facile de rooter le Samsung S :) )

5) Flasher le nouveau kernel

Téléchargez d'abord le kernel correspondant au format que vous avez choisi (ext3 ou ext4) :

Kernel pour montage ext3 : http://www.multiupload.com/5QAVQBU6GB

Kernel pour montage ext4 : http://www.multiupload.com/Z8TGXRRNCS

Télécharger le logiciel Odin afin de flasher le kernel sur votre téléphone : http://www.multiupload.com/DLS7TWUVPY

1) Exécutez Odin et dans la section PDA spécifiez le fichier kernel que vous avez choisi : dans mon cas il s'agit du fichier "Kernel_GalaxyS_mimo_ext4_v4.tar"

OdinKernel.jpg

2) Eteignez votre téléphone et appuyez sur les touches "Volume Bas"+"Home"+"Power" en même temps, vous devez voir apparaître un panneau "En construction" et un message "Downloading... Do not turn off target!!!"

Note: si vous voulez sortir de ce mode, appuyez sur les touches "Volume Haut"+"Home"+"Power"

3) Dans Odin vous devriez voir une case apparaître en jaune, si ce n'est pas le cas débranchez puis rebranchez votre câble USB. Si ce n'est toujours pas le cas (ça peut arriver), éteignez votre ordinateur, redémarrez puis recommencez les étapes depuis 1)

OdinConnected.jpg

4) Cliquez sur "Start", le flashage devrait durer 5 secondes, Odin affiche "Reset" et votre téléphone reboot

OdinFlash.jpg

OdinFlashEnded.jpg

OdinFlashEndedPass.jpg

Note: Odin affiche "Pass" au bout d'un certain temps mais vous n'êtes pas obligé d'attendre ce message pour le fermer

6) Créer les liens symboliques vers la carte micro SD

Voilà! le kernel a été flashé, dorénavant au démarrage du téléphone la partition ext3 ou ext4 que vous avez créé est montée à l'emplacement /disk

Logons nous en root sur notre téléphone depuis notre fenêtre de commande. Comme tout à l'heure on se place dans le répertoire C:\android-sdk-windows\tools et on exécute les commandes suivantes :

adbSu.jpg

Comme c'est la première fois dans ce tutoriel que l'on se logue en root en ligne de commande, vous devriez voir apparaître sur votre téléphone la fenêtre suivante :

autorisationRoot.jpg

Choisissez "Autoriser" et revenez sur la ligne de commande

Si vous avez un message "Permission denied" recommencez

Une fois que vous êtes root votre ligne de commande commence par un '#'

Enfin, effectuez les commandes suivantes :

Note: Même si vous avez vos commandes busybox dans votre path, le 'busybox' de la 5ème ligne est obligatoire (vous aurez une erreur sinon)

Voilà c'est terminé !

Une fois le téléphone rebooté vous devriez constater une meilleure réactivité dans les applications.

N'hésitez pas à poster vos résultats sur Quadrant en indiquant votre classe de carte micro SD et votre format de partition :)

Dernières remarques :

  • Lorsque vous flashez un firmware, il faut refaire la correction (flashage kernel+liens symboliques)
  • Lorsque vous faites un reset d'usine il faut refaire le lien symbolique sur le répertoire data/data

Comment annuler les modifications

2 solutions :

- Soit vous reflashez un firmware d'usine et dans ce cas tout sera propre mais vous perdrez toutes vos applis, sms, mms etc...

- Soit vous laissez le kernel installé et vous supprimez les liens symboliques créés plus haut :

1) Killez toutes vos applications

2) Exécutez les commandes suivantes :

3) Supprimez votre partition ext3 ou ext4 de votre carte SD (sauf si vous voulez un jour refaire le fix)

Edited by FromtonRouge
Link to comment
Share on other sites

  • Replies 303
  • Created
  • Last Reply

Top Posters In This Topic

Super initiative même si personnelement je ne pense pas le faire (flemme d'acheter une carte SD :p)

D'ailleurs précise quand même bien dans les prérequis qu'il faut une carte micro SD. Et peut-être préciser sa classe ? J'ai entendu dire qu'il est conseillé d'avoir une classe 6 minimum pour que les lectures/écritures soit le plus rapide possible. Dites moi si j'me trompe.

Sinon ça à l'air super détaillé. Chapeau !

Edited by Fabinou
Link to comment
Share on other sites

Merci pour ce tuto :)

J'ai plusieurs petites question : Les 8Gb de mémoire de base du tel sont sur une carte SD, on peut pas la changer elle ?

Pour Gparted, on peut faire ça avec l'outil intégré dans une clef USB-live d'Ubuntu non ?

Link to comment
Share on other sites

Je m'y connait pas du tout en carte SD mais sur le i7500, pour faire le swap il fallait mettre une classe 6 sinon ça ramait.

Après la on est pas du tout sur le même produit mais se serait intéressant de trouvé un comparatif de performance entre une classe 2 et une classe 6. Je suis persuadé qu'il doit y avoir une différence.

Au fait, avec le passage de la 2.2 se problème sera réglé ou pas ?

Encore une question : Vous aussi vos appli téléphone et répertoire sont relativement lente ?

Edited by Fabinou
Link to comment
Share on other sites

Merci pour ce tuto :)

J'ai plusieurs petites question : Les 8Gb de mémoire de base du tel sont sur une carte SD, on peut pas la changer elle ?

Pour Gparted, on peut faire ça avec l'outil intégré dans une clef USB-live d'Ubuntu non ?

Celle là on peut pas la changer en effet, et oui tu peux installer Gparted sur une clef usb bootable :)

Link to comment
Share on other sites

hello et merci pour ce tuto en FR!

j'ai appliqué cette méthode depuis sa sortie, cependant depuis j'ai tjs un problème pour télécharger les applis sur le market.

J'ai chaque fois un beau "echec du téléchargement"

Avez vous une idée d'où cela peux t il venir ? le reste fonctionne nickel, seul le market pose problème.

Merci!

Alex

Link to comment
Share on other sites

Bonjour !

Je vais bientôt faire cette manip', sauf si elle est la cause du problème d'Aluxzen... Je tiens à ajouter une petite chose sur ce tuto :

Mieux vaut passer la seconde partition de la carte externe en ext4. Pourquoi ? Parce que l'ext3 est dépassé et bien moins performant (notamment pour la gestion de fichiers lourds) que le ext4.

Pour en savoir plus sur la différence entre ext3 et ext4 : http://linuxfr.org/2009/06/14/25602.html

Je pense donc qu'il vaut mieux passer en ext4, non ?

Link to comment
Share on other sites

hello et merci pour ce tuto en FR!

j'ai appliqué cette méthode depuis sa sortie, cependant depuis j'ai tjs un problème pour télécharger les applis sur le market.

J'ai chaque fois un beau "echec du téléchargement"

Avez vous une idée d'où cela peux t il venir ? le reste fonctionne nickel, seul le market pose problème.

Merci!

Alex

J'ai trouvé la solution pour ça, vous aurez ce problème pour tous les firmwares "non officiel", pour corriger ça il faut changer une ligne dans /system/build.prop celle qui correspond au fingerprint du firmware. En gros il faut faire croire à google que votre firmware est officiel et les applis protégées réapparaitront. Faudrait peut être faire un autre tuto.

Sinon oui ça va plus vite en ext4 (cf 3ème screenshot Quadrant), je mettrai l'ext4 par défaut dans le tuto donc

Edited by FromtonRouge
Link to comment
Share on other sites

Pour l'histoire des classe de carte SD en faite elle ne concerne que les SDHC (soit celle de 4Go et +)

Le chiffre fit référance au vitesse de lecture ou d'écriture (genre 2 = 2Mo/s...)

Pour les µSD le maxi est classe 6 (bcp plus pour les SD classic)... pour ce tuto je déconseille quand même un classe 2 et une classe 4 (les plus courante) sont super... le mieux et celle que je vais recevoir demain c-à-d classe 6 !

Sinon petite question : Quand on monte sa sd sur le pc... du coup ca fait sauter les applis ? 9a pose pas de problème ?

Merci pour ce tuto je teste ça dès que je la recois !

Link to comment
Share on other sites

pour ce tuto je déconseille quand même un classe 2 et une classe 4 (les plus courante) sont super... le mieux et celle que je vais recevoir demain c-à-d classe 6 !

bullshit dude ! perso j'ai une sandisk 4gb classe 2 & une transcend 16gb classe 6 le fix fonctionne sans souci (ainsi que le reste).

Quand on monte sa sd sur le pc... du coup ca fait sauter les applis ? 9a pose pas de problème ?

il te suffit de démonter la sd avant rien de grave

Link to comment
Share on other sites

salut,

j'ai tout tester cela marche pas pour moi........................................................

drivers usb OK

Odin3 detect mon phone avec un id:com8 je coche le fix dans PDA je reboot le phone avec les 3 bouton tout nickel :mad:

la j'ai ça et ça bouge pas.

Link to comment
Share on other sites

Il y a un truc que je comprends pas : si on choisit d'installer les applis ds la mémoire principal (la rom), on ne devrait pas avoir ces problèmes de lenteurs non ? Puisque toutes les données sont stockées au même endroit...

En outre ce tweak n'est valable que pour les applis installées par l'utilisateur. Quid des applis natives ?

Link to comment
Share on other sites

moi j'ai vu sur d'autres forum des test speed des carte sd et c'est la class 4 qui va le mieux :) la class 6 est un peu plus bas.

c'est bizzard mes bon c'est comme ça ;)

personne pour m'aider a flasher avec ce fix mon galaxy s ? je suis en jf3 ça vient de ça?

Link to comment
Share on other sites

Ouais ca depend de la qualité de la sd si tu prends une no name class 6 ca peut être pire qu'une classe 4...

Mais normalement les class sont la pour ça !

Une fois n'est pas coutume !

Link to comment
Share on other sites

salut,

j'ai tout tester cela marche pas pour moi........................................................

drivers usb OK

Odin3 detect mon phone avec un id:com8 je coche le fix dans PDA je reboot le phone avec les 3 bouton tout nickel :mad:

la j'ai ça et ça bouge pas.

Link to comment
Share on other sites

Hello !

Tout d'abord un grand bravo pour la qualité de ce tutoriel, chapeau :P

Ensuite je suis étonné du résultat du benchmark Quadrant, qui, sortant des chiffres pareil ne semble pas être scientifiquement très en phase avec les performances réelles.

Par contre y a une idée qui me trotte, c'est d'essayer en faisant une image disque au format ext4 disposé sur la carte SD interne.

Puis ensuite, un petit (exemple factice)

dd if=/dev/zero of=/data/data.img bs=1M count=1000
mkfs.ext4 -F /data/data.img
mount -o loop -t ext4 /data/data.img /data/data

Si le problème est bien la piètre qualité du système de fichier Samsung RFS on aura probablement le même résultat voire des perfs plus élevées qu'en utilisant ce hack par carte SD "externe".

En effet, au lieu d'écrire directement dans le filesystem RFS, on écrit dans de l'ext4, qui se trouve écrit dans un gros fichier.

Ca fait un overhead supplémentaire mais 2 niveaux de buffers, et même si c'est pas conseillé pour bien réagir aux crashs, les perfs pourraient être intéressantes (si RFS est buggué)

Avec, comme avantages :

  • Ne pas nécessiter de carte SD
  • Ne pas rendre le téléphone inutilisable si on retire cette fameuse carte SD

Je reçois mon Galaxy S cette semaine, j'essaierai sûrement, en attendant, vous gênez pas pour tester ;)

Edited by curio
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




×
×
  • Create New...