Honeycomb Optimierungen fürs Hannspad

heinerl

heinerl

Stammgast
Threadstarter
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:

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:
M

mrverplant

Neues Mitglied
Das hört sich nach ziemlich sinnigen Änderungen an. Gerade beim Launcher und Browser ist mir das mit der Speicherverwaltung auch schon unangenehm aufgefallen. Mal sehen, ob ich das Script ausprobiere. Ansonsten bleibt ja auch zu hoffen, dass sich die MODer die Änderungen mal ansehen und sie ggf. übernehmen.
 
K

Klikidiklik

Ambitioniertes Mitglied
Werd ich heute Abend mal ausprobieren. Ergibt Sinn das Ganze. Mich stört es auch immer, dass wenn man während dem Surfen im Internet mal was anderes macht, sehr oft die Seite neu geladen werden muss. Das ist schon etwas ärgerlich. Hört sich zumindest gut an.
 
M

mikaole

Gast
das hört sich interesannt an. Werde gleich mal testen.
So bin dabei. Multitasking wird wesentlich besser. Launcher sofort komplett da.
Mir fällt auf, dass ich plötzlich wieder überall Werbung habe. Wird von dem Script dort irgendetwas beeinflusst?
 
Zuletzt bearbeitet von einem Moderator:
R

rxtarct

Neues Mitglied
mikaole schrieb:
Wird von dem Script dort irgendetwas beeinflusst?
Nein. Das Skript ändert nur etwas auf niederer Betriebssystem-Ebene (mit Ausnahme des Launchers). Ich kann mir nicht vorstellen, dass sich deshalb etwas an der Werbung ändert.
 
K

kza

Fortgeschrittenes Mitglied
:scared:Kann auch gut sein, dass ich mir das aufgrund meiner Freude über das Touchpad einbilde, aber es scheint insgesamt einen ordentlichen Geschwindigkeitsschub zu geben :D
Das mit Multi-Tasking funktioniert aufjeden Fall wie beschrieben und AdFree tut auch noch was es soll ;)
 
M

markus.t

Neues Mitglied
wie macht man das den? also das "ausführen"
 
4dro1d

4dro1d

Lexikon
Ich zitiere: "Es muß als script.sh in den Ordner /system/etc/ kopiert werden. Um das Script wieder zu entfernen, die Datei einfach wieder löschen."
 
mamo1leg

mamo1leg

Ambitioniertes Mitglied
Ich bin ja manchmal ein bisschen begriffsstutzig, aber ich fasse mal zusammen:

1. Text von >> #!/bin/bash << bis >> done &); << kopieren und als neue Datei "script.sh" speichern.
2. Die Datei in den Ordner "system/etc/" kopieren.
3. Hannsi neu booten

Ergebnis: Alles läuft flotter

So einfach geht Computer......

Also im Ernst: Ich habe es gerade so gemacht wie beschrieben und bin überrascht von der Geschwindigkeit, mit der ich zwischen den Programmen wechsle, klasse.
Ich habe sogar den Eindruck, dass der Touchscreen besser auf meine Wurstfinger reagiert, aber das kann täuschen.

Ausser dem Klick auf Danke kommt hier noch mal ein dickes

DANKESCHÖN!
 
timt

timt

Fortgeschrittenes Mitglied
mamo1leg schrieb:
1. Text von >> #!/bin/bash << bis >> done &); << kopieren und als neue Datei "script.sh" speichern.
muss man nicht mal - der link namens script oben is genau die datei die man braucht ;)

hat schon irgendwer auswirkungen auf akkulaufzeit bemerkt?
 
M

mikaole

Gast
Hatte mit dem script bisher auch keine freezes mehr. Das kann aber auch am 4er kernel liegen. Internet scheint auch ein wenig schneller zu laufen. Seiten in Opera bleiben im CACHE und sind sofort da ohne neu zu laden.
 
M

markus.t

Neues Mitglied
geght nicht hab den es dateiexplorer der sagt immer darf da nix hinkopieren
 
Schnulzi 2.0

Schnulzi 2.0

Erfahrenes Mitglied
markus.t schrieb:
geght nicht hab den es dateiexplorer der sagt immer darf da nix hinkopieren
Musst du vorher als schreibbar mounten. Der Root Explorer kann das z.B.
 
M

markus.t

Neues Mitglied
timt schrieb:
muss man nicht mal - der link namens script oben is genau die datei die man braucht ;)

hat schon irgendwer auswirkungen auf akkulaufzeit bemerkt?
die müsste doch gleich bleiben schließlich sind die apps nur laänger im speicgher aber pausiert halt
 
T

TheChoosen

Ambitioniertes Mitglied
selbes Problem bei mir mit dem file Explorer hd. kann es einfach dort nicht einfügen .... der hat doch eigentlich Root Zugriff.
 
MP2005

MP2005

Experte
TheChoosen schrieb:
selbes Problem bei mir mit dem file Explorer hd. kann es einfach dort nicht einfügen .... der hat doch eigentlich Root Zugriff.
mußt du in den einstellungen aktivieren,rootzugriff
 
T

TheChoosen

Ambitioniertes Mitglied
die Option gibt es nicht bei mir... habs jetzt mit dem root Explorer hinbekommen. funzt....!

/Edit:

hatte es jetzt das erste mal, das das Hannspad nicht aus dem Standby aufwachen wollte... Hängt wohl mit dem Script zusammen...
 
Zuletzt bearbeitet:
Oben Unten