heinerl
Stamm-User
- 195
In einem französischen Forum habe ich gerade über ein Script gelesen, das u.a. die Speichernutzung des Hannspads unter Honeycomb optimieren soll. Hier eine leicht geänderte Übersetzung vom Google Translator:
"Ich habe ein kleines Skript, das zur Optimierung 2-3 Dinge ändert.
Die Hannspad hat nur 512 MB RAM. Sobald das System gestartet ist, sind mit dem Speicher für das System und die "Grafikkarte" immer noch über 250MB reserviert.
Android beendet Prozesse und Anwendungen, wenn der Speicher ein bestimmtes Niveau erreicht hat und nach Priorität. Die Parameter von Flashback sind zu aggressiv und Anwendungen werden schon beendet, wenn der freie Speicher 100MB unterschreitet.
Also machte ich ein Skript, das Speicher-Management Änderungen erst zuläßt, wenn der freie Speicher unter 32 MB fällt.
Der Vorteil ist, dass Multi-Tasking schneller wird. Man kann zum Beispiel Opera starten und danach News, Google Maps, Acrobat Reader und kehrt dann zu Opera zurück, ohne daß die Anwendung oder die Seite neu geladen wird.
Dieses Skript ändert auch den Cache-Speicher, der normalerweise von Android vergrößert wird, um schneller auf die SD-Karte zuzugreifen. (???)
Es ändert auch die TCP / IP (Internet-Geschwindigkeit). Das Skript ändert auch die Priorität des Launchers, so dass es nie beendet wird. Auch nach dem Ausführen einer großen Anwendung wird die Rückkehr zum Home-Bildschrim schneller.
Das Skript läuft kontinuierlich im Hintergrund und ändert einige Einstellungen, wenn das Tablet im Standby-Modus ist (legt die max CPU auf 216 MHz, um Strom zu sparen) und wenn es aus dem Standby erwacht (1000MHZ CPU auf max).
Dieses Skript wird beim Start des Tablets ausgeführt. Es muß als script.sh in den Ordner /system/etc/ kopiert werden. Um das Script wieder zu entfernen, die Datei einfach wieder löschen."
Zum Kopieren der Datei sind Root-Rechte erforderlich!
Hier der erste Teil des Scripts ohne die Standby-Funktionen:
Und hier der Teil, der imho zu Standby-Abstürzen bei Flashback führt:
Edit 1: Neue Version 0.22 eingefügt. Changelog (ich hasse Google Translator):
Edit 2: Neue Version 0.23 eingefügt. Changelog:
Edit 3: Meiner Meinung nach wirken sich die rot markierten Zeilen negativ auf die Stabilität im Standby aus. Nachdem mein Hannspad mit div. FB-Versionen und Kernels nach längerem Standby mit und ohne Netzteil immer abschmierte, habe ich aus dem gesamten Script die genannten Zeilen entfernt, seitdem keine Abstürze im Standby mehr. Die Funktionen zum Killen der überflüssigen Prozesse könnten allerdings drinbleiben, die hatte ich zuerst gelöscht, ohne Auswirkung.
Edit 4: Batteriekontrolle nach oben versetzt. Das Script läßt sich so einfacher per copy/paste in einen Texteditor kopieren und abspeichern. Den rot markierten Teil kann man nach Gutdünken noch anhängen. (Finde diese Code-Fenster trotzdem unschick)
"Ich habe ein kleines Skript, das zur Optimierung 2-3 Dinge ändert.
Die Hannspad hat nur 512 MB RAM. Sobald das System gestartet ist, sind mit dem Speicher für das System und die "Grafikkarte" immer noch über 250MB reserviert.
Android beendet Prozesse und Anwendungen, wenn der Speicher ein bestimmtes Niveau erreicht hat und nach Priorität. Die Parameter von Flashback sind zu aggressiv und Anwendungen werden schon beendet, wenn der freie Speicher 100MB unterschreitet.
Also machte ich ein Skript, das Speicher-Management Änderungen erst zuläßt, wenn der freie Speicher unter 32 MB fällt.
Der Vorteil ist, dass Multi-Tasking schneller wird. Man kann zum Beispiel Opera starten und danach News, Google Maps, Acrobat Reader und kehrt dann zu Opera zurück, ohne daß die Anwendung oder die Seite neu geladen wird.
Dieses Skript ändert auch den Cache-Speicher, der normalerweise von Android vergrößert wird, um schneller auf die SD-Karte zuzugreifen. (???)
Es ändert auch die TCP / IP (Internet-Geschwindigkeit). Das Skript ändert auch die Priorität des Launchers, so dass es nie beendet wird. Auch nach dem Ausführen einer großen Anwendung wird die Rückkehr zum Home-Bildschrim schneller.
Das Skript läuft kontinuierlich im Hintergrund und ändert einige Einstellungen, wenn das Tablet im Standby-Modus ist (legt die max CPU auf 216 MHz, um Strom zu sparen) und wenn es aus dem Standby erwacht (1000MHZ CPU auf max).
Dieses Skript wird beim Start des Tablets ausgeführt. Es muß als script.sh in den Ordner /system/etc/ kopiert werden. Um das Script wieder zu entfernen, die Datei einfach wieder löschen."
Zum Kopieren der Datei sind Root-Rechte erforderlich!
Hier der erste Teil des Scripts ohne die Standby-Funktionen:
Code:
#!/bin/bash
# Tweaks for Hannspad v0.23
# by Archimed
# Tweaks RAM"
echo 1536,3072,5632,6144,7168,8192 > /sys/module/lowmemorykiller/parameters/minfree;
echo 0,3,5,7,14,15 > /sys/module/lowmemorykiller/parameters/adj;
echo 0 > /sys/module/lowmemorykiller/parameters/debug_level;
echo 64 > /sys/module/lowmemorykiller/parameters/cost;
#Sdcache speedup sd read
echo 4096 > /sys/devices/virtual/bdi/179:16/read_ahead_kb;
echo 4096 > /sys/devices/virtual/bdi/179:24/read_ahead_kb;
echo 0 > /proc/sys/vm/swappiness;
#gives more mem to cache fs dentry and inode to save cpu
echo 10 > /proc/sys/vm/vfs_cache_pressure;
echo 65 > /proc/sys/vm/dirty_ratio;
echo 10 > /proc/sys/vm/dirty_background_ratio;
#echo 20480 > /proc/sys/vm/min_free_kbytes;
#page-cluster controls the number of pages which are written to swap in a single attempt
echo 0 > /proc/sys/vm/page-cluster;
echo 15 >/proc/sys/fs/lease-break-time;
#specifies the grace period (in seconds) that the kernel grants to a process holding a file lease after it has sent a signal to that process notifying it that another process is waiting to open the file
echo 10000000 > /proc/sys/kernel/sched_latency_ns;
echo 2000000 > /proc/sys/kernel/sched_min_granularity_ns;
echo 760000 > /proc/sys/kernel/sched_wakeup_granularity_ns;
echo 0 > /proc/sys/vm/oom_kill_allocating_task;
#TCP tweak
echo 0 > /proc/sys/net/ipv4/tcp_timestamps;
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse;
echo 1 > /proc/sys/net/ipv4/tcp_sack;
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle;
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling;
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes;
echo 30 > /proc/sys/net/ipv4/tcp_keepalive_intvl;
echo 25 > /proc/sys/net/ipv4/tcp_fin_timeout;
echo 404480 > /proc/sys/net/core/wmem_max;
echo 404480 > /proc/sys/net/core/rmem_max;
echo 256960 > /proc/sys/net/core/rmem_default;
echo 256960 > /proc/sys/net/core/wmem_default;
echo 4096 16384 404480 > /proc/sys/net/ipv4/tcp_wmem;
echo 4096 87380 404480 > /proc/sys/net/ipv4/tcp_rmem;
setprop wifi.supplicant_scan_interval 400;
#better scrolling speed through lists
setprop windowsmgr.max_events_per_sec 65;
## disable touch below 60 pixels
#setprop mot.proximity.delay 60;
# NEVER kill the launcher, speedup Home return but less free memory
echo -17 > /proc/`pidof com.android.launcher`/oom_adj;
#remounting file systems with noatime nodiratime flags ,save battery and CPU
for x in $(busybox mount | cut -d " " -f3);
do
if [ "$x" != "/acct" ] && [ "$x" != "/dev/cpuctl" ]; then
sync;
log -p i -t remount_volume "remount $x noatime nodiratime";
busybox mount -o remount,noatime,nodiratime $x;
fi
done;
#flags every mounted partition as non rotational and increases it's cache size for more read speed
array=("/sys/block/mtdblock3" "/sys/block/mtdblock7" "/sys/block/mmcblk3" "/sys/block/mtdblock4" "/sys/block/mtdblock0" );
len=${#array[*]};
i=0;
while [ $i -lt $len ];
do
rep=${array[$i]};
echo 0 > $rep/queue/rotational;
echo 4096 > $rep/queue/read_ahead_kb;
echo 512 > $rep/queue/nr_requests;
echo 1 > $rep/queue/iosched/low_latency;
let i++;
done;
#Battery temperature control
(while [ 1 ];
do
sleep 900;
TEMP=`cat /sys/class/power_supply/battery/temp`;
if [ $TEMP -gt 450 ]; then
log -p i -t BatteryTempState "script.sh battery temperature too high (`expr $TEMP / 10` C) reduce CPU -> 760 Mhz";
echo 760000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq;
echo 216000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq;
if [ $TEMP -gt 500 ]; then
log -p i -t BatteryTempState "script.sh battery temperature is critical (`expr $TEMP / 10` C) Emergency Shutdown";
reboot -p;
fi
else
log -p i -t BatteryTempState "script.sh battery temperature (`expr $TEMP / 10` C)";
fi
done &);
Und hier der Teil, der imho zu Standby-Abstürzen bei Flashback führt:
Code:
[COLOR="Red"]# Switch CPU frequency to lowest in sleep mode
CUR_MAX_CPU=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq`;
(while [ 1 ];
do
AWAKE=`cat /sys/power/wait_for_fb_wake`;
if [ $AWAKE = "awake" ]; then
echo $CUR_MAX_CPU > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq;
echo 216000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq;
echo 5000 > /proc/sys/vm/dirty_expire_centisecs;
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs;
log -p i -t Screenstate "script.sh AWAKE -> switching max CPU frequency $CUR_MAX_CPU hz";
fi
SLEEP=`cat /sys/power/wait_for_fb_sleep`;
CUR_MAX_CPU=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq`;
if [ $SLEEP = "sleeping" ]; then
echo 216000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq;
echo 216000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq;
log -p i -t Screenstate "script.sh SLEEP -> switching max CPU frequency 216 Mhz";
echo 40000 > /proc/sys/vm/dirty_expire_centisecs;
echo 60000 > /proc/sys/vm/dirty_writeback_centisecs;
#free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
#kill some process who use to much cpu in sleep
newsrepublic=`pidof com.mobilesrepublic.appytablet`;
mxvideoplayer=`pidof com.mxtech.videoplayer.ad`;
googlemaps=`pidof com.google.android.apps.maps`;
gapps=`pidof com.google.process.gapps`;
gallery=`pidof com.android.gallery3d`;
voice=`pidof com.google.android.apps.googlevoice`;
googlemaps2=`pidof com.google.android.apps.maps:NetworkLocationService`;
gallery2=`pidof com.flikie.wallpapers.gallery`;
kill $newsrepublic $mxvideoplayer $googlemaps $gapps $voice $googlemaps2 $gallery2;
log -p i -t Screenstate "script.sh kill pid $newsrepublic $mxvideoplayer $googlemaps $gapps $voice $googlemaps2 $gallery2";
fi
sleep 2;
done &);
[/COLOR]
Edit 1: Neue Version 0.22 eingefügt. Changelog (ich hasse Google Translator):
- einige Variablen geändert
- Größe des Lese-Cache erhöht (bessere Lesegeschwindigkeit)
- Es werden einige Prozesse beendet, wenn das Tablet im Batteriebetrieb in den Standby Modus geht, da diese im Standby zu viel Akku verbrauchen würden. Die Liste dieser Prozesse wird noch erweitert.
Edit 2: Neue Version 0.23 eingefügt. Changelog:
- Weitere Prozesse in die Liste Standby-kill eingefügt
- Temperaturüberwachung: Alle 15 Minuten wird die Temperatur des Akkus gecheckt. Ist die Temperatur > 45° C, wird die Taktfrequenz auf 760MHz reduziert. Ist die Temperatur > 50° C, erfolgt ein Not-Aus.
Edit 3: Meiner Meinung nach wirken sich die rot markierten Zeilen negativ auf die Stabilität im Standby aus. Nachdem mein Hannspad mit div. FB-Versionen und Kernels nach längerem Standby mit und ohne Netzteil immer abschmierte, habe ich aus dem gesamten Script die genannten Zeilen entfernt, seitdem keine Abstürze im Standby mehr. Die Funktionen zum Killen der überflüssigen Prozesse könnten allerdings drinbleiben, die hatte ich zuerst gelöscht, ohne Auswirkung.
Edit 4: Batteriekontrolle nach oben versetzt. Das Script läßt sich so einfacher per copy/paste in einen Texteditor kopieren und abspeichern. Den rot markierten Teil kann man nach Gutdünken noch anhängen. (Finde diese Code-Fenster trotzdem unschick)
Zuletzt bearbeitet: