1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

[Guide] Swap und Compcache für CyanogenMod

Dieses Thema im Forum "Root / Hacking / Modding für T-Mobile G1" wurde erstellt von Kranki, 28.10.2009.

  1. Kranki, 28.10.2009 #1
    Kranki

    Kranki Threadstarter Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Hallo Freunde,
    in letzter Zeit tauchten öfter Fragen zu Swap und Compcache auf. Ich hoffe, das Thema mit diesem Thread zu klären.

    Welche Möglichkeiten gibt es?
    1. Swap-Partition
    Dabei werden Teile des Speicherinhalts auf eine spezielle Partition der SD-Karte ausgelagert. Diese muss bei der Partitionierung der SD-Karte erstellt werden (siehe http://www.android-hilfe.de/root-ha...g1/4632-tutorial-sd-karte-partitionieren.html) und ist typischerweise 32MB, 64MB oder 96MB groß. Die Größe ist festgelegt und kann später nicht mehr verändert werden - wenn man es sich leisten kann, permanent 96MB an die Swap-Partition abzutreten, kann man allerdings die Partition mit 96MB erstellen und bei Bedarf später löschen, eine kleinere erstellen und den restlichen Platz einfach frei lassen.
    Eine Swap-Partition empfiehlt sich nur bei einer schnellen SD-Karte (Class 6 und vernünftige Markenware).

    2. Swap-File
    Ein Swap-File ist im Grunde ähnlich wie die Swap-Partition, allerdings wird statt einer eigenen Partition nur eine Datei auf der ext-Partition erstellt. Dadurch ist die Größe jederzeit frei wählbar, ansonsten gilt dasselbe wie für eine Swap-Partition. Ein Swap-File ist eher unüblich.

    3. Compcache
    Compcache ist im Grunde eine virtuelle Swap-Partition im RAM. Statt auf die SD-Karte ausgelagert zu werden, werden die Daten innerhalb des Compcache-Swap komprimiert. Danach liegen sie zwar immer noch im RAM, haben aber nur noch einen Bruchteil der eigentlichen Größe. Die Idee dahinter ist, dass es auch mit Komprimierung noch effizienter ist, die Dateien im schnellen RAM zu halten als unkomprimiert von der vergleichsweise lahmen SD-Karte zu lesen.
    Da nicht alle Daten im RAM komprimiert werden können unterstützt Compcache außerdem eine sog. Backing-Swap. Dabei werden Daten, die nicht komprimiert werden können, doch auf eine Swap-Partition auf der SD-Karte ausgelagert. (Compcache mit Swapfile ist buggy und funktioniert nicht.)

    Konfiguration
    Ich geh einfach mal die Sektionen der user.conf (siehe Anhang) nacheinander durch:
    1. General
    media2sd=1 Verschiebt Medien auf die SD-Karte, wenn ein Ordner media auf der ext-Partition existiert, für mehr Platz in /system.
    permission_fix=0 Ruft beim nächsten Systemstart fix_permissions auf und setzt sich dann wieder auf 0.
    odex_auto=0 Erstellt automatisch odex-Dateien für neue Anwendungen und löscht odex-Dateien deinstallierter Anwendungen.
    odex_apk=0 Erstellt Odex für Apps, die noch keine haben
    odex_all=0 Erstellt odex für alle Apps.

    Ich seh hier eigentlich keinen Sinn in den odex-Optionen und halte sie für ein Überbleibsel alter fehlerhafter Annahmen. Hier kann man eigentlich alles deaktiviert (auf 0) lassen.

    2. Compcache
    compcache_en=1 Aktiviert Compcache
    cc_disksize=32 Größe der virtuellen Compcache-Partition in MB, angegeben ist die unkomprimierte Größe. Der tatsächliche Speicherverbrauch von Compcache ist also weit niedriger.
    cc_memlimit=16 Maximale Speichernutzung der Backing Swap (in MB)
    cc_backingswap_en=0 Aktiviert Backing Swap
    cc_backingswap=/dev/block/mmcblk0p3 Swap-Partition für Backing Swap
    cc_swappiness=30 Swappiness
    Standardwerte bei Cyanogen sind bis 4.1.9999 maximal 25% des RAM im Compcache, maximale Nutzung der Backing Swap 15%, Backing Swap auf der dritten Partition der SD-Karte (angegeben durch /dev/block/mmcblk0p3), aber nicht aktiv. Seit 4.2 ist Compcache standardmäßig aus. Zur Swappiness später.

    3. Swap file
    swap_file_en=0 Swap-Datei erstellen
    linux_swap_file_size=32 Größe der Swapdatei in MB
    linux_swap_file=/system/sd/swap.file Ort der Swapdatei

    4. Linux-Swap
    linux_swap_en=0 Linux-Swap aktivieren
    linux_swap_partition=/dev/block/mmcblk0p3 Pfad zur Swap-Partition oder Datei
    swappiness=30 Swappiness

    5. CPU Clock
    proc_cpu_en=0 Eigene CPU-Einstellungen aktivieren/deaktivieren
    scaling_min_freq=245760 Minimale CPU-Frequenz
    scaling_max_freq=528000 Maximale CPU-Frequenz

    Alle anderen Optionen in der Datei können auf den Standardwerten belassen werden. Falls man damit irgendwas interessantes machen kann, nehm ich das gerne auf, aber ich konnte beim besten Willen nichts darüber finden, was z.B. die gesamte Sektion Virtual Memory macht.

    Ein Wort zur Swappiness
    An der Swappiness hängt auch ein gutes Stück Performance der Swap-Partition. Der Wert gibt an, wie bei Bedarf Speicher freigemacht wird. Steht er auf 100 werden immer inaktive Daten auf die Swap ausgelagert. Steht er auf 0 werden immer als Cache vorgehaltene Daten entfernt.
    Gesehen hab ich schon alles zwischen 30 (dem Wert, den die user.conf als Standard vorgibt) und 60 (dem Linux-Standardwert). Ich selber habe momentan Swappiness 40, das scheint gut zu funktionieren.

    Installation
    0. Scriptwahl
    Aufgrund einer Änderung bei der Bezeichnung des Compcache-Kernelmoduls funktioniert das Script V0.1.5.3 nur bis 4.1.999, ab 4.1.9999 ist das angepasste Script nötig.

    1. SD-Karte partitionieren
    Zur Vorgehensweise verweise ich einfach auf das entsprechende Tutorial (http://www.android-hilfe.de/root-ha...g1/4632-tutorial-sd-karte-partitionieren.html).
    Benötigt werden eine ext2/3/4-Partition (in ausreichender Größe für Apps2SD) und gegebenenfalls eine Swap-Partition. (Zwischen 32MB und 96MB für eine reine Swap-Partition, für eine Backing-Swap für Compcache reichen maximal 32MB vollauf.)

    2. user.conf konfigurieren
    Die entsprechenden Einstellungen in der user.conf vornehmen, siehe dazu die separate Sektion. Wichtig ist, nicht den Windows-Editor zu benutzen, sonst gibt es Probleme mit den Zeilenumbrüchen. In dem Thread bei xda wird Notepad++ vorgeschlagen, ich benutze gVim, Hauptsache, er unterstützt Linux-Zeilenumbrüche.

    3. Installation
    Über adb:
    Code:
    adb push userinit.sh /system/sd
    adb push user.conf /system/sd
    adb shell chmod 755 /system/sd/userinit.sh
    adb shell chmod 755 /system/sd/user.conf
    Oder auf die SD-Karte kopieren und über das Terminal:
    Code:
    su
    cp /sdcard/userinit.sh /system/sd/
    cp /sdcard/user.conf /system/sd/
    chmod 755 /system/sd/userinit.sh
    chmod 755 /system/sd/user.conf
    Weitere Schritte sind nicht notwendig, das Script wird automatisch ausgeführt, wenn es vorhanden ist.

    4. Hat es geklappt?
    Nach einem Neustart sollten die neuen Einstellungen aktiv sein. Überprüfen kann man dies mit folgenden Befehlen an Terminal oder adb shell:
    Code:
    cat /proc/swaps
    Code:
    su
    /system/sd/userinit.sh -s
    Script: [MOD]user configurable userinit.sh V0.1.5.3 for CM. [UPDATED 9/05] - xda-developers

    Wenn es noch Fragen gibt, stellt sie. Idealerweise will ich ab jetzt nie wieder einen Thread sehen, in dem gefragt wird, was eine Swap bringt oder wie man eine erstellt, weil sich die Antwort hier nicht findet.
     

    Anhänge:

    Zuletzt bearbeitet: 29.11.2009
    ronan, rtv, Lubomir und 8 andere haben sich bedankt.
  2. Android-Jeck, 28.10.2009 #2
    Android-Jeck

    Android-Jeck Android-Guru

    Beiträge:
    2,215
    Erhaltene Danke:
    465
    Registriert seit:
    21.09.2009
    Super Erklärung, vielen Dank! Ist es denn bei den aktuellen CM Mods (z.B.4.2.1) und bei deinen Full Updates noch notwendig die userinit zu verändern? Oder ist die dort schon eingefügt? Sorry, ich weiß, man kann die irgendwo auslesen, aber soweit bin ich mit meinem technischen Verständnis noch nicht.... ;-)
     
  3. Kranki, 28.10.2009 #3
    Kranki

    Kranki Threadstarter Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Wenn es nicht notwendig wäre, würd ich kaum einen riesigen Guide dazu posten. :p
    Bis auf die Standardwerte hat sich da schon seit einer halben Ewigkeit nichts mehr getan.
     
  4. Android-Jeck, 28.10.2009 #4
    Android-Jeck

    Android-Jeck Android-Guru

    Beiträge:
    2,215
    Erhaltene Danke:
    465
    Registriert seit:
    21.09.2009
    Na, dann mache ich mich nachher mal daran,das bei mir zu ändern.
     
  5. g-oNe, 28.10.2009 #5
    g-oNe

    g-oNe Erfahrener Benutzer

    Beiträge:
    187
    Erhaltene Danke:
    4
    Registriert seit:
    04.03.2009
    Phone:
    Galaxy Nexus
    Hi,

    erstmal vielen Dank für die ausführliche Anleitung. Zu dem o.g. Punkt hätte ich nur eine Frage... welche seperate Sektion meinst du?? kannst du mir einen Link geben oder hab ich da was falsch verstanden??

    Vielen Dank

    greetz
    g-oNe
     
  6. kai84m, 28.10.2009 #6
    kai84m

    kai84m Fortgeschrittenes Mitglied

    Beiträge:
    339
    Erhaltene Danke:
    18
    Registriert seit:
    02.05.2009
    Hallo,
    ich habe versucht compcache via userinit.sh unter cyan 4.2.2 zu aktiviern, nur leider kommt im status immer "Compcache disabled" lege mal userinit.sh und user.conf als anlage bei, es wäre nett wenn mal jemand düber sehen könnte und mir helfen könnte Compcache zu aktivieren!

    Mit Linux-Swap hatt es funktioniert, aber dass wollte ich wegen der lebensdauer der SD nicht weiter nutzen. Leidet die Lebensdauer der SD eigentlich so stark unter Linux-Swap (Swppiness ~30)?

    Schonmal vielen Dank!
     

    Anhänge:

  7. kai84m, 28.10.2009 #7
    kai84m

    kai84m Fortgeschrittenes Mitglied

    Beiträge:
    339
    Erhaltene Danke:
    18
    Registriert seit:
    02.05.2009
    Update:
    Habe userinit.sh mal manuell ausgeführt:

    Scheinbar sind im Cyanogen 4.2.2 keine Compcache Module installiert?!

    Kann das jemand bestätigen?
     
  8. g-oNe, 28.10.2009 #8
    g-oNe

    g-oNe Erfahrener Benutzer

    Beiträge:
    187
    Erhaltene Danke:
    4
    Registriert seit:
    04.03.2009
    Phone:
    Galaxy Nexus
    So habe jetzt die beiden dateien auf mein G1 gepusht und neugestartet. Wenn ich aber über adb den befehl
    Code:
    adb shell sh /system/sd/userinit.sh -s
    eingebe bekommen ich folgenede Ausgabe:
    [​IMG][​IMG][​IMG]http://www.imgbox.de/?img=r26518v22.jpg

    kann mir vielleciht jemand sagen was da schiefgelaufen ist? wäre über jede Hilfe dankbar und wenn mir jemand die user.conf so zurechtschreiben könnte das Sie mit dem CM 4.2.1 läuft wär natürlich noch besser... ;)

    freue mich über antworten...

    greetz
    g-oNe
     
    Zuletzt bearbeitet: 28.10.2009
  9. Denowa, 28.10.2009 #9
    Denowa

    Denowa Android-Guru

    Beiträge:
    2,872
    Erhaltene Danke:
    565
    Registriert seit:
    21.08.2009
    Phone:
    OnePlus One, OnePlus Two, ZTE Axon 7
    Wearable:
    Pebble
    Kann es sein das hier viele die userinit.sh bearbeiten/verändern und nicht die user.conf :confused:

    Möchte noch einmal betonen das die Einstellungen in der user.conf vorgenommen werden müssen! ;)
     
    Zuletzt bearbeitet: 28.10.2009
  10. g-oNe, 28.10.2009 #10
    g-oNe

    g-oNe Erfahrener Benutzer

    Beiträge:
    187
    Erhaltene Danke:
    4
    Registriert seit:
    04.03.2009
    Phone:
    Galaxy Nexus
    ne also ich hab schon die richtige datei bearbeitet: user.conf :rolleyes:

    und nu :confused:
     
  11. Kranki, 28.10.2009 #11
    Kranki

    Kranki Threadstarter Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Anscheinend hat sich beim Wechsel auf die neue Compcache-Version in 4.1.9999 der Name des Kernelmoduls geändert. Auf xda habe ich eine angepasste Version des Scripts gefunden und im ersten Beitrag hochgeladen. Damit sollte Compcache auch wieder funktionieren.
     
  12. g-oNe, 28.10.2009 #12
    g-oNe

    g-oNe Erfahrener Benutzer

    Beiträge:
    187
    Erhaltene Danke:
    4
    Registriert seit:
    04.03.2009
    Phone:
    Galaxy Nexus
    Hi Kranki,

    welche Ausgabe sollte man denn erhalten wenn man die Eingaben aus "Hat alles geklappt" gemacht hat?

    hab ne swap partition und dort steht Used 4292 und Priority -1

    :confused: denk aber mal das es geklappt hat... oder muss ich in der user.conf noch irgendwas ändern?

    Linux_swap
    Swap_file
    und
    Sys_vm is disabled
    nur compcache steht auf 1.

    hoffe das das alles so seine richtigkeit hat?

    nochmal vielen dank für die ganzen mühen :)

    greetz
    g-oNe
    ----------------------------------------------------------
    mmh.. bekomme bei der Eingabe von
    Code:
    /system/sd/userinit.sh -s
    am ende immer mehrere meldungen in der mir gesagt wird:

    Unable to create /system/app/****.odex
    ---- dexopt-wrapper

    hab nur keinen blassen was das bedeuten könnte. wär nett wenn mir das mal jemand kurz erläutern könnte! frage mich ob ich die rechte alle richtig vergeben habe?

    THX
     
    Zuletzt bearbeitet: 28.10.2009
  13. Kranki, 28.10.2009 #13
    Kranki

    Kranki Threadstarter Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Ich würde die Odex-Optionen deaktivieren. Ich sehe darin keinen Performancegewinn, aber Potential für Ärger.
     
  14. rtv

    rtv Android-Experte

    Beiträge:
    781
    Erhaltene Danke:
    406
    Registriert seit:
    28.10.2009
    Phone:
    HTC 10
    Tablet:
    Pixel C
    Wearable:
    Huawei Watch
    cyanogen hat vor ein paar Tagen im IRC erklärt, dass compcache viele Bugs in allen möglichen Anwendung ans Tageslicht bringt, und es eigentlich keinen Sinn macht, zu diesem Zeitpunkt da Energie zu investieren wenn man ein stabiles System haben möchte (und selbst die meisten "Alphatester" werden stinkig, wenn mal die SMS des Hausdrachens nicht ankommt).


    Oh, getwittert hatte er's auch:
    Twitter / Steve Kondik: I think I am going to disa ...
    Twitter / Steve Kondik: Finding out that its expos ...
     
  15. Android-Jeck, 29.11.2009 #15
    Android-Jeck

    Android-Jeck Android-Guru

    Beiträge:
    2,215
    Erhaltene Danke:
    465
    Registriert seit:
    21.09.2009
    Ich hab bei mir gesehen, dass CPU CLOCK in der runtergeladenen user.conf deaktiviert ist. Brauch man das bei den aktuellen CM nicht, oder ist es sinnvoll das manuell zu aktivieren?
     
  16. Kranki, 29.11.2009 #16
    Kranki

    Kranki Threadstarter Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Bei deaktivierten CPU-Einstellungen in der user.conf sind die Standardeinstellungen 245Mhz Min, 528 Mhz Max, das ist eigentlich in Ordnung.
     
  17. CMcRae, 29.11.2009 #17
    CMcRae

    CMcRae Android-Lexikon

    Beiträge:
    1,028
    Erhaltene Danke:
    70
    Registriert seit:
    07.05.2009
    Phone:
    Samsung Galaxy S3
    also compcache aus oder??? aber swap an...

    oder was ist nun die beste einstellung??

    oder sogar beides aus??? hab echt kein plan mehr
     
  18. Android-Jeck, 29.11.2009 #18
    Android-Jeck

    Android-Jeck Android-Guru

    Beiträge:
    2,215
    Erhaltene Danke:
    465
    Registriert seit:
    21.09.2009
    Wenn ich's richtig verstanden hab Compcache aus (verursacht wohl zu viele Probleme) und Linux Swap an...swappiness 30-40. Richtig?

    Was CPU CLOCK angeht hab ich schon häufiger was von Min. bei 128000 gelesen um den Akku zu schonen...Ist das sinnvoll?

    Welche Funktion hat eigentlich die userinit.sh, wenn man dort nichts verändert? Und was passiert, wenn man dort was ändert?
     
    Zuletzt bearbeitet: 30.11.2009
  19. Android-Jeck, 01.12.2009 #19
    Android-Jeck

    Android-Jeck Android-Guru

    Beiträge:
    2,215
    Erhaltene Danke:
    465
    Registriert seit:
    21.09.2009
    Im Market gibt's seit Kurzem das App "user.conf creator". Hat das schon jemand getestet?
     
  20. Kranki, 01.12.2009 #20
    Kranki

    Kranki Threadstarter Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Scheint wohl zu machen, was es soll. Link zur Herstellerseite verweist ja auf einen xda-Thread.
     

Diese Seite empfehlen