(Requirements: being literate, at least half a brain, common sense. If you don't meet these, listen to da song
and go away)
A CPU governor in Android controls how the CPU raises and lowers its frequency in response to the demands the user is placing on their device
1: OnDemand Governor:
Main goal of the ondemand governor is to switch to max frequency as soon as there is a CPU activity detected to ensure the responsiveness of the system. Ondemand jumps to maximum frequency and decreases the frequency gradually when CPU is less loaded/apporaching idle.
2: Userspace Governor:
This governor, exceptionally rare for the world of mobile devices, allows any program executed by the user to set the CPU's operating frequency.
3: Interactive Governor:
Can be considered a faster ondemand. Snappier with similar battery life.
4: Performance Governor:
This locks the phone's CPU at maximum frequency. Not very power efficient but God, it's fast.
Minimum and Maximum CPU Frequency
These are the values between which your cpu will scale it's clockspeed. The lower is Min value the less battery your phone should consume when not bothered. Max value is the border of how high you will let you CPU go.
The higher it goes the more battery it eats. Many people say it improves the performance, some that it doesn't. Too high values can cause freezes so don't be surprised when that happens
HTC Desire S values:
- Min 245-368
- Max 1024-1516
- Experimental 1612-1804
I/O scheduler basically determines the order in which things get written to or read from storage. It will prioritize each block of data based on which process is requesting the operation or how much time it takes to complete each operation
Inserts all the incoming I/O requests to a First In, First Out queue and implements request merging.
- Serves I/O requests with least number of cpu cycles. (Battery friendly?)
- Best for flash drives since there is no seeking penalty.
- Good throughput on db systems.
- Reduction in number of cpu cycles used is proportional to drop in performance.
Goal is to minimize I/O latency or starvation of a request. The same is achieved by round robin policy to be fair among multiple I/O requests. Five queues are aggressively used to reorder incoming requests.
- Nearly a real time scheduler.
- Excels in reducing latency of any given single I/O.
- Best scheduler for database access and queries.
- Bandwidth requirement of a process - what percentage of CPU it needs, is easily calculated.
- Like noop, a good scheduler for solid state/flash drives.
- When system is overloaded, set of processes that may miss deadline is largely unpredictable.
The ROW IO scheduler was developed with the mobile devices needs in
mind. Favoring READ requests over WRITEs decreases the READ latency greatly.
- Best READ values so very fast user experience
- Not so good at WRITEing
Completely Fair Queuing scheduler maintains a scalable per-process I/O queue and attempts to distribute the available I/O bandwidth equally among all I/O requests.
- Considered to deliver a balanced i/o performance.
- Easiest to tune.
- Excels on multiprocessor systems.
- Best database system performance after deadline.
- Some users report media scanning takes longest to complete using CFQ.
Instead of time slices allocation by CFQ, BFQ assigns budgets. Disk is granted to an active process until it's budget (number of sectors) expires.
- Believed to be very good for usb data transfer rate.
- Believed to be the best scheduler for HD video recording and video streaming. (because of less jitter as compared to CFQ and others)
- Considered an accurate i/o scheduler.
- Achieves about 30% more throughput than CFQ on most workloads.
- Not the best scheduler for benchmarking.
- Higher budget assigned to a process can affect interactivity and increased latency.
Set on boot
This option sets your CPU values on boot. It's good to let your phone run on your settings for a while before doing that.
Memory management and miscellaneous
zRam is a virtual memory, also known as swap space, which lives in the ram. Virtual memory is the part where the system stores memory fragments which are not accessed, making more room for apps to store information in the ram. From my experience makes phone faster.
- More memory for you.
- It uses CPU to compress/decompress so battery dies faster/might cause some lags.
Allow purging of assets
Purging of bitmap memory assets. Think of it as allowing stale items in RAM to be tossed out when you need more RAM.
Kernel samepege merging
Let's say that we have processes called "A" and "B". "A" needs "Y" data to be loaded in memory to run and "B" needs "Z" data. Assuming that "Y" and "Z" are identical kernel samepege merging merges those identical processes into "X" thus increasing available RAM.
16bit transparency & Surface iprovement
Some users claim better performence/smaller battery usage after enabling 16bit and disabling Surface improvement