Comment une partition / un fichier d'échange affectera-t-il le système?

20

Certains amis m'ont dit que leurs téléphones Android ont très peu (<100 Mo) de mémoire disponible pour les applications régulières, car le système d'exploitation et certains services non éliminables prennent la majeure partie de la RAM. Par exemple, un téléphone de 512 Mo n'affiche que 90 Mo de mémoire disponible, de sorte que seules 2 à 3 applications peuvent fonctionner en même temps.

Je me demande si la création d'une partition / d'un fichier d'échange aidera, mais j'ai vu des opinions partagées sur tout le Web et je ne sais pas quoi faire. Voici mes questions:

(1) Y aura-t-il de nombreuses pages de mémoire peu utilisées à échanger, en particulier dans le système d'exploitation et ces services irrécupérables?

(2) Comment l'échange de petites pages de mémoire peut-il nuire à la durée de vie de la mémoire flash? Le flash (ou la carte SD?) Corrige-t-il automatiquement l'usure?

(3) L'échange améliorera-t-il vraiment les performances lors de l'exécution de plusieurs applications? Je suppose que si la réponse à (1) est oui, elle le sera.

(4) L'écriture sur flash sera-t-elle trop lente et nuira-t-elle ainsi à la réactivité lors de l'échange?

(5) Est-il vrai qu'Android conserve le mécanisme d'échange du noyau Linux, donc tant qu'il y aura une partition / un fichier d'échange, il fera l'échange sans configuration supplémentaire?

Merci d'avoir lu.

à feuilles persistantes
la source

Réponses:

8

Je ne pense pas qu'il y aura beaucoup d'avantages à échanger pour Android, car le cycle de vie des applications Android est une forme beaucoup plus avancée d'échange.

(1) Y aura-t-il de nombreuses pages de mémoire peu utilisées à échanger, en particulier dans le système d'exploitation et ces services irrécupérables?

Vous ne pouvez pas échanger le noyau du système d'exploitation même dans Desktop Linux et Android tue déjà les services lorsqu'il a besoin de plus de RAM. Si le fournisseur de votre appareil persiste, vous devez avoir des services inutiles qui s'exécutent tout le temps, puis rootez votre appareil.

(2) Comment l'échange de petites pages de mémoire peut-il nuire à la durée de vie de la mémoire flash? Le flash (ou la carte SD?) Corrige-t-il automatiquement l'usure?

Même si la carte SD nivelle l'usure, le remplacement fera beaucoup de mal.

(3) L'échange améliorera-t-il vraiment les performances lors de l'exécution de plusieurs applications? Je suppose que si la réponse à (1) est oui, elle le sera.

Pas dans le contexte d'Android. Contrairement au système d'exploitation traditionnel qui continuera d'essayer d'intégrer les processus comme vous l'avez demandé, Android forcera à tuer les processus plus anciens et inutilisés et récupérera leur mémoire; cette destruction est rapide, car les applications enregistrent déjà leur état lorsque vous changez de tâche.

(4) L'écriture au flash sera-t-elle trop lente et nuira-t-elle ainsi à la réactivité lors de l'échange?

Probablement, probablement pas. Aura besoin de repères pour cela.

(5) Est-il vrai qu'Android conserve le mécanisme de permutation du noyau Linux, donc tant qu'il y aura une partition / un fichier de permutation, il effectuera la permutation sans configuration supplémentaire?

Je ne sais pas si Android conserve le mécanisme d'échange, mais même s'il le fait (ou si vous compilez votre propre noyau), vous aurez toujours besoin de certaines configurations. C'est généralement juste d'avoir un fstabfichier qui pointe vers le fichier d'échange et de faire swapon -a.

En fait, j'ai des raisons pour lesquelles l'échange peut nuire aux performances: il empêche le cycle de vie de l'application, le schéma de gestion de la mémoire d'Android, de fonctionner correctement.

Lie Ryan
la source
Merci d'avoir répondu. J'ai encore des questions. Sur un Samsung Fascinate, 10 services non éliminables occupent environ 110 Mo de mémoire. Il existe 22 autres services pouvant être supprimés en cours d'exécution, mais "Running Application" ne montre aucune application en cours d'exécution. C'est le téléphone de mon amie et je ne savais pas exactement ce qu'elle avait fait auparavant, mais il semble qu'il soit tout à fait possible que de nombreux services / applications puissent fonctionner en même temps. Je ne pense pas que tous ces services / applications en arrière-plan utilisent toutes les pages dont ils avaient besoin lorsqu'ils ont commencé. En outre, enregistrer l'état de l'application + recharger et redémarrer l'application + restaurer l'état serait également lent.
Evergreen
Une autre façon de penser à ce problème est la suivante: supposons que la durée de vie du flash ne soit pas un problème, Android devrait-il échanger? Sinon, quelle est la principale différence entre les applications Android et les applications de bureau qui rend l'échange inutile sur Android? Je ne pense pas que Android Life Cycle fonctionne pour les applications de bureau / serveur.
Evergreen
@evergreen: l'état de l'application est enregistré lorsque l'application passe en arrière-plan (par exemple, lorsque l'utilisateur appuie sur home pour changer de tâche). Plus tard, lorsqu'une autre application a besoin de mémoire, les applications plus anciennes ou les services d'arrière-plan seront tués de force (FK ne prend pratiquement pas de temps). Cela signifie que la suppression des tâches est immédiate, car l'état de l'application est déjà enregistré il y a longtemps. Lorsque vous rechargez une application qui est déjà en mémoire, vous obtiendrez le temps de rechargement le plus rapide; mais si l'application est déjà déchargée, alors l'application doit effectuer un rechargement complet (ce qui est la même situation avec l'échange)
Lie Ryan
@evergreen: si vous utilisez un tueur de tâches, vous forcerez les applications à se décharger et vous devrez toujours effectuer un rechargement complet, au lieu du rechargement rapide lorsque l'application reste en mémoire. Si vous utilisez un fichier / partition d'échange, les applications (plus anciennes) seront remplacées et la restauration prendra presque la même quantité de travail qu'une recharge complète. Sauf qu'avec le rechargement complet, le développeur de l'application a séparé les données persistantes des données temporaires et peut optimiser ce qu'il faut enregistrer et ce qu'il ne faut pas améliorer le stockage. Pendant la restauration du swap, vous ne laissez pas le développeur de l'application dire le tout et permutez tout.
Lie Ryan
@evergreen: Même en supposant que la durée de vie du flash n'est pas un problème, Android ne devrait pas faire de permutation, car le cycle de vie de l'application fait un meilleur travail. Le cycle de vie Android est conçu pour les environnements à mémoire limitée, dans un environnement de bureau et de serveur, vous avez une quantité gigantesque de mémoire, et les utilisateurs font beaucoup plus de multitâche, et ils ne s'attendent pas à ce que les programmes d'arrière-plan soient tués par le système d'exploitation. La faiblesse d'Android Life Cycle est qu'elle nécessite un support d'application. L'application doit être prête à être supprimée à tout moment et doit enregistrer l'état à des points prédéfinis. Une telle complexité est étrangère aux applications de bureau.
Lie Ryan
5

Il y a certainement un avantage à échanger, malgré ce que tout le monde sur Internet vous dira. Essayez-le et voyez par vous-même. Empiriquement, sur un G1 ou un autre téléphone à faible mémoire, l'échange permet au téléphone de fonctionner mieux et plus rapidement.

Oui, Android a intégré la "gestion des tâches" du cycle de vie, mais ce n'est pas très bon. Il tue régulièrement les processus lorsqu'il manque de mémoire, et les applications sont censées enregistrer leur état à l'aide de " Bundles " de sorte que lorsque vous les redémarrez, elles redémarrent dans le même état où elles étaient en dernier.

Une fois qu'Android détermine qu'il doit supprimer un processus, il le fait brutalement, le tue simplement de force. Le noyau peut alors immédiatement récupérer toutes les ressources nécessaires au processus, sans compter que cette application est bien écrite et répond à une demande polie de sortie. Le fait de permettre au noyau de récupérer immédiatement les ressources de l'application permet d'éviter beaucoup plus les situations de mémoire insuffisante.

Ce serait formidable si cela fonctionnait réellement, et ce serait mieux qu'un échange aveugle. Mais les applications ne sauvegardent pas vraiment leur état; ils enregistrent juste la quantité minimale d'informations pour revenir à cet état. (Et certaines applications ne prennent même pas la peine de le faire.) Revenir à cet état prend du temps. Étant donné que le swap enregistre en fait tout l'état de l'application, qui n'a qu'à être rechargé, il permet de basculer entre les applications beaucoup plus rapidement.

Si vous basculez vers une autre application à partir du navigateur, par exemple, le navigateur est presque toujours tué, puis il doit recharger la page entière d'Internet lorsque vous y revenez. Cela prend beaucoup plus de temps que le rechargement de l'état à partir du swap, gaspille votre argent si vous êtes sur un plan de données et provoque des problèmes d'état lorsque la page Web est dynamique.

De nombreuses applications prennent beaucoup plus de temps à démarrer qu'elles ne le devraient, ou ne reviennent pas au même état au redémarrage, donc les échanger fonctionne mieux.

Je suppose que les gens qui sont satisfaits du système de stock utilisent leurs téléphones différemment.

Dois-je utiliser une partition de swap avec Cyanogenmod?

endolith
la source
Si vous la laissez au cycle de vie, l'application décidera de mettre en cache des données supplémentaires pour améliorer les performances (par exemple, les pages Web chargées). Si vous utilisez le swap, c'est la décision du système d'exploitation, mais le système d'exploitation n'est pas le mieux placé pour déterminer quoi enregistrer et quoi ne pas enregistrer pour optimiser les performances, il doit donc tout sauvegarder et restaurer. Le navigateur ne retélécharge pas les pages d'Internet si vous changez de tâche, j'ai souvent ouvert le navigateur, basculant vers un tas de jeux lourds et d'autres activités, et reviens au navigateur avec ma dernière page avec tout en place chargé instantanément.
Lie Ryan
Droite. Aucun des deux systèmes n'est optimal, mais l'échange est préférable pour la plupart des applications. Le navigateur ne recharge la page que si elle est supprimée avant de la rouvrir. Sur un téléphone à faible mémoire, il sera presque toujours tué.
endolith
@LieRyan - "retour au navigateur avec ma dernière page avec tout en place chargé instantanément" votre navigateur rétablit-il la position de défilement sur les pages ouvertes après le rechargement? C'est ce que Chrome ne fait pas (bien que j'aime beaucoup ce navigateur), ce qui est très regrettable lorsque vous avez arrêté de lire au milieu d'une page Web plutôt connectée avant de passer, disons, prendre un appel ...
Kerim
2

J'ai un Spice mi-435 (vendu uniquement en Inde) qui a une RAM de seulement 340M. Bon sang, les fichiers d'échange aident beaucoup. Mon téléphone exécute ICS sur une RAM si faible et a définitivement entré de nombreux états de mémoire insuffisants et là, le fichier d'échange aide beaucoup. Tous les états de l'application sont transférés pour permuter lorsqu'ils ne sont pas en cours d'utilisation. Cela donne à mon téléphone de la place pour plus d'applications et d'applications gourmandes en RAM pour fonctionner correctement avec beaucoup moins de décalage qu'auparavant. Bien qu'il y ait un problème lorsque j'ouvre l'application que j'utilisais auparavant. Il faut du temps pour charger son état car la SD est beaucoup plus lente que la RAM haute vitesse à bord. Mais, l'option d'échange est meilleure pour moins de RAM. Je recommanderais d'échanger la partition pour de la RAM inférieure à 512M mais pas pour plus de 512M.

J'espère que c'est utile.

déroute sambit
la source
1

Le fichier d'échange aide même sur les systèmes avec plus de RAM. Ma tablette quad core 1 Go de RAM 7 pouces reçoit un coup de pouce multi-tâches majeur de mandrin dans un swap de 2 Go, sur la carte micro sd uhs-1. Et bien sûr, le prix de la mémoire baisse rapidement, et même à écriture constante, le nand flash est censé durer des années.

Je suis fondamentalement d'avis, parce que la différence de performances est si radicale, que quiconque avec moins d'une très grande quantité de RAM devrait probablement le faire. En fait, cela devrait probablement être une option standard dans Android (avec des caches d'applications plus importants et un cache Internet de taille appropriée).

Je veux dire que vous avez un micro sd de 64-128 Go (uhs-1), ou même le uhs-2 qui est sorti cette année, plus un nand interne de 16-64gb, souvent un "nand" rapide, qui est une sorte de ssd primitif ou même SSD, comme ils sont utilisés sur les ardoises Windows - vous ne remplissez pas exactement tout cet espace à grande vitesse avec beaucoup. La vitesse n'entre vraiment en jeu qu'avec la vidéo ou le chargement d'applications en mémoire - ce qui est exactement l'usage ici.

Bien sûr, idéalement, les fabricants devraient se concentrer davantage sur la RAM que sur la résolution ou les cœurs supplémentaires, car la vitesse du système bénéficie clairement beaucoup plus de RAM - et ils devraient probablement également augmenter la vitesse du stockage interne (comme passer à des systèmes de type SSD complets). , ou au minimum non rapide. Mais en attendant, alors que les résolutions élevées ont tendance à provoquer une sorte de déficit de RAM dans tous les appareils, un fichier d'échange et la mise en cache sur un sd externe raisonnablement accrocheur ont beaucoup de sens.

En effet, il serait agréable de voir que certains navigateurs conservent également une mise en cache plus complète, la plupart des navigateurs sont soit lents, soit faibles, rarement rapides et complets - et c'est en partie parce que l'espace pour le cache de l'application sur le disque interne est minuscule. Ils sont conçus pour fonctionner dans un environnement à faible mémoire et stockage, et toute cette histoire est en train de changer. Même si le bélier n'est pas à la hauteur autant qu'il le devrait, le stockage l'est certainement, et il peut être sacrément rapide selon les normes UHS-1 (ou le uhs-2 sorti cette année), même si ce n'est pas le cas " rapide "ou ssd.

Et le coût de la mémoire externe, c'est vraiment des arachides, même pour une capacité plus élevée uhs-1. Au moins un 64 Go uhs-1 est parfaitement abordable (50 dollars où je suis, mais ce serait moins USD), beaucoup moins cher que l'appareil, et 32 ​​Go et moins est fondamentalement quelques tenners.

Beaucoup de leçons à tirer du bureau, en particulier maintenant que les spécifications deviennent plus élevées - le lien de performance le plus lent se charge du stockage au ram. Plus vous pouvez faire pour atténuer cela, mieux c'est.

Jamie
la source