| |||||||
Das Thema "Speicher, SWAP, Stabilität, Optimierung für Android" befindet sich unter Root / Hacking / Modding für HTC Magic auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer Benutzer Modell: Samsung Galaxy S Plus (I9001) Registriert seit: 15.07.2009
Beiträge: 13
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
| Ich habe mich in die letzte Paar tage mit dem Optimierung von der Speicherverwaltung an meinen HTC-Magic beschäftigt. 1. Kurze Einführung (man kann es überspringen). Wie vermutlich alle hier im Forum bekant, ist Android eben eine Linux GUI arbeitend auf einen Linux Kernel, bei HTC-Magic (Vodafon) ist das: Version: 2.6.27-00393-g6607056 san@sandroid #1 Linux verwendet gern einen SWAP-Partition wenn es um Desktop oder Server OSs geht. Beim Android ist das vom "Werk" vollständig vernachlesigt worden. Im grunde braucht es ja auch nicht wirklich, außer man verwendet "speicher-hungrigen" Programme (ich z.B. CoPilot). Es gibt auch eine Reihe von Parameter, die die Speicherverwaltung von Linux steuern und die wurden für Android großteils einfach übernommen von der standart Einstellungen und an denen mache ich mich in diesem Thema ran. Mehr Informationen findet man im Internet. 2. Was gebraucht wird. 1. Root rechte auf sein Android. Link 1 und Link 2 ohne Root-ROM 2. Ein Text-Editor für Win/Android. Ich benutze(I.b.) Notepad++/Text Edit. 3. Ein Programm für Android, das sh - Script ausführen kann. I.b. GScript Lite. 4. Und natürlich Swapper, wenn man ein SWAP-Datei erstellen will. 3. Vorgang. Alle Programme installieren die für Android sind im Market zu finden, die für Windows Googeln. Die Scripts schreiben. Ich habe mir 2 geschrieben, ein Script überprüft die Einstellungen und das Andere übernimmt die. check.sh - Einstellungen prüfen. Code: # Einstellungen ueberpruefen echo swappiness wert ist: cat /proc/sys/vm/swappiness echo dirty_expire_centisecs wert ist: cat /proc/sys/vm/dirty_expire_centisecs echo dirty_writeback_centisecs wert ist: cat /proc/sys/vm/dirty_writeback_centisecs echo dirty_background_ratio wert ist: cat /proc/sys/vm/dirty_background_ratio echo dirty_ratio wert ist: cat /proc/sys/vm/dirty_ratio echo oom_kill_allocating_task wert ist: cat /proc/sys/vm/oom_kill_allocating_task echo vfs_cache_pressure wert ist: cat /proc/sys/vm/vfs_cache_pressure speed.sh - Einstellungen vornehmen. Code: # Speed Einstellungen # Bei Wieviel Prozent freien Speicher soll das System anfange zu swappen echo 5 > /proc/sys/vm/swappiness #Wie oft soll der Kernel pruefen ob "dirty changes" vorhanden sind #um diese dann auf die Platte zu schreiben (Zentisekunden) echo 1000 > /proc/sys/vm/dirty_writeback_centisecs #Wie alt muessen "dirty changes" sein damit sie weg geschrieben werden #Sinnvollerweise vm.dirty_expire_centisecs = vm.dirty_writeback_centisecs echo 1000 > /proc/sys/vm/dirty_expire_centisecs #Wie viel Prozent das RAMS duerfen von einem Prozess mir "dirty changes" gefuellt #sein bevor der Prozess gezwungen wird diese Aenderungen zu schreiben echo 55 > /proc/sys/vm/dirty_ratio echo 30 > /proc/sys/vm/dirty_background_ratio #Diese aktiviert oder deaktiviert die Toetung der OOM-Triggerung Aufgabe in #Out-of-Memory-Situationen. Verbessert die Stabilität. echo 1 > /proc/sys/vm/oom_kill_allocating_task #vm.vfs_cache_pressure (0-250, 100 ist Standard) welche festlegt ob und wie #sehr Prozesse ausgeswappt werden um Arbeitsspeicher fuer Cache frei zu machen. echo 50 > /proc/sys/vm/vfs_cache_pressure echo Speed Einstellungen vorgenommen! Das Programm "GScript Lite" starten, Menu taste drücken -> Add script auswählen. Hier "Load file" klicken und check.sh auswählen, Name wird automatisch übernommen und jetzt auf Save klicken. Für speed.sh macht man das selbe und aufpassen das "Needs SU?" eingehakt ist. Das war alles jetzt nur ausführen und das Magic läuft um einiges stabiler und schneller(meine subjektive Meinung). Es ist auch möglich, diese Einstellungen als Autostart einzurichten aber mit ist so lieber.Im xda-Forum ist das ausführlicher erklärt und auch diskutiert. Eine kurze Bemerkung zum Swapper. Wenn jemand das SWAP-File verwendet und sein Gerät am PC anschließen will. Unbedingt vorher das SWAP-File Ausschalten sonnst muss man nach dem die Verbringung aus ist, sein Handy neu starten wegen eine SD-Card Fehler(ein neu Start behebt die Fehler). 4. WEB-Links. Optimierung des Swap unter Linux Hauptspeicher Tuning Optimierung für SD/CF-Karten Linux-kernel Handbuch Ich freue mich auf eure Kommentare und Parameter Vorschläge. mfg Ivaylo. Schlüsselwörter für die Suche: SWAP, Swappiness, Swapper, dirty_writeback_centisecs, dirty_background_ratio, dirty_ratio, oom_kill_allocating_task, vfs_cache_pressure, Speicherverwaltung, Auslagerungsdatei, optimieren, sh Script, RAM, SD - Karte ... P.S.: Sorry für Schreib und Grammatik-Fehler! ![]() |
| | |
| | #2 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Magic Registriert seit: 30.04.2009
Beiträge: 425
Abgegebene Danke: 1
Erhielt 7 Danke für 6 Beiträge
|
Hi, erstmal ein Lob für deine Arbeit, oder die von xda ![]() Zu dem Inhalt des Links Optimierung des Swap unter Linux | Chrischan's krasseszeug.de kann ich leider nicht zustimmen, weder xda noch andere Seiten die man im Inet findet. "Meine persönliche Empfehlung / Optimierung Aus meiner Erfahrung herraus ist es sinnvoll diese zwei Kernelparameter auf bestimmten Systemen anzupassen. Für ein Desktopsystem empfiehlt es sich den swappiness Wert auf 100 zu erhöhen. Gerade auf Desktopsystem liegen viele Prozesse schlafend sinnlos im Hintergrund herrum und sollten schnellstmöglich ausgeswappt werden. Bei Desktopsystem mit sehr viel Ram würde ich es jedoch bei dem Standardwert von 60 belassen." Selbst xda hat wie ich den swappiness wert auf 10 runtergesetzt, weil es für ein Desktopsystem besser ist nicht allzuschell auszulagern, weil das Medium ( Platte / sdcard ) x mal langsamer ist als RAM. Für Android vor allem mit HERO ROM ist es viel sinnvoller den Wert um die 10 zu benutzen und nicht wie in dem Artikel beschrieben ein Desktopsystem auf 100 zu setzen. Das wäre der sichere i/o Tod für jedes Desktop System , weil ja alles ausgelagert wird und bei jedem Zugriff erstmal von dem Speichermedium gelesen werden muss und ein ständiger swap/ram Austausch stattfindet. Werde das Feintuning mal bei meinem Hero ROM testen, ist dazu ein sehr guter Testkandidat. Gruß
__________________ Windows <- reboot Linux <- be root |
| | |
| | #3 (permalink) |
| Neuer Benutzer Modell: Samsung Galaxy S Plus (I9001) Registriert seit: 15.07.2009
Beiträge: 13
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
|
Hallo. Das stimme ich dir voll zu. 100 ist viel zu viel für uns, das Heist eigentlich das mit dem auslagern gleich anfängt. Bei mir hat sich 5% am besten ausgewirkt. Von 0 rate ich ab, da wird dann nur das vfs_cache_pressure berücksichtigt was auch nicht das beste ist. Und ja das stimmt auch, dass im Forum von xda auch eine Anleitung gibt an denen ich mich auch angelehnt habe. Ich habe es aber erst gestern gefunden, als ich das "sysctl.conf" beim Android nicht gefunden habe. Bei mir hat das leider nicht geklappt mit dem Anleitung von Ohsaka. ![]() sysctl.conf für Diejenigen, die es versuchen wollen Code: vm.swappiness=5 vm.dirty_expire_centisecs=1000 vm.dirty_writeback_centisecs=1000 vm.dirty_background_ratio=30 vm.dirty_ratio=55 vm.oom_kill_allocating_task=1 vm.vfs_cache_pressure=50 lg Logos P.S.(Edit): Für Hero ist möglich, dass "dirty_expire_centisecs" und "dirty_writeback_centisecs" auf 500 (5 Sekunde) zu setzen, sich besser auswirkt. Geändert von logos-ivaylo (20.07.2009 um 19:15 Uhr) |
| | |
| | #4 (permalink) |
| Neuer Benutzer Registriert seit: 21.07.2009
Beiträge: 1
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo Android User, ich habe diesen Beitrag vorhin in meiner Referrer Liste gefunden. Ich selbst bin hin und her gerissen ob ich mir ein Android Handy oder doch besser das iPhone zulegen sollte... ich bin hier noch echt unschlüssig^^. Aber nun zum Thema. Meine Empfehlung (im übrigen teilen diese auch die Kernelentwickler) geht von einem Standard Desktop Nutzer und dessen Verhalten aus. Ein Windows oder MacOS verhält sich vergleichsweise so wie wenn man unter Linux den Swappiness Wert auf 100 erhöht. Dies ist nicht ohne Grund so. Bei einem normalem Desktopsystem liegen schnell 300MB und mehr Prozesse im Hintergrund welche nicht genutzt werden. Bei Swappiness 100 werden diese sehr zeitnah ausgelagert. Der Ram steht nun z.B. für Lesecache zur Verfügung was den Rechner letztendlich beschleunigt. Nutzt man einen dieser ausgelagerten Prozesse muss dieser erst wieder eingelesen werden. Im Normalfall überwiegt der Nutzen des Lesecaches dem Aufwand des wieder einlesens (vor allem da HD's heutzutage recht schnell sind). Der Prozess bzw. dessen Speicherseiten liegen ja deshalb im Swap weil er nicht genutzt wurde! Letztendlich hängt es vom Nutzer und seiner genutzen Hardware ab welche Einstellung wirklich gut für Ihn ist. Zum Thema Swap bei einem Android Handy: Ich rate davon ab Swap auf einer Speicherkarte dauerhaft zu verwenden. Jede SD Karte hat eine maximale Anzahl an Schreibzyklen je Block. Je nach Hersteller und Qualität der Karte variiert diese Zahl. Nach der Spezifikation der meisten Speicherkarten müssen diese nur 10.000 Schreibzyklen / Block aushalten. Die meisten besseren Karten vertragen 100.000 bis 1 Mio Schreibvorgänge. Durch die Nutzung von Swap können 100.000 Schreibzyklen auf einen Block recht schnell in ein paar Monaten zusammenkommen. Aus diesem Grund ist dieses Feature bei keinem Handy, PDA usw. aktiviert. Wer immer brav Backup's zieht und wem der Preis für eine neue Karte nichts ausmacht, dem kann das natürlich egal sein. Da die Karten sich also verbrauchen, würde ich versuchen das Swappen so weit wie möglich zu vermeiden. D.h. vfs_cache_pressure und swappiness auf 0 setzen wodurch nur noch im Notfall geswappt wird. Ich hoffe mal das hilft jemandem hier weiter. PS: swappiness ist, soweit ich mich nicht irre, KEIN Prozentwert von irgend etwas. Es ist nur ein Faktor welcher in die Berechnung für das wann/was Swappen des Kernels eingeht. Diese "Formel" wurde in der Entwicklung des 2.6er Kernels mehrfach angepasst. |
| | |
| | #5 (permalink) |
| Android Guru Modell: DZ Registriert seit: 02.03.2009
Beiträge: 1.089
Abgegebene Danke: 657
Erhielt 99 Danke für 73 Beiträge
|
ich habe die swap-partition so xda-developers - View Single Post - [MOD]Auto Swap Extention bei mir aktiviert, wie schalte ich sie wieder aus? thx gruß para |
| | |
| | #6 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Magic Registriert seit: 30.04.2009
Beiträge: 425
Abgegebene Danke: 1
Erhielt 7 Danke für 6 Beiträge
|
Hallo @krasseszeug Das ist uns bewusst, bezueglich der schreibzyklen auf sdcards und das es sehr schnell zum crash fuehren kann. wurde auch schon in einem anderen Thread diskutiert. Ja bei Android ist es so eine Sache. bei PCs kommt es sehr stark auf die Hardware an ( RAM Groesse ) und bei einem System mit 8 GB RAM wird swap kaum genutzt sodas ein defaultwert von 60 auch in ordnung geht. Letztendlich kommt es immer auf das Verhalten des Anwenders an und der Hardware. ######################## @parabolon Bitte der Thread dient der Speicheroptimierung des Linuxkernels für Android. Wende dich bitte an das xda Forum, wohher du die Anleitung hast oder öffne dazu einen neuen Thread. Ich sehe wieder die Gefahr das weitere Diskussion komplett am Topic vorbeigehen. Danke
__________________ Windows <- reboot Linux <- be root |
| | |
| | #7 (permalink) | |
| Android Guru Modell: DZ Registriert seit: 02.03.2009
Beiträge: 1.089
Abgegebene Danke: 657
Erhielt 99 Danke für 73 Beiträge
| Zitat:
bin nur halt kein hacker und dachte swap steht im titel, dann wirds passen...scheinen aber zwei unterschiedliche welten zu sein, wenn ich dir richtig folgen kann... | |
| | |
| | #8 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Magic Registriert seit: 30.04.2009
Beiträge: 425
Abgegebene Danke: 1
Erhielt 7 Danke für 6 Beiträge
|
ok, dann mache einen restore deiner alte userinit und loesche die swappartition. irgendwo hast du doch nach der anleitung eine swappartition aktiviert " swapon" . mache es wieder rückgängig oder spiele dein komplettbackup mit "nandroid" ein. falls du nichts dergleichen hast ( Backup ) dann solltest du solche Dinge in Zukunft lassen und dafür einen neuen Thread öffnen, in dem man Dir bestimmt Hilfe geben wird. Gruß
__________________ Windows <- reboot Linux <- be root |
| | |
| | #9 (permalink) | |
| Neuer Benutzer Modell: Samsung Galaxy S Plus (I9001) Registriert seit: 15.07.2009
Beiträge: 13
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
| Zitat:
Ich werde dir von SWAP-Partition dringend abraten. Warum? Beim eine Partition legst du ein bereich auf deine SD-Karte für Swapen fest und wie schon bekant beim swapen wird es so ziemlich oft auf die Karte zugegriffen. Das wiederum fürt zu eine schnelle Ausnutzung von genau diesem Bereich und zu einen relativ baldiges Versagen. Erlich gesagt wollte ich am anfach auch eine SWAP-Partition erstellen, aber nach gründliche Überlegung gelassen. Mein Tip, benutze Swapper. Und so einmal an 2-3(Aber meistens kommt ehe nicht zu eine geplante aus/ein schalten da du immer dazwischen dein Magic am PC anschließt und da musst du vorher so wieso das SWAP ausmachen) Tage SWAP aus und wieder einschalten. So wird der SWAP-File im einen anderen bereich gespeichert und deine Karte ein bisschen gleichmäßigerer belastet. EDIT: Swapper kann auch Partitionen benutzen versuche es mit Swapper aus zuschalten. Wenn du es aber trotztem mit Partition machen willst benutze DIES hier und ab Punkt 4 Swapper mir Einstellungen für Partition. @krasseszeug Hallo auch dir krasseszeug. Die Empfehlungen sind mir bekant aber wie du es geschrieben hast, sind die für Desktop und Server und nicht(noch nicht) für Handhelds. Und das war auch mein ziel für dieses Tehema, optimale werte für Magic(Android) zu ermitteln. Zu Swappiness, also alles was ich bis jetzt gefunden habe ist eben ein an %-ten angelegter Wert(0 wird möglichst nicht geswapt, 100 möglichst gleich). Aber nicht fest gelegter es ist nur eine Empfehlung am Kernel, ab wann er mit dem ausswapen beginnen soll. LINK 1, LINK 2, LINK 3 ... Und hier, eine heiße Diskussion. lg Logos Geändert von logos-ivaylo (21.07.2009 um 13:24 Uhr) | |
| | |
| | #10 (permalink) |
| Android Guru Modell: DZ Registriert seit: 02.03.2009
Beiträge: 1.089
Abgegebene Danke: 657
Erhielt 99 Danke für 73 Beiträge
|
thx@ logos-ivaylo & magic nandroid backup habe ich... war auch eher aus interesse gefragt, danke! swapper werde ich dann auf meiner bestellten class 6 karte testen... habe momentan noch die standard-karte... gruß para |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Guide] Swap und Compcache für CyanogenMod | Kranki | Root / Hacking / Modding für T-Mobile G1 | 28 | 26.10.2010 13:43 |
| Zipalign-Optimierung (App-Finetuning für das letzte bißchen Speed) | Kranki | Root / Hacking / Modding für T-Mobile G1 | 33 | 26.12.2009 08:09 |
| Swap im internen Speicher | eX1337 | Root / Hacking / Modding für HTC Magic | 0 | 27.08.2009 13:06 |
| Wie viel Speicher für Apps? | Friedrich | HTC Hero / T-Mobile G2 Touch Forum | 11 | 16.07.2009 20:14 |
| [JFv1.51] Kein Speicher für Apps | s_ry1 | Root / Hacking / Modding für T-Mobile G1 | 3 | 11.06.2009 10:56 |