Verwendung der Swap-Größe beim Partitionieren?

Ich habe gerade mein Telefon (Android 2.3.6) gerootet und die SD-Karte mit CWM recovery. Beim Partitionieren ist mir aufgefallen , dass verschiedene Blogs ( xda-Entwickler ) die Verwendung von as empfohlen swap sizehaben und während ich danach gesucht habe . Was nützt es? Warum wird es empfohlen ?0Mswap size0M

Antworten (4)

Hauptgründe für die No-Swap-Empfehlungen sind die grundlegende Nutzlosigkeit von Swap für die meisten Geräte, Leistungsgründe und die Langlebigkeit der Geräte.

Wie Liam erwähnt, haben moderne Geräte keinen Mangel an RAM (sogar mein altes Wildfire S mit geringer Leistung hat so viel RAM wie mein vorheriger Desktop .) Und dieser RAM wird vom modernen Android-System ziemlich gut verwaltet, was einen Austausch weitgehend sinnlos macht.

Obwohl Flash weitaus besser ist als Platten mit sich drehendem Rost, ist es immer noch um Größenordnungen langsamer als RAM, daher sollten Sie aus Leistungsgründen nicht auf Flash heruntersteigen, wenn Sie es überhaupt vermeiden können.

Darüber hinaus hat Flash-Speicher eine Begrenzung, wie oft Sie ihn löschen und neu beschreiben können. Obwohl diese Zyklusgrenze normalerweise bei Tausenden oder Zehntausenden liegt, bedeutet dies in Kombination mit modernen Wear-Leveling-Systemen, dass Sie die Grenze wahrscheinlich nicht innerhalb der Nutzungsdauer des Geräts erreichen, aber wenn Sie es als Swap verwenden, mit Unmengen von klitzekleinen Schreibvorgängen, Sie werden diese Zyklen unnötig durchkauen und könnten mit der Zeit tatsächlich an diese Grenzen stoßen.

Ihr vorheriger Desktop hatte nur 512 MB RAM? Haben Sie seit den 90er Jahren einen Desktop-Computer?
@intuited Ich habe meinen vorherigen Desktop im Jahr 2001 erstellt. 512 war damals eine ziemliche Menge. Mein aktueller Desktop begann mit 2 GB, wurde dann auf 4 aktualisiert und hat jetzt 12.

Die Verwendung einer Auslagerungsdatei spart also Speicherplatz (RAM) auf Speicher (Festplatte/SD-Karte).

Die Empfehlung von 0 MB für die Dateigröße ist, weil sie normalerweise nicht benötigt wird. Android kümmert sich anders um die Speicherverwaltung als Auslagerungsdateien.

Hintergrund:

Eine Auslagerungsdatei wird traditionell verwendet, um zu speichern, was sich normalerweise im Speicher befindet, wenn der Speicher knapp wird. Dadurch kann es bei Bedarf wieder in den Speicher geschaltet werden.

Um aus dem Zero Credibility Blog zu zitieren

Android, obwohl es unter der Decke ein ziemlich typisches (aber schlankes) Linux ist, hat seinen eigenen Mechanismus zum Umgang mit Bedingungen mit geringem Speicher. Es beendet die Anwendung, gibt ihr aber zunächst die Möglichkeit, ihren Zustand beizubehalten (über eine Reihe von Rückrufen). Beispielsweise kann eine Kartenanwendung einen Breiten- und Längengrad beibehalten, bevor sie beendet wird. Wenn Sie erneut auf die Anwendung zugreifen, wird der Standort zurückgegeben, sodass es so aussieht, als ob die App die ganze Zeit ausgeführt wurde. Tatsächlich wurde die App komplett neu gestartet.

(Hervorhebung von mir)

Das Obige beschreibt, wie ich gesehen habe, dass Anwendungen nach dem Wechsel von Aufgabe zu Aufgabe bestehen bleiben.

Es ist nicht erforderlich, den Inhalt des Speichers zu speichern, da Android nur die aktuellen Daten der App speichert und die App beendet.

Kann jemand bitte die Ablehnung erklären, um die Antwort zu verbessern?
Ich glaube nicht, dass es die Frage vollständig beantwortet ...
Danke für die Antwort. Aber auf der Suche nach einem klareren.

Da die anderen Antworten bereits die meisten Fakten abdecken, nur eine kleine Ergänzung: Ich habe die App Swapper für Root-Benutzer bereits als Beispiel in Liams Antwort bearbeitet. Und die Antwort von Compro01 erwähnte bereits die Gefahr, den Flash-Speicher Ihrer SD-Karte zu verschleißen. Jetzt bringen wir beides zusammen:

Wenn Sie die Swapper- App verwenden, um Ihren Swap zu handhaben , wird aus genau diesen Gründen empfohlen, keine Swap-Partition , sondern eine Swap-Datei zu verwenden. Diese Auslagerungsdatei wird dann jedes Mal, wenn Swap aktiviert wird, an einem anderen Ort des Flash-Speichers abgelegt, wodurch vermieden wird, dass immer dieselben Blöcke geschrieben / gelöscht werden, und somit die Lebensdauer Ihres Flash-Speichers verlängert wird.

Also beide vergleichen:

  • Swap-Partition: schneller, verbraucht aber auch den Flash-Speicher schneller.
  • Auslagerungsdatei: Etwas langsamer, verbraucht aber den Flash-Speicher nicht so schnell

Vor diesem Hintergrund wird klar, warum a) 0M (dh keine Swap-Partition) empfohlen wird und b) überhaupt eine Swap-Partition angeboten wird (für diejenigen, denen es egal ist, neue Karten zu kaufen, aber das gewisse Extra an Geschwindigkeit wollen).

Swap-Partition vs. Swap-Datei würde keinen Unterschied machen. Wear Leveling wird vom Flash-Controller gehandhabt, nicht von einem Teil der Firmware oder des Android-Systems. Das Layout der Partitionen hat keine feste Beziehung zum physischen Ort von irgendetwas auf dem Flash-Chip.
Dieser Teil meiner Erklärung stammt aus den Swapper- Dokumenten. Da ich auf meinen Android-Geräten nie Swap verwendet habe, habe ich nicht tiefer gegraben. Aber ich bin irritiert, dass das Partitionslayout nicht an Blöcke auf dem Medium gebunden sein sollte. Bist du dir sicher? "Wie funktioniert das dann" wäre eine andere Frage - aber vielleicht könntest du wenigstens eine Quelle nennen?
Swapper repräsentiert etwas vom alten Weg der Dinge. Früh in der Geschichte von Android verwendeten viele Geräte rohe NAND-Flash-Chips für ihre Speicherung und verwendeten spezielle Dateisysteme wie YAFFS, um das Wear-Leveling zu handhaben. Hier kommt die Frage zwischen Datei und Partition ins Spiel, da eine Auslagerungsdatei das spezielle Wear-Leveling-Dateisystem verwenden würde, im Gegensatz zu einer Auslagerungspartition mit statischer Zuordnung. Dies ist nicht mehr relevant, da alle aktuellen Geräte stattdessen eMMC für die Speicherung anstelle von rohem Flash verwenden. eMMC hat den Controller in das Paket integriert und ist für das Betriebssystem und alles andere unsichtbar.
Klingt vernünftig. „eMMC“ steht für „emulated MMC“ – gilt das also nur für den internen Speicher oder auch für (neuere) SD-Karten? Könnte in diesem Zusammenhang relevant sein.
Nein, eMMC ist eingebettete MMC. Es ist im Grunde ein Flash-Chip, bei dem der Controller und der Cache direkt in das IC-Gehäuse eingebettet sind. Es ist nicht wirklich eine MMC, da es ein Chip ist, keine Karte, aber auf Softwareebene ist es dasselbe wie eine MMC. Dies ist der interne Speicher in praktisch allen modernen Android-Geräten. SD-Karten sind eine Erweiterung der MMC-Spezifikation und fügen vor allem DRM-Fähigkeit hinzu. Auch hier wird alles vom Controller gehandhabt. Von außerhalb der Karte/des Chips ist das ganze Wear-Leveling-Zeug unsichtbar. Wenn Sie das Paket nicht öffnen, würden Sie nie wissen, dass Block 1 und 2 nicht nahe beieinander liegen.
Vielen Dank für die Klarstellung! Kurz gesagt, es gilt für beide – und das gesamte Konzept von „Datei versus Partition“ ist „veraltet“, da alle Blockzuordnungen (auch für Partitionen) nicht mehr festgelegt sind, sondern vom Controller gehandhabt werden. Wenn diese Zusammenfassung korrekt ist (bitte bestätigen), werde ich meine Antwort entsprechend aktualisieren (damit niemand alle unsere Kommentare durchgehen muss). ABER: laut wiki.linaro.org/Flash%20memory ist dies nicht der Fall: Partitionen werden weiter in Blöcke unterteilt -- so ist es, wie ich dachte. Kannst du eine Quelle für deine Erklärung nennen?
Eine Partition besteht zwar aus Blöcken, aber es handelt sich um geräteseitige Blöcke, nicht um feste physische Blöcke auf dem Flash-Chip. Blöcke auf einem verwalteten Flash-Chip sind aus Sicht des Betriebssystems genau die gleichen wie Sektoren auf einer Festplatte. Ich habe keine leicht verfügbare Quelle, da ich mich an diese Dinge aus meinen Computerarchitektur- und Schnittstellenkursen am College erinnere.

Swap ist im Grunde virtuelles RAM, das vom Linux-Kernel verwendet wird.

Swap in Android wurde verwendet, wenn Geräte über sehr begrenzten RAM verfügten (ich habe es mit meinem LG Optimus GT540 verwendet), um die für das Android-Betriebssystem verfügbare RAM-Menge zu erhöhen.

Android beendet Apps, wenn der Arbeitsspeicher knapp wird - und ist sehr gut darin, dies effizient zu tun, aber auf Geräten mit wenig RAM haben die Leute möglicherweise gesehen, wie ihre Startbildschirm-Apps beendet wurden, und müssen daher eine Weile warten, bis sie zu ihren Startbildschirmen gelangen.

Swap kann entweder über eine Partition oder eine Datei gemountet werden – hauptsächlich auf einem externen (oder internen) Speichergerät. Swap wird normalerweise über die sogenannten Init-Skripte im /etc/init.dOrdner des Geräts aktiviert, um Swap beim Gerätestart zu mounten/zu aktivieren.

Linux-Desktops verwenden eine Partition für den Austausch, und der Benutzer wird aufgefordert, diese während des Installationsvorgangs zu erstellen.

Eine Datei wird normalerweise auf der SD-Karte oder dem Speichermedium gespeichert. Die Auslagerungsdatei auf Android wird normalerweise von einer App gemountet (und erstellt) (z . B. Swapper für Root-Benutzer ).

Die meisten neueren Geräte sehen keinen Vorteil in der Verwendung von Swap - da sie normalerweise so viel RAM wie ein Desktop-Computer haben (mein SGS2 hat 1 GB!) und daher nicht von mehr virtuellem RAM profitieren würden.

Leider kann die Verwendung von Swap ihren Preis haben – selbst auf Geräten mit wenig RAM, da das Betriebssystem Zeit für das Schreiben auf die SD-Karte aufwenden muss, die normalerweise langsame Lese-/Schreibgeschwindigkeiten hätte. Als solches wird es heutzutage überhaupt nicht mehr verwendet, es sei denn, ein Gerät hat eine obszön kleine Menge an RAM.

Darüber hinaus kann sich die Verwendung von Swap negativ auf die Lebensdauer Ihres Speichergeräts auswirken und sollte mit Vorsicht verwendet werden. Wenn jemand, der liest , Swap verwenden muss (und ich würde davon abraten), dann verwenden Sie eine Datei mit einer App, da der Speicherort der Swap-Datei variiert, um die Lebensdauer der SD-Karte zu maximieren.

hmm..ziemlich befriedigend.
Swap wird in Android nicht benötigt - schlicht und einfach :) -1 von mir, die Antwort von Compro01 ist die beste und fasst es genau zusammen!