Is your iPhone running slower than it did after you first jailbroke it? Do you have issues where apps are running slower or taking longer to load than they use to? Some of this can be caused by what you have chosen to install on your iPhone. Let’s take a look at some things that can cause your device to slow down.
Apps come in 3 categories: 1) Regular app. It only runs when you run it. Installing it is pretty harmless. It just copies files into /Applications folder. This will not slow your device down. 2) Daemon app. This will slow your device down. It is a process that stays running taking up both CPU, memory, and draining battery. 3) Mobile substrate addon. This is a springboard extension.
The problem:
The problem on iPhone is that you are very limited in memory. The device does not provide any memory swap or such. So when memory is full, apps start crashing. If background processes or springboard is taking up more memory than normal, then you run into problems like Safari crashing more often than not etc.
Apps
Regular apps generally won’t cause you any grief. Installation of these just copies files to a folder and they don’t run unless you run them. Most of them quit when you tap home. Apps that are known to run in the background could cause you system-wide slowdown and instability. In addition, installing apps, a lot of them, requires springboard to enumerate and buffer into memory an icon for each app. This isn’t all that significant, however. Each icon, uncompressed takes approximately 14kb of memory. 100 icons is only 1.4mb of memory. Not all that significant. So just installing applications won’t really impact you. All apps installed from AppStore just copy files and do not run in the background.
Daemon Processes:
For the most part you should just avoid any app that runs as a daemon. Learn to do without. Daemons are bad because they are processes that always run utilizing memory, CPU, and battery. Some examples of daemon processes include Intelliscreen (has to update the events). Note: not all Daemons are instant battery drainers. Some are very thin and use very little memory, cpu, and don’t really drain your battery. SSH, for example, is pretty thin and safe.
The real problem here is that you, as a normal user, have no way to know if the app you are installing contains a Daemon or not. Most apps do not, and those that do usually do not advertise as such. For the most part, you can assume any application that is providing you notifications or doing something while you do not interact with it must have some form of Daemon running to do so. Although I haven’t looked and could be wrong about this, I would suspect taskbar notifier and Intelliscreen both provide some sort of daemons.
Detecting daemon processes is pretty tough especially for the beginner. As of this writing, the only way to do so is to use the “top” command in SSH or terminal or the “ps” command. Then you need to know what should be running and compare it to what actually is running.
In the screenshot above you can see top running and “Categories” listed as a running process. This shows that Categories is running in the background. (Note: this only happens if you enable the “background” option in the Categories folder settings menus).
Mobile Substrate:
Mobile Substrate is an ingenious mechanism that allows for apps to extend the springboard. The springboard is your iPhone desktop that controls app launching, most preferences, and locking of the device. Mobile Substrate allows you to have apps that hook into the springboard and allow springboard to do things it normally cannot do. Examples of Mobile Substrate apps include Winterboard, SBSettings, Quickgold, and backgrounder.
In general, Mobile Substrate plugins are much better than daemons because they do not use any additional CPU or battery. They can, however, use more memory (depending on what the plugin is or does). In general, you do not want Mobile Substrate plugins installed that you are not using. How do you know what is installed? You have two options: 1) Look in /Library/MobileSubstrate/DynamicLibraries folder. 2) Open Cydia and start uninstalling mobilesubstrate. Do not actually uninstall this but check out the confirmation screen. It will show you all the other packages that are going to be uninstalled as a result of this action. Those are packages that depend on mobile substrate and are, therefore, mobile substrate plugins.
In the screenshot above, many of the “removing” items are Winterboard themes. The mobile substrate plugins are: attachment= for mailto, QuickGold, SBSettings, Winterboard.
I currently run several mobile substrate plugins and consider Winterboard, SBSettings, and Quickgold “must have” plugins. But you must be careful and do not just install any plugin that comes out. Know what you are getting yourself into.
Update: To clarify, do not avoid mobile substrate “just because” or you are missing out on some of the best reasons to jailbreak. My suggestion is instead to keep your mobile substrate list thin and only install what you really want. Springbridge can generally be uninstalled as it is no longer used. Some folks install every app that comes out and never uninstall what they don’t use.
What To Avoid:
This list is just my opinion. I’m not saying that these apps are dangerous or that the programmers aren’t great. In fact, some of these apps are written by Skrew, who is a very well respected developer. Also, it may be ok wth you if there is a penalty in performance for using some of these elements. Some of them are pretty cool and you may want to run them anyway. That’s fine so long as you do so with the understanding of what the price is that you pay. Anyways, here is my current “avoid” list:
1) Intelliscreen – I recommend avoiding this because I believe it drains battery more than without it. But more importantly, it hooks springboard but does so *directly* bypassing the safety of mobile substrate. This can cause system wide instability. The “performance boost” mode is known to cause instability and incompatibility with other apps. In general, I suggest not installing this app. Update: as of the last version I have tested, intelliscreen bypasses mobile substrate and hooks itself. This bypasses mobile substrate “safe mode” and should never be done. I would definitely hold off on this until it is a mobile substrate plugin.
2) Kate - The also hooks springboard without the safety of mobile substrate. Many mobile substrate issues are solved by simply uninstalling Kate. Kate is cool, but I prefer the power of Winterboard over Facelift.
3) Video Wallpaper – While this is extremely cool, this is a battery drainer. It uses CPU to play the video wallpaper. It also uses Skrew Common. Skrew common uses mobile substrate (great!) but the plugin is huge. It’s 1.2mb for the dylib. Update Nov 13, 2008: Skrew Common has been trimmed down to a much leaner 102k as of v1.54! The same functionality can be provided by Winterboard. I would not suggest running both together.
4) Winterboard Video Wallpaper themes – WInterboard is great. I am not suggesting to avoid Winterboard. But any themes that contain video content should not be used. The impact is the same as Video Wallpaper above.
5) Winterboard Themes with changing backgrounds – These themes are pretty neat. But they come at a cost. The theme requires springboard to be running javascript in a timer loop that runs every 15 seconds or however often the paper changes. This will suck more battery power than normal. Also, depending on how the theme is written, it may utilize a lot of memory if all the images are cached into RAM. The most efficient theme that changes background is “Saurik” that comes with Winterboard. Also, the BigBoss Fantasy Packs have been heavily optimized to only load 10 images at once (lower memory usage), and fade using webkit which is easier on the CPU because it’s hardware accelerated on the iPhone. Still, even these can use more battery than without. (I personally do run fantasy pack #2).
6) Backgrounder - Backgrounder is very useful and if you use it properly, you will have no problem. It lets you background many apps. But know what you are backgrounding. When an app is backgrounded, it is using CPU, Battery, and memory. It is just like a daemon only worse because it probably uses even more memory. Backgrounder, itself, is safe because when nothing is backgrounded, there is almost no extra overhead incurred. In other words, just having backgrounder installed isn’t much of a concern so long as you use it sparingly and know what you’re getting into when you do use it.
7) Categories - Installing categories is safe. However, make sure you are aware that enabling “background mode” on a folder uses up about 5mb of memory per folder you background. You should only background what you need to. I would recommend keeping your backgrounded folder count to 1 or 0. (Better to leave it to 0 and use Quickgold to launch most apps).
Other thoughts:
There are some apps that run all the time straight from Apple. They are: mobile safari, mobile mail, phone, and some other things. Of these apps, safari is the most alarming. It does not need to stay running and one way to free up some unused memory is to kill it. I plan to incorporate this concept into SBSettings.
In addition, some apps just take a long time to load on 2.x and I don’t believe any tricks in this post will help. They are SMS, Maps, and Settings. Notes also seems to take a while to load, but it “tricks” you by showing you the last note you were reading so it looks fast but you cannot type for a few seconds.