Introducing XDA:DevCon – A Conference For Developers By Developers
XDA Developers Android and Mobile Development Forum
Forgot your password?
 
Post Reply+
Tip us?
 
arrrghhh
Old
(Last edited by arrrghhh; 1st September 2011 at 02:31 AM.)
#1  
Retired Forum Moderator - OP
Thanks Meter 1989
Posts: 8,473
Join Date: Feb 2007

 
DONATE TO ME
Default [[Speed Improvements]] Brainstorming & Testing Thread!!

Hey guys,

Seems there's a lot of ways you can improve the speed of Android in general. Some seem to be snakeoil... others, work quite well and there's proof to back it up.

I'm only interested in discussing the latter .

A lot of people have helped me gather a better understanding of Android (hyc, stinebd to name a few) in addition to a lot of Google searching. I am going to compile a list of what I have done, I would like to hear what you guys have done! Most app killer apps / app control will already be addressed, so those tools need not apply... I'm looking for real, permanent fixes here without adding more apps!

I am also trying to have topics that are easy working up to advanced. Obviously the more advanced topics are going to be harder to do. You've been warned.

So here's the disclaimer.

****DISCLAIMER****

Speed is as always relative. That basically means I don't want arguments about which build is faster. I want to argue about how to make every build faster .

Also, these tips should apply to any build, any device... they are pretty generic tips, but are obviously specific to Android, with some idiosyncrasies that apply to our port that wouldn't apply to native Android devices. Some is common sense, others are real ways to tear into the system. Hope you enjoy it!



Topic 1

Difficulty Easy - Apps/Widgets

I've noticed the number of widgets i have on my screens, or the number of apps that I have installed/are running in the background to greatly effect performance, in an obviously negative way.

Once I removed all the widgets (I only have the basic analog clock widget & the Google search widget on one desktop...) this seemed to improve general speed. One minor thing to check is if apps are set to auto/background sync. Only enable the ones you really want syncing, others just check manually.

On this same topic, replacing the launcher (the stock launcher in Android, Launcher2 is quite slow) can help immensely. I like ADW, but I've used LauncherPro in the past and it is good. Zeam also seems like a good launcher. I haven't used Go Launcher EX, I've heard good and bad things about it. Use what works best for you, try 'em all!

The last thing on this topic I would like to mention is animations. Settings -> Display -> Animation -> No animations can make the phone feel quite a bit snappier, obviously at the expense of the look/feel of the OS.

Topic 2


Difficulty Easy - Controlling app 'net Access

This leads me into the next topic, DroidWall. I've noticed that blocking apps from accessing the internet has been a very good thing - it's not so much a performance booster (although it probably does provide a little bump) it's mostly about battery life. Just be warned, if you block an app that is set to background sync, it will probably have very negative effects. Only disable an app's access to the internet with DroidWall after you've checked that app's background sync feature is disabled. I have a few apps allowed in DroidWall, and the rest are blocked. You can "whitelist" everything and check apps you want to block, or "blacklist" everything and check the apps you want to allow. It's a little annoying to remember to enable/disable DroidWall (I use the DroidWall widget to enable/disable it globally) but if you do, it is much better - you have complete control over how apps access the 'net on your device. It is available on the Market.

Topic 3


Difficulty Moderate - SD cache/readahead tweaking

The only reason I'm calling this one 'moderate' is the number of choices you have for settings for this... It's basically telling the SD card how much to hold on to or... read "ahead" if you will . This was turned way up in FRX07, (from 256kb to 2048kb or 2mb...) and I think this might be the source of a lot of the complaints of 'mini-resets' if you will where the boot animation is suddenly seen after a long system hang...

So some cards will work better with a larger setting - I've heard some with spankin new C6 cards that said 3072kb or 3mb was a good setting. Others have found a sweet spot at 256kb or 1024kb (1mb).

There are two ways of doing this - you can hack the init in the rootfs and adjust the setting manually, or be lazy like me and use SD Booster (from the Market). Adjusts the same settings, and they are applied immediately!

I would like to find a "sweet spot" - a good default if you will. Can folks test out 512kb and 1024kb, see if you have any more mini-resets within Android or any other slowness, etc... Obviously this isn't a cure-all for the slowness or the mini-resets, what we're looking to do is mitigate the effects. So let's focus on that, thanks!

Topic 4


Difficulty Moderate - Overclocking

Overclocking is obviously one relatively easy way to improve the speed of Android. In your startup.txt, add a line
Code:
acpuclock.oc_freq_khz=710400
for example to overclock to 710.4mhz. How did I find this value? I actually put in 714000, but if you look at dmesg near the beginning you'll see "ACPU running at ..." - that's what clock is the actual maximum. It goes in 19.2khz increments.

Feel free to experiment with how high your phone can go, just be warned that the higher you go the potential for failure goes up as well . Phone shouldn't blow up, but it might not work correctly or at all. Rebooting and scaling it back will fix it.

Here's the full *example* startup.txt:

Code:
set ramsize 0x10000000
set ramaddr 0x10000000
set mtype 2292
set KERNEL zImage
set initrd initrd.gz
set cmdline "lcd.density=240 msmvkeyb_toggle=off gsensor_axis=2,1,3 pm.sleep_mode=1 physkeyboard=rhod400 acpuclock.oc_freq_khz=710400"
boot
You can put the command anywhere in the cmdline section, just make sure it's between the quotes and at least one space between each command.

Topic 5


Difficulty Advanced - How Android Manages Memory/apps

Ok, I'm going to take two approaches to this. The first, is the full explanation on how Android manages memory.

Please feel free to read the post I originally read that inspired me to start looking at this stuff - How to configure Android's *internal* taskkiller. It was very helpful for me to grasp how Android manages applications. This is the reason why application killers are not a good thing...

If you want to do it manually, Starfox suggests:
Code:
echo "1536,3072,8192,10240,12288,20480" > /sys/module/lowmemorykiller/parameters/minfree
To try to do these commands, adb is very useful. Once you get adb shell working, then you just need to "su" (provides 'super user' privileges (root)) and put in the echo command above ^^.

I had another user (thanks icevapor) suggest this script -
[Script] V6 SuperCharger! HTK & BulletProof Launchers! The ONLY Android MEMORY FIXER!

I tried it myself, and it works very well. This thread is a little overwhelming, but the jist of it is this:
  • Install Script Manager (on the Market)
  • Run the V6 SuperCharger script. I use "Aggressive 1 Settings" (#2) and then I use the OOM Grouping Fixes & "Hard to Kill" launcher (#17)
  • Point Script Manager to run /data/99SuperCharger.sh to run as root & on boot. This will ensure the tweaks are reapplied after a reboot.

Topic 6


Difficulty Advanced - Managing Apps that auto-start on boot


This is one of the most annoying things in Android. When you have no apps installed, it seems very fast. Then you install apps, and you never seem to get that original speed back... Now you can!

This is kind of difficult to do, I am still getting the hang of it... but here goes. All credit goes to hyc, his original post.

The basic idea here is you run a logcat (adb logcat is easiest here, or you can use GetLogs to pull logcat...) Look in this log for "for broadcast" and find apps that start on boot. For example,
Code:
Line 41: I/ActivityManager( 1394): Start proc nextapp.systempanel for broadcast nextapp.systempanel/.monitorservice.BootReceiver: pid=1752 uid=10060 gids={3003, 1015}
Notice there are two sides of the "for broadcast". The name of the package (nextapp.systempanel) and the name of the service, "nextapp.systempanel/.monitorservice.BootReceive". I made the mistake of disabling the app (the left side). Do not do this, you want to disable the right side!

So in the shell,
Code:
pm disable nextapp.systempanel/.monitorservice.BootReceive
This will be persistent across boots, it will go with your data.img.

Obviously this was just one example of an app to disable. So long as you disable the right side (after the 'for broadcast') you shouldn't disable anything that will cause a serious problem. The apps should still work, but for example if you disable Google Voice you won't get messages until you open the app. So think about that... You disable Titanium Backup schedules.BootReceiver, the schedules for Titanium Backup (if you have any) won't run. Stuff like that. Disable calendar, you won't get calendar events... Disable clock no alarms. Get it? Good. I have been rebooting several times, and I keep checking what is set to start on boot. I'm not quite happy with it yet, but there's some things I'm leery of disabling. Just be wary, if you do disable something and don't like it - just pm enable <whatever you disabled>.

Now experiment away! The one caveat is if you do break something with pm disable (and it's serious) you might get a failure to boot. It really depends on how bad you mess up. If you make a copy of your data.img before you start making these changes, you can revert to that data.img and start back there.
The Following 12 Users Say Thank You to arrrghhh For This Useful Post: [ Click to Expand ]
 
arrrghhh
Old
#2  
Retired Forum Moderator - OP
Thanks Meter 1989
Posts: 8,473
Join Date: Feb 2007

 
DONATE TO ME
Alright guys. Going to use this thread as a way to brainstorm about ways to improve the speed. Read up what I've posted, let me know if I did anything wrong... Also let me know what you guys do to improve speed!

Don't care about what build you're running, this thread isn't about what build is fastest - this is a how do I make every build faster thread.
The Following User Says Thank You to arrrghhh For This Useful Post: [ Click to Expand ]
 
arrrghhh
Old
#3  
Retired Forum Moderator - OP
Thanks Meter 1989
Posts: 8,473
Join Date: Feb 2007

 
DONATE TO ME
I've noticed Starfox's test kernel with that turbo mode enabled actually creates quite a boon. It's RHOD-only, so I didn't include it in the first post...
The Following User Says Thank You to arrrghhh For This Useful Post: [ Click to Expand ]
 
vinceweis
Old
#4  
vinceweis's Avatar
Senior Member
Thanks Meter 11
Posts: 158
Join Date: Jan 2008
Location: Gilbert, AZ
Quote:
Originally Posted by arrrghhh View Post
Topic 4


Difficulty Advanced - How Android Manages Memory/apps
.....
Right now I'm running (Thanks Starfox):
Code:
echo "1536,3072,8192,10240,12288,20480" > /sys/module/lowmemorykiller/parameters/minfree
.....
One word about durabilty:
If you change the settings like this, they are NOT PERMANENT.
I noticed that these settings are written in the /init.cfg/init.froyo.rc file. If I make the changes there, will they be permanent? Is this still the file that loads with FRX07? I am still playing with the settings so I have not tried to make anything permanent yet. I was trying to minimize the number of mini-reboots after an install. The new ext4 seems to help a lot, but I was still playing with this also.
1st Device: AT&T Vivid running WCX ICS 4.04 Sense 4.1 MOD
2nd Device: HTC Rhodium/AT&T Tilt 2, running Android GBX0* + 3.4.17 kernel on NAND, Radio:4.49.25.95 | HSPL v2R3 | AT&T in California
 
arrrghhh
Old
(Last edited by arrrghhh; 18th August 2011 at 05:50 AM.)
#5  
Retired Forum Moderator - OP
Thanks Meter 1989
Posts: 8,473
Join Date: Feb 2007

 
DONATE TO ME
Quote:
Originally Posted by vinceweis View Post
I noticed that these settings are written in the /init.cfg/init.froyo.rc file. If I make the changes there, will they be permanent? Is this still the file that loads with FRX07? I am still playing with the settings so I have not tried to make anything permanent yet. I was trying to minimize the number of mini-reboots after an install. The new ext4 seems to help a lot, but I was still playing with this also.
Yea, that will definitely make them permanent.

I also thought using the user.conf file would, but someone PM'd me and said that didn't work...

I also was shown that there might be a much easier and more thorough way of doing that step... Seriously considering redoing that whole topic because of this:

[Script] V6 SuperCharger! HTK & BulletProof Launchers! The ONLY Android MEMORY FIXER!

I still need to verify if it works on my phone, but I don't see why it wouldn't...

Bah, it seemed to work but isn't persistent on a reboot... I'll try to figure out why. I see some issues with stock ROM's, so perhaps the issue is similar...

Edit - OK, using Script Manager I think I figured it out... I will update the first post with directions on how to use that "SuperCharger" script in lieu of the manual method.
The Following User Says Thank You to arrrghhh For This Useful Post: [ Click to Expand ]
 
ACoolGuy
Old
#6  
Senior Member
Thanks Meter 56
Posts: 147
Join Date: Jan 2009
Quote:
Originally Posted by arrrghhh View Post
Yea, that will definitely make them permanent.

I also thought using the user.conf file would, but someone PM'd me and said that didn't work...

I also was shown that there might be a much easier and more thorough way of doing that step... Seriously considering redoing that whole topic because of this:

[Script] V6 SuperCharger! HTK & BulletProof Launchers! The ONLY Android MEMORY FIXER!

I still need to verify if it works on my phone, but I don't see why it wouldn't...

Bah, it seemed to work but isn't persistent on a reboot... I'll try to figure out why. I see some issues with stock ROM's, so perhaps the issue is similar...

Edit - OK, using Script Manager I think I figured it out... I will update the first post with directions on how to use that "SuperCharger" script in lieu of the manual method.
I went ahead and began using this script. Not sure if the phone is any speedier yet, as I just got the 99Charger script to run at boot using script manager. Will report back my findings. Im using the Aggressive 1 settings with launcher set to bulletproof.
 
arrrghhh
Old
#7  
Retired Forum Moderator - OP
Thanks Meter 1989
Posts: 8,473
Join Date: Feb 2007

 
DONATE TO ME
Quote:
Originally Posted by ACoolGuy View Post
I went ahead and began using this script. Not sure if the phone is any speedier yet, as I just got the 99Charger script to run at boot using script manager. Will report back my findings. Im using the Aggressive 1 settings with launcher set to bulletproof.
Yup, seems to reapply the settings correctly on a reboot. The only problem with Script Manager doing it is obviously the settings don't get applied until well into the boot process - well after the UI has come up.

Not the end of the world, at least it does get reapplied correctly now.

One last thing - in the article it seemed to indicate the 'bulletproof' method is no longer advisable, and the 'hard-to-kill' method should be utilized.

I'm going to rewrite the first post now.
 
ACoolGuy
Old
#8  
Senior Member
Thanks Meter 56
Posts: 147
Join Date: Jan 2009
Quote:
Originally Posted by arrrghhh View Post
Yup, seems to reapply the settings correctly on a reboot. The only problem with Script Manager doing it is obviously the settings don't get applied until well into the boot process - well after the UI has come up.

Not the end of the world, at least it does get reapplied correctly now.

One last thing - in the article it seemed to indicate the 'bulletproof' method is no longer advisable, and the 'hard-to-kill' method should be utilized.

I'm going to rewrite the first post now.
I went ahead and set the launcher to hard to kill. Also I have manually editted /data/99Chargerminfree with your minfree values and it now boots with your minfree values, which im happier with. ill have to run it thru the paces to see if memory is managed as well as he claims.
 
nasapunk88
Old
#9  
nasapunk88's Avatar
Senior Member
Thanks Meter 17
Posts: 163
Join Date: Aug 2008
Default autokiller memory

I've been using this app, AutoKiller Memory, from the marketplace and it seems to be working fine. You can put in the values you want for the 6 fields and in settings enable "apply settings on boot". I've ran
Code:
# cat /sys/module/lowmemorykiller/parameters/minfree
to double check after my reboots and without touching the app these changes took affect =). Of course like you said for script, it won't happen right at the start of the boot process.
Samsung Galaxy S II (SGH-I777)
Rom: CyanogenMod 10 (Android 4.1.1)
Kernel: Siyah v4.1beta5
Theme: ASOP
Network: AT&T
 
arrrghhh
Old
#10  
Retired Forum Moderator - OP
Thanks Meter 1989
Posts: 8,473
Join Date: Feb 2007

 
DONATE TO ME
Quote:
Originally Posted by nasapunk88 View Post
I've been using this app, AutoKiller Memory, from the marketplace and it seems to be working fine. You can put in the values you want for the 6 fields and in settings enable "apply settings on boot". I've ran
Code:
# cat /sys/module/lowmemorykiller/parameters/minfree
to double check after my reboots and without touching the app these changes took affect =). Of course like you said for script, it won't happen right at the start of the boot process.
That app seems good. It just adjusts the underlying values for Android's memory management, which is exactly what we want. Kudos.

The reason I didn't want an app was a) I don't want more overhead and b) I wanted to have control over it. I wanted to be damned sure the values that were changing were what I wanted to change, and not something else.

 
Post Reply+
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

report this ad
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Go to top of page...