Wednesday, October 3, 2012

A little more phone work...

I think by now I have my phone where I want it. After tinkering with just about everything, I've found the balance in performance and battery life I like.

First off, sticking with the Wheatley governor. I tested OnDemand and Interactive along with Wheatley. OnDemand generated the best battery life, but suffered jerky frame rates occasionally. Interactive arguably provided the most fluid performance, but battery life suffered. The phone didn't sleep nearly as much as it should. I would guess I lost about 20% battery life over the other governors. In the end, I found Wheatley, the governor that was specially designed for this kernel, provided the best of both worlds. It's really more of a jack of all trades. It doesn't excel in either, but overall is the best for day to day use.

The I/O scheduler was initially a wash, but further work with noop proved that it was the inferior of the two. Noop showed more lag, reduced battery life, and overall degrading performance. Sio is now my preferred scheduler, which is also the stock setting.

GPU remains constant at 384 MHz. The small boost in performance over the stock setting of 307 MHz without battery loss is obvious. The 512 MHz caused tons of visual glitches while scrolling through menus and such. This setting remains the same as before.

FSync off is a setting I found benefited the system quite a bit. At the cost of potential data loss on a crash, I noticed less lag and overall smoothness in animations. With the setting off it also boosts battery slightly.

Core and MPU overclock are staying at stock. Core OC caused reboots frequently and greatly reduced stability. MPU overclock is a bit of a wash. You can shift the setting either way to the maximum of 1.6 or 1.712 GHz, but overall the performance didn't pan out that much better. For benchmarking, it's a good idea, but daily use it just reduces stability and battery life.

Voltages are still keyed with the smart reflex system. I've reduced them as low as the system says is safe and have noticed a greatly enhanced battery life.

All other settings remained stock. Overall, I'm pleased with the development of the GLADoS kernel. The developer has gone out of his way to write not only an excellent control program, but also set the kernel up so tweaking is almost completely unnecessary.

Thursday, August 23, 2012

Playing with the processor on my Galaxy Nexus

Been testing the processor out on my Galaxy Nexus. I rooted it and installed a custom kernel (GLaDOS). Some of my observations.

First off, the kernel control program has options for nearly everything: sound enhancement, screen coloring, vibration control, MPU/Core/GPU adjustments, voltage tables, and more. It's a blast to work with since long pressing any option usually gives you an explanation as to what it does.

First off, core speed adjustments. The core or bus speed is usually involving the RAM. Running at 400 MHz, the program adjusts it up in percentages. Therefore, 110% equals boosting the core speed to 440 MHz. Strangely, I noticed markedly weaker performance.

This is likely due to the fact that the governor for the kernel, Wheatley, is a specially designed version for the phone itself. It works by keeping the processor at its highest frequency set in order to conserve battery. As insane as that sounds, it works. Think of using cruise control on your car to help fuel efficiency and how acceleration reduces it when you start off from a complete stop. The same thing applies here. Forcing the CPU to ramp up, as with OnDemand, the stock governor across most Android phones, wastes energy. I've sampled OnDemand, Wheatley, and Performance (for benchmarking) and have noticed much better response and battery life with Wheatley which is what I maintain for daily use. Core boosting really only seemed to assist benchmarking. Day to day use was impacted negatively. It also was unstable. Approximately one out of four times when I would adjust it, I would suffer a reboot.

MPU adjusting or the stereotypical thought of overclocking is by adjusting the frequency sets for the CPU. My kernel allows for up to 2 GHz, but this varies greatly between chips. My phone can obtain 1.6 GHz before it suffers reboots and freezes. Performance increased across the board from day to day use and benchmarking. Battery life was impacted only slightly and there was obvious heat increases. For maintaining the life of the battery and CPU, I don't think it's good for long term use. The control program also has live OC which allows you to step up the speed in percentages. This can boost performance and speed in a more controlled manner than just jumping to a different frequency set. However, the trade off is reduced stability. My phone may be able to exceed 1.6 GHz, but it will require live OC and voltage increases.

GPU overclocking sets at either 384 or 512 MHz. 384 MHz provides excellent performances boosts with negligible battery impact. 512 MHz also boosted performance without battery impact, but resulted in screen tearing and artifacts. The only way to mitigate this was to boost the core speed. Likely an issue with RAM bottlenecks as the phone wasn't intended to be pushed to this level of speed.

Voltages are controlled in the program and the CPU has a system called Smart Reflex Voltage. This combined with the control program tells me exactly what the optimum voltage is for each frequency set. Adjusting this to the optimum dramatically increased battery life with no stability loss. An amazing idea that really works out. You can adjust even lower to some degree in case the system didn't calibrate correctly, but I wouldn't jump more than 10 at a time for safety. Sometimes when you do reduce it actually re-calibrates it to your value proving it could go just a little lower.

A few other options can boost performance. FSync control reduces I/O operations increasing speed and battery life, but a crash can result in lost data. TCP congestion scheduler settings can boost data speeds. The default is set to westwood, but I found that Reno increased both ping and download speeds. The other two schedulers reduced speeds to a small degree instead.

I haven't done anything with the I/O schedulers. In the past, I've rarely seen much difference in performance. At least on this type of phone. Some earlier phones with weaker processors benefited from a change in scheduler, but with Project Butter, I see no real differences in performance pertaining to this as the only other scheduler is noop which is very similar to sio anyway.

Overall, the kernel and CPU performs admirably. The only real adjustments I found beneficial in the long run were boosting the GPU slightly, undervolting the processor, and TCP adjustments.

Update: I've found that my processor can achieve 1.712 GHz before suffering freezes and reboots. I'm going to be looking into whether underclocking the phone with Wheatley benefits the battery in any way soon.

Friday, August 10, 2012

A Review of the Samsung Galaxy Nexus and Jelly Bean (Android 4.1)

Well, it's that time again. It's time to look at a new Nexus phone and a new version of Android. This time, I'm feeling very happy about the newest version of Android (but not just because of what Google did with it) and the (now aging) Galaxy Nexus.

The Galaxy Nexus is already nine months old (practically a dinosaur in this day and age), but I just had to pick one up once I seen Jelly Bean in action. I initially was going to pick up the Galaxy Nexus back in February, but my distaste of Ice Cream Sandwich forced me to choose the HTC Sensation instead. I was also going to consider the Amaze, but the cheaper price for Sensation along with the ability to root it fully drove me to the Sensation.

Upon first viewing the Galaxy Nexus in the flesh, I was really pleasantly surprised by its appearance. The pure black slate front is faceless. There are no capacitive buttons whatsoever and there is only a volume rocker and a power button on each side of the phone respectively. Combined with these qualities, I've watched humorously numerous times as people who attempt to use my phone struggle to even figure it out.

The iconic camera bezel is still there of course and the larger and more powerful front facing camera is more prominent than the Nexus S. One nice addition, however, is a three color LED notification below the screen. This was something that was missing from the Nexus S. (Third party ROMs got around the limitations by making the capacitive buttons blink and light up on notifications.) Surprisingly, I never found the much larger size of the Galaxy Nexus that foreign. In fact, after using my Sensation and then this phone, I wondered why Android phones weren't always this big before.

Still, not all is great. The hardware still suffers from the lack of premium build materials. The plastic battery cover is extremely flimsy, but one benefit to it is it doesn't contain the NFC chip antenna and can be replaced with another (I chose to replace it with an aluminium one to give it a more premium feel and increase the weight to balance it a little more in my hand.).

Internally, the Galaxy Nexus packs a 1.2 GHz dual-core TI OMAP 4460 with a juiced up PowerVR SGX 540 GPU running at 307 MHz. The GPU is the same one found in the original Hummingbird chipset and the Nexus S by extension. It comes with 1 GB of RAM, 16 GB of user space, Bluetooth 3.0, GPS, NFC, Wifi (with all the variants), GSM radios with pentaband HSPA+ running at 21 Mbits, and a barometer (oddly). There are also a few other unique tricks like MHL and USB-on-the-go.

Likely the most noticeable feature is the 1280 x 720 resolution Super AMOLED screen. With a pixel density of 326, it rivals the iPhone. It's visually impressive to behold, has excellent feedback, and you can barely even tell that it uses the pentile arrangement.

Overall, I'm impressed with the hardware, especially since Google decided to reduce the price of the phone down to $349 (I got mine for $430 during the import ban). The phone can work on any carrier that uses GSM and it has a bevy of features that help it keep pace even by today's standards. The only real drawbacks I seen were the 16 GB of storage and reliance on the SGX 540. While the phone runs any game out there today efficiently, I felt it was a cheap choice to use (considering when this phone first hit it was around $600). As for storage, the Galaxy Nexus uses a different storage protocol called MTP instead of your regular mass storage mode. It's a bit different, but it allows the phone to incorporate app storage and USB into one allowing apps as near large as you need. However, 16 GB feels dated now. 32 GB should have been the minimum and I hope the next Nexus goes that route.

Booting up the phone, I immediately rooted it and installed a custom version of Jelly Bean on the phone. Any differences from the original will be noted as I run into them. Jelly Bean itself brings a fairly large amount of changes to the board, but the two things major things are Project Butter and Google Now.

Project Butter is the most obvious. Google has gone a great distance to make everything as smooth and fluid as the iPhone in respects. The end result isn't quite as smooth as the iPhone (that's owing to the fact that iOS is programmed directly for the hardware whereas Android has to function on many different phones), but it's still very close. In fact, Project Butter completely revived the Galaxy Nexus. The phone feels as fast as some phones that have just been released. That's one hell of an achievement and tells me that Project Butter is successful.

The other major thing is Google Now. Now is a sort of intelligent push version of Siri. Instead of asking it a bunch of questions, Google Now automatically presents you with the most relevant information based on previous searches (you can still do voice searches and commands as well by the way). This of course means you need to use Google's services, but if you're not, what the hell are you doing with an Android phone anyway? I haven't gotten that much use out of it so far myself. This is partly because I constantly switch ROMs, resetting all my data and because a lot of the push information is things I don't need (public transit, sports scores). Still, my hope is that it becomes even more feature rich in the future and learns even more of my habits. I'd hope one day for it simply tell me things like appointments in case I forget or how long it's going to take to get to work based on traffic conditions.

There are a few mundane things added to Jelly Bean that make it nicer. New animations for all the windows, expandable notifications, and some minor UI redesigns and flair. All in all, Jelly Bean is much more responsive, fluid, and enjoyable than it's predecessor.

A few things of note before I end this. My version of Jelly Bean came with several additions not seen in the original. First, it has an optional menu key. This was something I loathed about ICS on the Galaxy Nexus initially. There are customizations like toggles in the notification bar, settings to adjust the battery style and clock, and skipping music tracks by holding down on either of the volume buttons when the screen is off. Of course, the biggest is the Theme Chooser engine made popular by CyanogenMod that can entirely change the experience of the ROM.

I'm also running a custom kernel controlled by its own app. The app allows me to increase sound output, change frequency sets, overclock the GPU, reduce the voltages, and a few other unique things that really push the level of control I have over my phone.

Overall, the Galaxy Nexus is a purchase I definitely don't regret. I'm happy with its features and I can't wait to see what Google has in store for its next Nexus device.