SWAP statt irgendwelcher RAM-Optimierungen?

  • 106 Antworten
  • Neuester Beitrag
Diskutiere SWAP statt irgendwelcher RAM-Optimierungen? im Root / Hacking / Modding für HANNspree HANNSpad (SN10T1) im Bereich HANNspree HANNSpad (SN10T1) Forum.
P

PatrickFries

Neues Mitglied
SHORTY-NR1 schrieb:
Es gibt auch noch einen "Compcahe" die man einstellen kann.

Leider weis ich nicht wie man das aktivieren kann. Habe unterschiedliche beiträge dazu gelesen, das es Kernel oder vom CPU abhängig sein soll.

Vielleicht kommt ja einer dahinter und kann es mal testen, vielleicht bringt es ja was.

Hab hier noch was. Hat einer von euch CM7 drauf.
Unter "CyanogenMod Einstellungen» Performance-Einstellungen »Compcache" .

Bringt es was wenn man es aktiviert oder ist es garnicht möglich?
Auf folgender Seite wird gut beschrieben, was es mit dem Compcache auf sich hat: https://www.android-hilfe.de/forum/root-hacking-modding-fuer-t-mobile-g1.31/guide-swap-und-compcache-fuer-cyanogenmod.8868.html

Das hört sich für mich jetzt erst mal nicht so gut an, weil dadurch ja wieder einiges an sonst "richtig" nutzbarem Arbeitsspeicher für die "Compcache-Partition" verloren geht und das Betriebssystem dann noch schneller Anwendungen aus dem Arbeitsspeicher kegeln muss. Aber das ist jetzt nur so aus dem Bauch raus. Sollte die Sache mit der SWAP-Partition nicht oder nicht zufriedenstellend funktionieren könnte man sich Compcache ja noch als Alternative ansehen.
 
M

marcero

Erfahrenes Mitglied
Ich hatte auf dem HTC Hero ein Custom Rom und da wurde glaube ich empfohlen compache zu deaktivieren weils damit zäher lief
 
S

SHORTY-NR1

Erfahrenes Mitglied
PatrickFries schrieb:
Ich finde das hört sich gut an!
Da auf dem Ram wesendlich schneller zugegriffen werden kann als auf Swap auf der internen oder externen SC-Card.

Man kann den HTC-Hero nicht mit dem Hannspad vergleichen, da hier die Hardware ja unterschiedlich ist (der hanns hat einen dualcore und vielleicht auch einen schneller Ram zugriff).

Leider habe ich Gtabcomb drauf, und kann es daher nicht testen. Oder weiss einer wie man das auf Honeycomb aktiviert!

Nachtrag:

Ich glaube als ich das CM7 drauf hatte, war Compcache schon aktive.
Ich habe den Compcache auf 64MB eingestellt. Hatte das gefühl, das es wesendlich besser und flüssige lief!
 
Zuletzt bearbeitet:
P

PatrickFries

Neues Mitglied
Nachdem ich jetzt den ganzen Tag mit der Sache zugebracht habe gibts gute und schlechte Nachrichten für euch. Da ich denke, dass sich für die schlechten Nachrichten eine Lösung finden wird, fange ich hier mal mit den guten Nachrichten an.

Den Kernel mit SWAP-Unterstützung zu kompilieren hat sich als gar nicht so schwierig herausgestellt. Ich habe auf meiner externen SD-Karte eine SWAP-Partition von 128MB erstellt und eingebunden. Danach gehören all die störenden Dinge, die ich einem vorherigen Post schon mal geschrieben hatte, der Vergangenheit an. Ich habe beispielsweise Opera gestartet und da 7 größere Webseiten in verschiedenen Tabs geöffnet, danach hab ich noch die IMDB-Anwendung gestartet (schön viele Grafiken direkt auf der Startseite) und zu guter letzt noch Angry Birds. Dann hab ich zwei Level Angry Birds gezockt und hab zum Opera gewechselt. Ohne den SWAP hätte der jetzt alle Webseiten nochmal neu laden müssen. Jetzt mit SWAP ist alles noch da und ich muss sagen, ich habe keine Verzögerungen beim Wechsel von Angry Birds zu Opera gemerkt. Ich habe aber auch extra beim kauf der SD-Karte darauf geachtet, dass es eine Class 10 ist. Vielleicht würde es mit einer langsameren SD-Karte hier anders aussehen. Nachdem ich im Opera bissel auf den Webseiten rumgesurft hatte, habe ich dann wieder zu Angry Birds gewechselt. Ohne den SWAP hatte das Spiel früher dann immer den Spielstand "vergessen" und ich kam wieder auf den Anfangsbildschrim. Mit dem SWAP geht es jetzt genau an der Stelle weiter, an der ich das Spiel zuvor beim Wechsel zu Opera verlassen hatte. Also alles genau so, wie ich es mir vorher im positivsten Fall vorgestellt hatte. Also bis hier hin absolut Daumen hoch!

Jetzt kommt jedoch das große ABER: Sobald sich der Bildschirm des Hannsis ausschaltet (sei es durch manuelles Betätigen des Power-Tasters oder automatisch nach einer bestimmten Zeit der Inaktivität) und das Hannsi in den "Standby" wechselt, lässt es sich relativ häufig nicht mehr aufwecken. Es passiert nicht immer, aber deutlich häufiger als mit dem herkömmlichen Kernel von AB73. Das ganze passiert auch dann, wenn die SWAP-Partition gar nicht aktiviert ist. Ich verwende die Lite-Version von FlashBack 8.1 aus dem Thread https://www.android-hilfe.de/forum/custom-roms-fuer-hannspree-hannspad-sn10t1.482/flashback_8-1_hannspad_lite_0-1-update-1-09-2011-diskussionen-fragen-antworten.143537.html. Ich hab schon mal irgendwo gelesen, dass mache das Problem auch direkt bei Verwendung des herkömmlichen Kernels haben. Hat hier jemand eine Idee, woran das liegen könnte?


Wer das ganze selbst mal testen will sollte dazu wie folgt vorgehen:

1. Externe SD-Karte so partitionieren, dass ihr eine SWAP-Partition habt.
Da ich keinen Kartenleser für meinen PC habe bin ich nach folgender Anleitung vorgegangen: How to manually partition your SD card for Android Apps2SD | Android and Me, habe dabei allerdings keine ext-Partition angelegt, weil die ja keiner braucht. Ich denke mal, wenn ihr einen Kartenleser am PC habt sollte das ganze mit einer entsprechenden Linux-Distribution einfacher gehen. Aber wenn man es nach der zuvor erwähnten Anleitung macht hat man direkt auch den "Namen" (bei mir /dev/block/mmcblk2) der SD-Karte und der erstellten SWAP-Partition (bei mir /dev/block/mmcblk2p2), der später für das Aktivieren der SWAP-Partition benötigt wird.

2. Den von mir mit aktivierter SWAP-Unterstützung kompilierten Kernel flashen.
Den Kernel könnt ihr unter Hannspad - Wuala herunterladen. Geflasht wird er wie gewohnt über das Recovery (Ich habe vorher noch den Dalvik-Cache bereinigt, weiß allerdings nicht, ob es nötig gewesen wäre) Soweit ich das sehen kann müsste es sich um genau den gleichen Funktionsumfang wie bei der aktuellsten offiziellen "AB-Veröffentlichung" handeln, nur halt mit aktivierter SWAP-Unterstützung. Der letzte Commit-Kommentar des Quelltext-Repositories ist vom Abend des 06.09.2011 und an genau diesem Datum hat AB auch das letzte "Nightly Build" seines Kernels veröffentlicht.

3. Erstes Aktivieren der SWAP-Partition.
Wenn euer Hannsi mit dem neuen Kernel gebootet ist, dann weiß es jetzt zwar, was eine SWAP-Partition ist, allerdings muss man ihm noch mitteilen, wo die SWAP-Partition zu finden ist. Hierzu dient der Befehl "swapon" gefolgt von dem "Namen" der SWAP-Partition. Ich muss bei meinem Hannsi also über die Konsole den Befehl
Code:
swapon /dev/block/mmcblk2p2
eingeben, damit die SWAP-Partition aktiviert wird. Um zu prüfen, ob das ganze geklappt hat, kann man beispielsweise den Befehl "free" absetzen. Die Ausgabe sieht bei mir mit meiner 128MB SWAP-Partition dann wie folgt aus:
Code:
              total         used         free       shared      buffers
  Mem:       446772       442176         4596            0        17032
[B] Swap:       125440         2456       122984[/B]
Total:       572212       444632       127580
In der Zeile "SWAP..." kann man also sehen, dass die SWAP-Partition verwendet wird.

4. Automatisches Aktivieren der SWAP-Partition bei jedem Neustart.
Das blöde ist jetzt nur, dass sich diese Einstellung nicht über einen Neustart hinweg hält, sondern nach jedem Neustart erneut gesetzt werden muss. Im einfachsten Fall kann man das natürlich immer von Hand machen, aber wer will das schon ;) Ich hab mal bissel nach Automatisierungsmöglichkeiten recherchiert und mich dann schließlich für eine App namens Scrip Manager entschieden, mit der man beliebige Skripte (die auch auf der SD-Karte liegen dürfen) beim Systemstart ausführen lassen kann. Hierzu muss man einfach irgendwo ein kleines Skript ablegen, das den swapon-Befehl aus Punkt 3 enthält, dann den Script Manager öffnen, zu dem Skript navigieren, das Skript "anklicken" und auf der sich öffnenden Dialogseite "Run as root" und "Run on boot" auswählen. Danach auf den Save-Button klicken. Hatte zu erst bissel Zweifel, aber so funktioniert es wunderbar.

5. Sich über das Resultat freuen, solange das Hannsi nicht in den Standby wechselt.

Wenn jemand Verbesserungsvorschläge hat, besonders zu der Sache mit dem Standby-Problem und zu Punkt 5, dann immer her damit. Ich weiß zu Punkt 5, dass man Skripte wohl irgendwie fest in das System eintragen kann (init.d im system-image), dass sie zu bestimmten Zeitpunkten beim Systemstart ausgeführt werden. Allerdings muss es sich dabei um einen Zeitpunkt handeln, zu dem die externe SD-Karte schon verfügbar ist und das scheint wohl mit Problemen verbunden zu sein. Da es für mich mit dem Script Manager wunderbar geklappt hat, habe ich aber heute Abend keinen Bock mehr, da weiter nachzuforschen. Vielleicht kennt sich ja hier jemand aus. Mir reichts für heute ;)

Würde mich freuen, wenn auch jemand mit GtabComb oder nem anderen FlashBack mal ausprobieren könnte. Vielleicht liegt das Standby-Problem ja an meiner Lite-FlashBack-Version (wobei das wohl ehr unwahrscheinlich sein dürfte, weil es ja mit dem alten Kernel alles geklappt hat).
 
4dro1d

4dro1d

Lexikon
Wahnsinn! Danke. Und dann auch noch so übersichtlich zusammengeschrieben. Werde es morgen testen, aber hört sich aufjedenfall gut an...
 
M

marcero

Erfahrenes Mitglied
Ich glaub scripts unter /system/etc/ werden beim systemstart automatisch geladen. Da soll man ja auch das Optimierungsscript hintun, was im Forum kursiert.
 
M

marcero

Erfahrenes Mitglied
Gibt es ne Möglichkeit den Namen der sd karte und deren partition auf dem tab rauszufinden?

Edit: ja, gibt es: im android terminal emulator "ls /dev/block/mmc*" eingeben
 
Zuletzt bearbeitet:
M

marcero

Erfahrenes Mitglied
Ich bekomme jedesmal wenn ich swapon mache: invalid argument ...
 
P

PatrickFries

Neues Mitglied
marcero schrieb:
Gibt es ne Möglichkeit den Namen der sd karte und deren partition auf dem tab rauszufinden?

Edit: ja, gibt es: im android terminal emulator "ls /dev/block/mmc*" eingeben
Ja genau, dann bekommst du alle "Laufwerke" mit ihren Partitionen angezeigt. Eine der mmcblkXpY muss es dann sein. Du kannst es ruhig mit allen probieren. Bei den Partitionen, die nicht die SWAP-Partition sind, bekommst du dann die von dir bereits beschriebene Fehlermeldung "Invalid Argument". Wenn du keine Meldung beim Absetzen des Befehls erhälst, dann hast du die richtige Partition erwischt.

Hat es damit jetzt bei dir funktioniert?
 
M

marcero

Erfahrenes Mitglied
Nein -.-'

hatte keine Partition gefunden bei der es ging und hab einfach mkswap auf eine angewendet, weil ich dachte irgendwas ist schief gelaufen. Jetzt hab ich glaube ich meine /data/ Partition geschrottet, weil ichs auf die interne angewendet habe. :blushing:

Bin gerade wieder alles am herstellen, aber irgendwie findet er die Swap-Partition nicht.
Auf meiner SD sind drei partitionen: ext3, fat32 und linux-swap. Aber irgendwie komm ich an die nicht dran. Muss man irgendwas in die vold.fstab hinzufügen?
 
P

PatrickFries

Neues Mitglied
marcero schrieb:
Nein -.-'

hatte keine Partition gefunden bei der es ging und hab einfach mkswap auf eine angewendet, weil ich dachte irgendwas ist schief gelaufen. Jetzt hab ich glaube ich meine /data/ Partition geschrottet, weil ichs auf die interne angewendet habe. :blushing:

Bin gerade wieder alles am herstellen, aber irgendwie findet er die Swap-Partition nicht.
Auf meiner SD sind drei partitionen: ext3, fat32 und linux-swap. Aber irgendwie komm ich an die nicht dran. Muss man irgendwas in die vold.fstab hinzufügen?
Ich musste weder mkswap verwenden noch irgendwas in die vold.fstab eintragen. Bist du dir sicher, dass du deine externe SD-Karte auch wirklich richtig partitioniert hast?
 
P

PatrickFries

Neues Mitglied
Also auf der Suche nach der SWAP-Partition könntest du wie folgt vorgehen:

Wenn du den Befehl "df" absetzt, dann erhälst du eine Auflistung aller gemounteten Dateisysteme. Bei mir sieht das beispielsweise so aus:
Code:
-sh-4.1# df
Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                   223384         0    223384   0% /dev
tmpfs                   223384         0    223384   0% /mnt/asec
/dev/block/mtdblock3    253696    200012     53684  79% /system
/dev/block/mtdblock7     32768      1156     31612   4% /logodata
[B][COLOR="Red"]/dev/block/mmcblk3p2    937110    362480    524630  41% /data[/COLOR][/B]
/dev/block/mtdblock4    166272      1160    165112   1% /cache
/dev/block/mtdblock0     16384      1156     15228   7% /misc
/dev/block/vold/179:17
                       7690024        12   7690012   0% /mnt/external_sd
/dev/block/vold/179:25
                      14661000   4345768  10315232  30% /mnt/sdcard
/dev/block/vold/179:25
                      14661000   4345768  10315232  30% /mnt/secure/asec
/dev/block/dm-0           3124      1584      1540  51% /mnt/asec/de.tvspielfilm-1
/dev/block/dm-1           8312      6268      2044  75% /mnt/asec/org.inodes.gus.scummvm-1
/dev/block/dm-2          53960     51480      2480  95% /mnt/asec/com.com2us.thirdblade.normal.freefull.google.global.android.common-1
Wichtig ist da jetzt die fette rote Zeile, denn die weist darauf hin, dass es sich bei /dev/block/mmcblk3 um den internen Speicher handelt. Also kann die SWAP-Partition, wenn sie sich auf der externen SD-Karte befindet, schon mal nicht eine /dev/block/mmcblk3pX sein.

Setzt man dann ein "ls /dev/block/mmcblk?p? -al" ab, erhält man alle Partitionen, die prinzipiell in Frage kommen. Die Ausgabe sieht auf meinem Hannsi so aus:
Code:
brw-------    1 0        0         179,  17 Oct  3 08:17 /dev/block/mmcblk2p1
brw-------    1 0        0         179,  18 Oct  3 08:17 /dev/block/mmcblk2p2
brw-------    1 0        0         179,  25 Oct  3 08:17 /dev/block/mmcblk3p1
brw-------    1 0        0         179,  26 Oct  3 08:17 /dev/block/mmcblk3p2
Da wir ja gerade schon alles, das mit /dev/block/mmcblk3 beginnt ausgeschlossen haben, muss es eine der /dev/block/mmcblk2pY sein. Die SWAP-Partition ist bei mir die zweite auf der externen SD-Karte, daher verweist /dev/block/mmcblk2p2 auf meine SWAP-Partition. Wenn du auf deiner externen SD-Karte drei Partitionen hast und SWAP die letzte ist, dann müsstest du einen Eintrag /dev/block/mmcblk2p3 haben und der müsste auf die SWAP-Partition verweisen.
 
P

PatrickFries

Neues Mitglied
SHORTY-NR1 schrieb:
Ich finde das hört sich gut an!
Da auf dem Ram wesendlich schneller zugegriffen werden kann als auf Swap auf der internen oder externen SC-Card.

Man kann den HTC-Hero nicht mit dem Hannspad vergleichen, da hier die Hardware ja unterschiedlich ist (der hanns hat einen dualcore und vielleicht auch einen schneller Ram zugriff).

Leider habe ich Gtabcomb drauf, und kann es daher nicht testen. Oder weiss einer wie man das auf Honeycomb aktiviert!

Nachtrag:

Ich glaube als ich das CM7 drauf hatte, war Compcache schon aktive.
Ich habe den Compcache auf 64MB eingestellt. Hatte das gefühl, das es wesendlich besser und flüssige lief!
Da die Sache mit dem SWAP für mich überraschend ziemlich gut funktioniert (abgesehen von dem Standby-Problem) werde ich in die Richtung Compcache nix probieren. Aber ich habe natürlich nix dagegen, wenn sich jemand anderes dem Compcache mal annimmt.

Direkt nach einem Systemstart verfügt mein Hannsi noch über gerade mal 5MB freien Arbeitsspeicher. Ich kann mir kaum vorstellen, dass man mit Compcache gute Ergebnisse erzielen kann, weil man die Größe seines normal nutzbaren Arbeitsspeichers durch die Compcache-Partition weiter verkleinert. Ich lasse mich allerdings auch gerne eines besseren belehren.
 
Zuletzt bearbeitet:
M

marcero

Erfahrenes Mitglied
So irgendwie war die externe nit richtig gemountet und ich hab nur die interne gesehen und damit gehts natürlich nicht.
Jetzt gehts bei mir.
 
P

PatrickFries

Neues Mitglied
marcero schrieb:
So irgendwie war die externe nit richtig gemountet und ich hab nur die interne gesehen und damit gehts natürlich nicht.
Jetzt gehts bei mir.
Sauber!

Wacht das Hannsi bei dir auch aus dem Standby nicht mehr auf, wenn es längere Zeit im Standby war? Also meins kann ich nicht mehr zum Aufwachen bewegen, wenn es für ca. ne Minute geschlafen hat.
 
M

marcero

Erfahrenes Mitglied
Ich hatte dieses Problem eben auch.
Ich frage mich obs mit der sd zusammenhängt
 
P

PatrickFries

Neues Mitglied
marcero schrieb:
Ich hatte dieses Problem eben auch.
Ich frage mich obs mit der sd zusammenhängt
Also bei mir passiert es auch dann, wenn ich die SWAP-Partition gar nicht über swapon aktiviert habe. Mir ist gerade aufgefallen, dass die Kernel-Konfiguration des aktuellsten AB-Kernel ein wenig anders ist als die, die er im Quelltext-Repository hinterlegt hat. Ich kompiliere den Kernel gerade mal mit der anderen Kernel-Konfiguration neu. Vielleicht wäre der Käse damit ja schon gegessen. Ich melde mich dann wieder.
 
M

marcero

Erfahrenes Mitglied
Anstatt dem Script Manager kann man auch komfortabel die App Swapper 2 for Root Users benutzen.
Damit kann man beim start entweder eine datei oder eine partition als swap anschalten und die swappiness setzen.

Edit: Ich glaub die Lösung per Script ist doch besser
 
Zuletzt bearbeitet:
P

PatrickFries

Neues Mitglied
marcero schrieb:
Anstatt dem Script Manager kann man auch komfortabel die App Swapper 2 for Root Users benutzen.
Damit kann man beim start entweder eine datei oder eine partition als swap anschalten und die swappiness setzen
Hast du auch ausprobiert, ob es damit praktisch funktioniert? Bei mir hat Swapper 2 immer nur "Working..." oder so was ähnliches angezeigt, aber es hat sich nix getan (weder Erfolgsmeldung noch Fehlermldung).
 
M

marcero

Erfahrenes Mitglied
Das Problem hab ich seit dem Neustart auch