I've made a very simple application which can be used to set cpu scaling frequencies and governor. Yeah, imagine SetCPU without profiles, minimal use of RAM, released as open source, and requiring CyanogenMod (or any sysfs-enabled ROM). "No frills" is the right description for it. Source is released under the Apache License, version 2.0, but the resources (i.e.: icons) are released under their original license. The notification icon is mine and is proprietary. This should avoid further market scams.

I guess it depends on whether CM6 (and lower) will get the CPU settings page and whether people find it useful..
Looks like some people are finding it useful.

Problem is: I'm currently calling it "CyanogenMod CPU Governor" (yeah, boring) and I'm using CyanogenMod icon for it. Since it won't be included I feel like I should find a different name and icon, and this is where the community could give back :P... or get a plain "Market" icon and "GUI for cpufreq settings" name.

Features
- Easy GUI to set frequencies and governor.
- "safety valve" to avoid boot-loops in case of unsafe settings (more info in the FAQ)
- Stats screen to see the effective usage of frequencies

Translations & Localization
Translations are welcome and they are now handled through GetLocalization! It'l make it way easier for people to translate it and for me to update them. I cannot stress enough how I am grateful for the following people, who originally translated this app. Thank you guys! (and keep translating by creating an account on GetLocalization, please! )

FAQQ: What files do I need?
A: Download the .apk and install it the way you prefer. The .zip is not a flashable zip and is meant for other developers.

Q: I am a ROM cook, can I put your app in my ROM?
A: Sure do! Just contact me and I'll send you the latest .apk. Be sure to make it so that people will get market updates.

Q: Do you plan on adding profiles? I'd love to select a different profile for when my screen is off!
A: Short answer is "No". I think that profiles are useless, because that's what governors are already: a profile for your CPU to follow while changing frequencies.
Adding profiles would mean adding the need for more memory, the need to run more often, check if something is happening (screen on, screen off and so on)... all of this without a real benefit.

Q: What is the safety valve you added in 1.3?
A: If you enable "Apply on boot", the "safety valve" works this way: the app checks if your phone didn't shut down properly or either a file named /data/.nocpu or /sd-ext/.nocpu exists.
If this is the case, the values are not applied to avoid a "reboot-loop".
Please note that there are some apps on the market which claim to perform a faster reboot but what they do is like pulling out the battery! Now... do you think it's a proper shut down? I guessed so...

Q: Wait, what about those /data/.nocpu /sd-ext/.nocpu files?!
A: They are empty files which were chosen by NameLessJedi as "safety valve" for his own CMPart inside of CyanogenMod7 (remember the history of this app? ). We decided to cooperate, so I added support for the files and gave him the code to detect an improper shutdown at boot, which he added to his tool. Open source wins!

Q: What are governors and which one should I choose?
A: CPU frequency scaling allows you to change the clock speed of CPUs on the fly. This can save power, because the lower the CPU clock speed, the less power the CPU consumes. Governors are different policies to scale frequency.

- powersave will always set the "min" and never change it
- performance will always set the "max" and never change it
- ondemand (usually the default) will raise the value by a step up when the cpu is used, and lower the value by a step down when the cpu is not (much) used.
- conservative is like ondemand but will be slower when changing frequencies
- interactive is (conceptually) like ondemand but will be quicker when changing frequencies.
- smartass is (conceptually) like interactive, but I haven't understood yet why it's so much smart and loved by users.
- userspace will do nothing at all, so don't choose it. I may hide it in a future release to avoid confusion For a fine grained explanation, check this post!

Q: And what about the I/O scheduler option?
A: I/O means Input/Output and it deals on how read and writes are performed on the internal NAND (not the external card!).
Thanks to roccoadam32, here is a description of the different schedulers:

Quote:

The Completely Fair Queuing (CFQ) scheduler is the default algorthim in Red Hat Enterprise Linux 4. As the name implies, CFQ maintains a scalable per-process I/O queue and attempts to distribute the available I/O bandwidth equally among all I/O requests. CFQ is well suited for mid-to-large multi-processor systems and for systems which require balanced I/O performance over multiple LUNs and I/O controllers.

The Deadline elevator uses a deadline algorithm to minimize I/O latency for a given I/O request. The scheduler provides near real-time behavior and uses a round robin policy to attempt to be fair among multiple I/O requests and to avoid process starvation. Using five I/O queues, this scheduler will aggressively re-order requests to improve I/O performance.

The NOOP scheduler is a simple FIFO queue and uses the minimal amount of CPU/instructions per I/O to accomplish the basic merging and sorting functionality to complete the I/O. It assumes performance of the I/O has been or will be optimized at the block device (memory-disk) or with an intelligent HBA or externally attached controller.

The Anticipatory elevator introduces a controlled delay before dispatching the I/O to attempt to aggregate and/or re-order requests improving locality and reducing disk seek operations. This algorithm is intended to optimize systems with small or slow disk subsystems. One artifact of using the AS scheduler can be higher I/O latency.

In this new version, the app tries to set the I/O scheduler on every block device except for loopN and zramN, so it will match mmcblkN, mtdN (should it matter) and stlN. If you have a device with a different name, curse your manufacturer and kernel author, but it should work provided you at least have mmcblk0 to read supported schedulers. Yeah, it's not perfect but should be more than enough.

Q: ... can you translate it into layman terms?
A: A-yup.
CFQ: good if you have a multi processor (we're not talking dual core... much many more cores...), multi "card" system. We don't. 'nuff said.
Deadline: fast, fast, fast, but maybe one of your services will "clog" all the writes while your gmail is waiting to open that email you want to read. And maybe not.
NOOP: who said Deadline was fast? NOOP is "the fast". (NOOP = NO OPeration = nuthin' to do... ). Good if the optimization is done at the hardware level. 99% of our devices do.
Anticipatory: surely our devices have small and slow "disk" subsystems, so maybe it's worth a shot.

Requested features and roadmap
- Support for different settings in dual-core devices: investigating if it is even possible.It looks like it's possible! It looks like it's useless.
- Sort statistics in order of cpu%: 1.19
- Add "deep sleep time" to stats: 1.19
- Charts in stats: 1.19
- A bigger widget: just send me mock-ups, I'll think about it
- Silent notification on boot: 1.19
- A setting to disable the safety valve on unsafe shutdown: with a big fat warning of "Don't complain to me", ok. 1.21
- Fix the dual core bug, it's the first request! For crying out loud! There's no bug!

2012-03-18 - 1.22
- Hopefully fixed crash when refreshing stats on some devices. If you still get a crash, please contact the developer through email to help him fix this issue!
- Updated Hungarian translation
- Added Ukrainian and Russian translation

2012-03-11 - 1.21
- Android 4.0 Ice Cream Sandwich look & feel on Android 2.1 and above!
- Android 1.6 and Android 2.0 users can use the new app "No-frills CPU Control CLASSIC" which has the old look & feel AND all the features of the regular app.
- Ability to disable safety-valve. Use with caution!
- Changed kernel detection in CPU data. Please send your CPU data again, if you can.

2011-11-05 - 1.18
- Fixed "black screen" issue with HTC Sensation, HTC EVO 3D and (possibly) other devices. Note: as with other devices, for best results you need a custom kernel, stock HTC will not allow frequency scaling even if you have root.

2011-10-10 - 1.14
- Changed the "unclean shutdown" check to support apps such as LCD-Density changer and such
- First release of an homescreen widget
- After updating, clear app data then set again options (only this one time)

2011-07-04 - v 1.11 (btw, happy 4th of july to da peeps in the us!)
- Initial support for dual core devices (LG G2X/Optimus Dual, Samsung Intercept, ...). Please report any issues you may have. There shouldn't be any, though...
- Added i/o scheduler selection for internal storage memory
- Rewritten detection code to support more non-standard* kernels
- New german translation, many thanks to jdb78. Man, thanks and sorry for taking so long to publish your translation!

2011-05-28 - v 1.10.1
- Fixed english typos in the About screen
- New japanese translation, thanks to Aozora Genei

2011-05-22 - v 1.10
- New about screen added, with changelog, FAQ and license. App now looks like a real one.
- Awesome new icon, courtesy of Anil K Solanki Design (www.thisiswhatwedo.com). Thanks Anil! Little easter egg: if you want to see the old icon, "tap" the new one in the about dialog.
- Fixed FC when trying to send CPU data with no email client installed (d'uh!)

2011-03-14 - v 1.7
- First Android Market release. The app is the same as 1.6.1 but with a different package name due to the "BrinkDroid incident". Binary package has been removed from this post in order to avoid duplication, but don't worry: the app is still free and it will always be both free and open source.
Please, manually uninstall the app from the phone and then install through market, this will help you stay up to date with my releases. But I already know that if you are reading this, you're someone who is already keeping up to date...

2011-03-04 - v 1.6
- Added "View stats" to see the percentage of usage for each available frequency. Refresh icon is courtesy of Joseph Wain / glyphish.com
- Slight changes in the code.
- Some new texts for translators! Whee!

2011-02-26 - v 1.5 "Why do I have only two frequencies?!?"
- Added support for weird kernels which don't expose the available frequencies as they should. This should fix the issue for people having only two frequencies to choose. Let me know how it goes.

2011-02-25 - v 1.4
- Governor is now applied first, frequencies last. This may or may not fix smartass. It's not so smart from the reports I've got.
- Added german translation (thanks to zantekk)
- Thanks to everybody who sent his data and hasn't got a personal answer. I appreciated it! 1.4 adds kernel and rom information to the sent data, which should have been there in the first place...

2011-02-05 - v 1.3
- Added safety valves on boot: if unclean shutdown is detected or /data/.nocpu or /sd-ext/.nocpu exist, the frequencies will not be updated.
- Added a menu with an option to send me CPU data. No more logcat needed! Horray!
- GUI: configuration screen shows both current and desired values. You'll know if the app is working.
- i18n: added some new strings, translators please send me your new files and thank you for your work!

2011-01-22 - v 1.2.3 EXPERIMENTAL
- Experimental version for Wildfire and Galaxy Tab (and all the devices which didn't work). Please, download and send me a logcat of the app.
- Removed source package due to misunderstandings. No panic, it's still open source and I'll add it back later.

MARCH 12TH 2011: MARKET FRAUD ALERT! Somebody called "BrinkDroid" has published an old release of this app on the Android Market, selling it for $1.99. This is NOT endorsed or approved by me at all, and a DMCA infringement notice has been sent by Google. With "BrinkDroid" releasing my app on the market, I cannot release it anymore until Google fixes this.

MARCH 14TH 2011: Yesterday BrinkDroid contacted me and he agreed to remove the application from the Android Market. Unfortunately, the package name is now "owned" by him and I cannot use it anymore. For this reason I have released a 1.7 release which is identical to 1.6.1 but with a new package name (it.sineo.android.cpu -> it.sineo.android.noFrillsCPU). In order to avoid further scams, I have released the app on the Market, see the QR code.
Thank you all for your support.

Any chance it will run on the new OC Kernels on the Nook Color? SetCPU is way sketchy. I do not no what type of kernels were just released but I have one up and running on my Nook now. They were not made by the CM team. Would there be any harm trying?

Problem is: I'm currently calling it "CyanogenMod CPU Governor" (yeah, boring) and I'm using CyanogenMod icon for it. Since it won't be included I feel like I should find a different name and icon, and this is where the community could give back :P... or get a plain "Market" icon and "GUI for cpufreq settings" name.

XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality.Are you a developer?