Automating Performance Testing - Java for Android App Development

I was needing to work on my app performance, and wanted to have some automated script to repeat and measure certain operations, create a baseline measurement and compare that to improved (or so I hoped) versions. As my need was rather specific, I built this framework to help me. You may find this useful too:
srooltheknife.blogspot.com/2013/07/automating-android-testing.html
comments are welcome

Cool. :good:
(However, wouldn't it better fit into that forum? http://forum.xda-developers.com/forumdisplay.php?f=2189)

Related

[app idea] ROM benchmarking app

Hello guys,
I would like to ask if there is an app that would benchmark the ROM performance as opposed to the device performance as in the most of bencmarking apps available (SkTools, SPB Benchmark...). These apps can be used to benchmark ROMs too - but they show more about actual drivers performance than real life experience.
I did a search on the Internet but found nothing.
Is there anyone able to code such an app for the xda-devs community?​
I am looking for program that would measure following:
- Boot up speed
- Start menu open speed
- Speed of opening settings menu from the Start menu
- Speed of opening programs menu from the Start menu
- Speed of opening the Windows folder from the Explorer
- Speed of opening a standard built in app (for example emulating green phone button press to open the dialer)
- Speed of changing screen orientation form portrait to landscape and back
- Speed of wake up from stand-by
- catch-all master statistic (derived from all other stats) to make it easier to rank the results for various ROMs/Devices
Any other statistics you may consider important when it comes to the speed of your shiny new cooked ROM. Please advise on what can also measure actual ROM performance.
The app would ideally run these tests several times (10x) and then log the average values into a results file.
I think it would help the ROM cookers to troubleshoot their creations and new users to choose the right ROM for them. In short this new application would test the GUI reactions - no benchmark app currently available does it. It is an important characteristics though, because that is what users come in contact with most often.
Thank you for your contributions!​Thanks to MaRaHoX for his advice
May we will take a look ...
CharlyV said:
May we will take a look ...
Click to expand...
Click to collapse
Thanks a lot. I think GUI performance benchmarks are useful even in device to device comparison.
(Rare post by me but...)
Perhaps a single benchmark score would be good to determine the relative difference between the ROM being tested and a controlled test....ie WM6 Vanilla??
so a ROM which scores out in total maybe 3 times better (overall) than the control ROM would score like this:
"XDA-Bench score: 3.00" .............. something like?
the best overall performing ROM would have the highest overall score relative to the control test (vanilla)............im not sure im explaining my concept very well?!?!
ofcourse all the test results could be viewed in detailed view in the same sort of format as the xls spreadsheet??
This way a ROM can undergo a test with a custom setup on anybodys device and get a score to really see how it fairs against other ROMs? I personally see this as a similar sort of thing as PCMark or 3DMark??
EDIT::: just thought it would be cool to see how an app installed affects the XDA-Bench score?? Ive noticed certain apps tend to slow down the device whilst other dont?!
mrvanx said:
(Rare post by me but...)
Perhaps a single benchmark score would be good to determine the relative difference between the ROM being tested and a controlled test....ie WM6 Vanilla??
so a ROM which scores out in total maybe 3 times better (overall) than the control ROM would score like this:
"XDA-Bench score: 3.00" .............. something like?
the best overall performing ROM would have the highest overall score relative to the control test (vanilla)............im not sure im explaining my concept very well?!?!
ofcourse all the test results could be viewed in detailed view in the same sort of format as the xls spreadsheet??
This way a ROM can undergo a test with a custom setup on anybodys device and get a score to really see how it fairs against other ROMs? I personally see this as a similar sort of thing as PCMark or 3DMark??
EDIT::: just thought it would be cool to see how an app installed affects the XDA-Bench score?? Ive noticed certain apps tend to slow down the device whilst other dont?!
Click to expand...
Click to collapse
Thanks for your ideas - Available benchmarks have something like synthetic master score (check my benchmark thread - link is in my sig). Slowdown measuring is also interesting idea. Hopefully somebody will make this xda-bench a reality
Testing methodics
Hi KarhU,
I was thinking about it and one more thing about it - it is also really important to define starting point for this ROM - or better is to say "comparable state"... f.e. - to switch off all today items etc. I understand that for user is better to know how the ROM is powerful in real state... maybe to consider this note as a basic for discussion about it (if it is not already mentioned there or somewhere else )
Glad to help little bit with this important and purposeful work!
M.
I think the official HTC rom would be the best to use as a control rom for comparisons. I would run this app every time I install a new piece of software, at the moment my orbit is running a bit slow, I've just overdone it a bit at the moment, so it would be great to see exactly how an installation affects my system. It would be useful to developers and cookers alike. I hope the idea really takes off.
This would be a great app if developed! I agree with a those above that the official HTC rom would be the best one to use as a control rom for comparisons.
MaRaHoX said:
Hi KarhU,
I was thinking about it and one more thing about it - it is also really important to define starting point for this ROM - or better is to say "comparable state"... f.e. - to switch off all today items etc. I understand that for user is better to know how the ROM is powerful in real state... maybe to consider this note as a basic for discussion about it (if it is not already mentioned there or somewhere else )
Glad to help little bit with this important and purposeful work!
M.
Click to expand...
Click to collapse
Interesting idea - currently my tests were done WYSIWYG method - I wanted to compare the ROMs with their basic settings to see actual performance in more "real life" conditions. You are right that if we want to compare the base there should be comparable testing starting point.
I suggest to add the following test for phone devices:
- time lag between 'caller heard first ring' and 'the device actually rings'
ahlok_hk said:
I suggest to add the following test for phone devices:
- time lag between 'caller heard first ring' and 'the device actually rings'
Click to expand...
Click to collapse
This is a good one and very often people are interested in this statistics, but it is hard to measure as you need two phones.
::bump that!::
Bump! Time to resurrect the thread
i like this idea

[Q] How are apps using dual core in the new android phones?

I already posted this in general, but this might be a more suitable place.
The way I see it, android (especially the newer versions) are capable of distributing several processes over the dual cores. Apps however don't utilise both cores.
Another question: what kind of apps would benefit from using both cores? I could imagine that heavy games and home launchers could benefit from using both cores.
Are there tools available for android that enable multithreading apps? And what are the average prices of app development tools?
Im currently working in Java, but how do most people write Android apps?
Just found some information that confirms my thoughts on how android uses parallel structures, but this still leaves open my other questions:
"Android 2.2 already takes advantage of multicore. Anything that multitasks and multithreads already takes advantage of multicore. But this exploitation is a matter of degrees.
Android 2.3 takes further advantage of the multicore, because unlike Android 2.2, 2.3's file system is multithreaded one, not single threaded. When it comes to file I/O or database searches. 2.3 will be a lot faster.
Android 2.4 or 3.1 as rumored to be, will take even greater advantage of multicores with further "architecting" parts of the OS to use more multithreads."
Android 2.3 has concurrent garbage collection which I imagine will take advantage of dual core phones. This should really help to reduce any lag or stuttering in apps and games.
First, if you develop something that requires much CPU power, then you should always try to do it using multiple threads. This is a general rule, not only related to Android.
Second, main thread of an app is UI thread and you should never run CPU-consuming tasks in it. So actually you are forced to use multi-threading in Android apps.
Third, there are many things that Android itself could run in parallel to your app: garbage collector, UI changes, animations, background apps, etc.
Brut.all said:
First, if you develop something that requires much CPU power, then you should always try to do it using multiple threads. This is a general rule, not only related to Android.
Second, main thread of an app is UI thread and you should never run CPU-consuming tasks in it. So actually you are forced to use multi-threading in Android apps.
Third, there are many things that Android itself could run in parallel to your app: garbage collector, UI changes, animations, background apps, etc.
Click to expand...
Click to collapse
Thanks for you quick answer! Could I use a Java solution that makes multithreading obsolete to make this all easier? And then just pack it into an apk? Sorry, but im pretty new to this.
Stitch! said:
Thanks for you quick answer! Could I use a Java solution that makes multithreading obsolete to make this all easier? And then just pack it into an apk? Sorry, but im pretty new to this.
Click to expand...
Click to collapse
I don't understand. How does Java makes multithreading obsolete? Besides, MT isn't really that hard if you have good tools for asynchronous processing of tasks. Java/Android gives you such tools.
Brut.all said:
I don't understand. How does Java makes multithreading obsolete? Besides, MT isn't really that hard if you have good tools for asynchronous processing of tasks. Java/Android gives you such tools.
Click to expand...
Click to collapse
Not Java, but an Java extension called Ateji Parallel extensions. There is a demo here: http://www.youtube.com/watch?v=8MDbqTgCDIA
I was just wondering, if it would be worth developing for android. The video is a demo on a dual core, and the new quadcore dev kit just came in. Additions to the that I thought about now are a timer and perhaps some other figures that can indicate the difference. Do you have any ideas on this?
Really appreciate you input, thanks!
Stitch! said:
Not Java, but an Java extension called Ateji Parallel extensions. There is a demo here: http://www.youtube.com/watch?v=8MDbqTgCDIA
I was just wondering, if it would be worth developing for android. The video is a demo on a dual core, and the new quadcore dev kit just came in. Additions to the that I thought about now are a timer and perhaps some other figures that can indicate the difference. Do you have any ideas on this?
Really appreciate you input, thanks!
Click to expand...
Click to collapse
Yes it would be worth it to develop for android. The newer android phone's dual core processors are utilized by games but only when a new version of android (future ice cream sandwich and later so i have read), will be able to support multiple processors. Also android really needs some 3D HD games like what Apple has made for the Iphone. I hope you decide to develop for android.
I still don't understand why it's so important to you. You don't need Ateji to utilize multiple cores, actually their demo is just a few lines of pure Java code. Ateji could make things easier, but it doesn't do any magic.
Stitch! said:
Another question: what kind of apps would benefit from using both cores? I could imagine that heavy games and home launchers could benefit from using both cores.
Click to expand...
Click to collapse
Anything involving image processing is a good candidate. For example, if you want to sharpen a photo, you can have one core processing the top half and one core processing the bottom half. Saying that though, I've found the single threaded performance of newer processors is fast enough for typical image filters.

[REF][SCRIPTS] Android Optimization Tips - Captivate(UPDATED 10/19/2011)

Introduction
I've made a Definite Guide on Android thread for i9000 that focuses on a few optimizations/scripts I've picked up over the months I've spent on XDA. I truly enjoyed sharing my knowledge with the i9000 community and since the tips/guide/scripts can also be applied here (save some exceptions that I would list down below),I would like to share this with the Captivate community too.
Exceptions
Take note that the guide is primarily for i9000 units. There are a few differences I can note here that you should be aware of:
1. The guide points out some kernels/ROMs that are for i9000. Hence the phones you are using may have different ROMs/kernels that may or may not correlate with the one in the guide.
2. The guide also mentions some apps/tweaks that are particularly alien to your unit and you may have never encountered it in your use of your phone or in XDA. Please ignore them for now, I'll make an effort to make the guide compatible in the future (with feedback from you guys of course )
3. Journaling scripts that are attached like the JournalingOn.zip and Acid Tweaks - Removed Useless Stuff and 00remount may not work well with your unit or it may completely brick it. I don't know this, but if you can post your mount partition configuration, I am willing to make the scripts work for you. You only have to type "mount" on your Terminal Emulator and provide the output to me, and I'll provide the rest. Zach's script however, have high compatibility towards a lot of phones, and thus can be used for your unit. Take note that there is a slight risk that it won't work well. If it doesn't, please post your problems here, and I'll try to fix it. Hence, it's best that you make a nandroid backup before attempting to use any tweaks here.
3. I've compiled a guide on a few notable tweaks in XDA here: LINK. If you would like me to evaluate scripts/tweaks/anything that you do not understand due to their terms being alien to you, I'll be glad to explain it here
Guide
You can refer to the guide here:
LINK
pikachu01 said:
Introduction
I've made an Android Optimization Tips thread for i9000 that focuses on a few optimizations/scripts I've picked up over the months I've spent on XDA. I truly enjoyed sharing my knowledge with the i9000 community and since the tips/guide/scripts can also be applied here (save some exceptions that I would list down below),I would like to share this with the Captivate community too.
Exceptions
Take note that the guide is primarily for i9000 units. There are a few differences I can note here that you should be aware of:
1. The guide points out some kernels/ROMs that are for i9000. Hence the phones you are using may have different ROMs/kernels that may or may not correlate with the one in the guide.
2. The guide also mentions some apps/tweaks that are particularly alien to your unit and you may have never encountered it in your use of your phone or in XDA. Please ignore them for now, I'll make an effort to make the guide compatible in the future (with feedback from you guys of course )
3. Journaling scripts that are attached like the JournalingOn.zip and Acid Tweaks - Removed Useless Stuff and 00remount may not work well with your unit or it may completely brick it. I don't know this, but if you can post your mount partition configuration, I am willing to make the scripts work for you. You only have to type "mount" on your Terminal Emulator and provide the output to me, and I'll provide the rest. Zach's script however, have high compatibility towards a lot of phones, and thus can be used for your unit. Take note that there is a slight risk that it won't work well. If it doesn't, please post your problems here, and I'll try to fix it. Hence, it's best that you make a nandroid backup before attempting to use any tweaks here.
3. I've compiled a guide on a few notable tweaks in XDA here: LINK. If you would like me to evaluate scripts/tweaks/anything that you do not understand due to their terms being alien to you, I'll be glad to explain it here
Guide
You can refer to the guide here:
LINK
Click to expand...
Click to collapse
can this work on stock rom?
q659503934 said:
can this work on stock rom?
Click to expand...
Click to collapse
Which tweak are you particularly interested in? Yes, they will work on stock ROM, but you could tell me which you are particularly interested in, and I can tell you how it would work
pikachu01 said:
Which tweak are you particularly interested in? Yes, they will work on stock ROM, but you could tell me which you are particularly interested in, and I can tell you how it would work
Click to expand...
Click to collapse
the Script tweaks,i think it's most usefull
q659503934 said:
the Script tweaks,i think it's most usefull
Click to expand...
Click to collapse
The script tweaks can be used in a stock ROM, but you would need a custom kernel that supports init.d.
pikachu01 said:
The script tweaks can be used in a stock ROM, but you would need a custom kernel that supports init.d.
Click to expand...
Click to collapse
the post you published is helpful,ths
Well I sport your thread in my sig now, but nice to see you've made a thread for Capy users to get more exposure and discuss it.
Kyuta Syuko said:
Well I sport your thread in my sig now, but nice to see you've made a thread for Capy users to get more exposure and discuss it.
Click to expand...
Click to collapse
Thanks for the sig up
Yes, I would want to share this knowledge with as many people as possible. Thank you for helping my effort!
Great guide, just one problem, I've deleted the system apps you've written, and the notification bar is gone lol :S Do you have any clue which app is it?
Elad92 said:
Great guide, just one problem, I've deleted the system apps you've written, and the notification bar is gone lol :S Do you have any clue which app is it?
Click to expand...
Click to collapse
The only one I'm not confident at is Perso. That's why it's better to freeze it rather than delete it. Deleting it makes it harder to restore.
You can freeze it with System Tuner (free app) or Titanium Backup Pro (Paid)
Of course I was freezing, but a quick reboot solve the problem.. Thanks again for this great guide!
As for the memory leaks problem, can you explain more? Will I have to write those commands every time the phone is being laggy?
Elad92 said:
Of course I was freezing, but a quick reboot solve the problem.. Thanks again for this great guide!
As for the memory leaks problem, can you explain more? Will I have to write those commands every time the phone is being laggy?
Click to expand...
Click to collapse
Great
There's a script called drop in the 3rd post. You can use it with Script Manager once you feel the lag coming in. However, to get rid of the lag entirely, you have to tweak the LMK so that free memory doesn't drop below a certain threshold. You can use Auto Memory Manager or Supercharger for that.
Thanks, used this first way, created a nice widget that will do the script
pikachu, just wanted to let you know. Your scripts are incredible. The difference in battery life after adding the 2 scripts to init.d is incredible. I was going through the one. I'm on Apex 10.1 w/ TalonDev 0.5.1.3 was wondering if there would be any added benefit of changing the awake_governor to OnDemandX instead of Ondemand and if you could recommend any other fun things I can try that would be great also.
EDIT: Also still in my init.d is the s70_darky_zipalign scripted would it be recommended to remove that or keep it.
nh5 said:
pikachu, just wanted to let you know. Your scripts are incredible. The difference in battery life after adding the 2 scripts to init.d is incredible. I was going through the one. I'm on Apex 10.1 w/ TalonDev 0.5.1.3 was wondering if there would be any added benefit of changing the awake_governor to OnDemandX instead of Ondemand and if you could recommend any other fun things I can try that would be great also.
EDIT: Also still in my init.d is the s70_darky_zipalign scripted would it be recommended to remove that or keep it.
Click to expand...
Click to collapse
Yes, the VM settings actually save more battery as the number of I/O transactions are kept at the minimum.
You can change it to OndemandX, but OndemandX's main difference with Ondemand is the sleep code as well as the high threshold (95 opposed to 80 in Ondemand). This would result in a generally more powersaving but slower scaling method.
Since conservative is already used when sleeping, using OndemandX is counterproductive IMHO.
The darky zipalign script doesn't work as Darky rom doesn't come with the zipalign binary. You can zipalign with Rom Toolbox (in the market). Also 99.9% of APKs that are used are already zipaligned from the start(you can check this with Rom Toolbox). Don't need to zipalign again.
pikachu01 said:
Yes, the VM settings actually save more battery as the number of I/O transactions are kept at the minimum.
You can change it to OndemandX, but OndemandX's main difference with Ondemand is the sleep code as well as the high threshold (95 opposed to 80 in Ondemand). This would result in a generally more powersaving but slower scaling method.
Since conservative is already used when sleeping, using OndemandX is counterproductive IMHO.
The darky zipalign script doesn't work as Darky rom doesn't come with the zipalign binary. You can zipalign with Rom Toolbox (in the market). Also 99.9% of APKs that are used are already zipaligned from the start(you can check this with Rom Toolbox). Don't need to zipalign again.
Click to expand...
Click to collapse
I made a mistake here. Rom Toolbox doesn't zipalign your APKs well. It failed to detect an unzipaligned APK in my ROM. I will publish a guide to zipalign, but it's pretty much manually done.
Made some pretty big changes to the guide.
Please refer to it when you have the time!

[Q] Does Linaro, GCC version, -O3, etc really make a difference?

Looking at all the roms that are out there, I see that many of them advertise features like Linaro, GCC 4.7-4.9, -O3, strict aliasing, and isoc++11 mode. To the end user on JB, do these really make a difference? If they do make a difference are there any objective benchmarks to prove it? Or do these features only impact the speed at which android compiles with no impact on the end user?
PacifistRiot said:
Looking at all the roms that are out there, I see that many of them advertise features like Linaro, GCC 4.7-4.9, -O3, strict aliasing, and isoc++11 mode. To the end user on JB, do these really make a difference? If they do make a difference are there any objective benchmarks to prove it? Or do these features only impact the speed at which android compiles with no impact on the end user?
Click to expand...
Click to collapse
It's a difficult question to reply.
This requires that you build the same codebase with different compilers / different optflags and benchmark their performances.
Theoretically, newer gcc should generate better binaries, but that's not always the case.
Palatis said:
It's a difficult question to reply.
This requires that you build the same codebase with different compilers / different optflags and benchmark their performances.
Theoretically, newer gcc should generate better binaries, but that's not always the case.
Click to expand...
Click to collapse
It would require some effort but adding these as "features" to roms without further explanation would imply that the end user is benefited by this. And to actually benefit from it we would need some objective evidence on their performance increase for JB.

Kernel explanation

I don't know if the answer to my question is somewhere hidden between the thousands of threats but I did try to find it before(including Google and YouTube) and would be more than happy to get a reply.
I'm using custom Kernels since the Note 2 but was never able to put more time and afford in to understand how they actually work and always used the default settings.
Now I'm trying to get some knowledge on Kernel settings and what is safe to change and what not. I'm very interested on how a Kernel works and how I can boost both battery life and/or performance as well as the basic knowledge of the Kernel settings.
At the moment I'm trying to explore with trickster mod to kinda learn by doing but I always get really bad results in testing or no big changes when I change the governor. Also I'm a little afraid in messing up my phone and therefor don't change the settings much. What I know is that the same Kernel can have different outcomes on different Note 3's so please do not post just your Kernel and settings without explanation cause I would like to find the most suited Kernel and settings for my Note.
Sooo...Some help and explanations would be more than appreciated.
4aces said:
I don't know if the answer to my question is somewhere hidden between the thousands of threats but I did try to find it before(including Google and YouTube) and would be more than happy to get a reply.
I'm using custom Kernels since the Note 2 but was never able to put more time and afford in to understand how they actually work and always used the default settings.
Now I'm trying to get some knowledge on Kernel settings and what is safe to change and what not. I'm very interested on how a Kernel works and how I can boost both battery life and/or performance as well as the basic knowledge of the Kernel settings.
At the moment I'm trying to explore with trickster mod to kinda learn by doing but I always get really bad results in testing or no big changes when I change the governor. Also I'm a little afraid in messing up my phone and therefor don't change the settings much. What I know is that the same Kernel can have different outcomes on different Note 3's so please do not post just your Kernel and settings without explanation cause I would like to find the most suited Kernel and settings for my Note.
Sooo...Some help and explanations would be more than appreciated.
Click to expand...
Click to collapse
I can give you a brief (easy) explanation with comparisons to try to get you to understand what a kernel is.
A kernel is your phone's driver (like a car) where it adjusts settings of the hardware and controls how each individual part interacts with each other.
There is a reason you take a car to get tuned up, and that is because a car can go berserk as there is no "maintaining force" - YOU or the person who tunes your car makes changes to the car to make sure it does not overheat, use less power per mile travelled, control how much windshield fluid is being released or how much torque force required to ensure the car does not snap XXXXXX when going at a speed of YYYYYY.
These options are beyond the manufacturer's decisions, and therefore when people flash a kernel you immediately trip KNOX (N9005). You can give your phone less power to process, more power to process (not recommended), speed up the CPU/limit the CPU, control governors on how the disk I/O (input/output) is being handled and/or control how much the phone will swap to it's virtual memory when it reaches no memory.
People think use a custom kernel! It saves you a ton of battery life!. This statement is partially wrong. You have to understand how a kernel reacts to your phone. Even though I know that lite kernels like Wootever's Custom N3 has the best battery life, this is because it has less tweaks and features that may boggle the user, and may allow for subsequent battery life extension compared to CivZ's SneakyKat or Imoseyon's LeanKernel. By inserting new tweaks into the kernel, you allow to have more "useful" features that may add to the "driver's knowledge" - Color tweaking, Fast charge over USB, CIFS support, all are extras that the kernel supports. To save power, developers remove the junk that the manufacturers added and added their own settings to make sure they get the result they would like, then they would share it to the public. However, people recommend custom kernels as they get more options when they flash it, as well as ridding of a lot of the stock settings that manufacturers love setting (default governors, lowest CPU frequency, etc)
CPU governors work by controlling how much speed is used at a given time, a good description of what each governor does is listed here: http://forum.xda-developers.com/showthread.php?t=1736168
I/O governors (simply speaking) control how files and requests are being handled by the system, a good description of what each governors is listed here: http://forum.xda-developers.com/showpost.php?p=23616564&postcount=4. Good way to understand this is if you learnt programming and you learnt the Stack/Queue ADTs in a programming language, it describes things better when looking at the descriptions in the link above.
Adjusting Synapse/Trickster would not get you anywhere to getting the best battery/best performance out of the phone. You will have to experiment and check which kernel is best with your phone, according to your SOC_PVS value. SOC_PVS value is how Qualcomm decides your processor's manufacturing "rank" and if you compare a low rank to a high rank, you will see that you can use less power to operate a high ranked chip compared to a low ranked counterpart. As most governors rely heavily on how the code is handled by the system, you should always go for the kernel that fits your system, and setting configurations depending on your system's likings. By following other people's configurations you risk sporadic reboots and incompatibilities, as not all phones are built the same way.
Things you should not touch if you are afraid of destroying your phone: Overvolting and Overclocking, as these may fry your device if you don't know what you are doing.
Any questions - click reply to this, or else I won't see it!
nicholaschum said:
I can give you a brief (easy) explanation with comparisons to try to get you to understand what a kernel is.
A kernel is your phone's driver (like a car) where it adjusts settings of the hardware and controls how each individual part interacts with each other.
There is a reason you take a car to get tuned up, and that is because a car can go berserk as there is no "maintaining force" - YOU or the person who tunes your car makes changes to the car to make sure it does not overheat, use less power per mile travelled, control how much windshield fluid is being released or how much torque force required to ensure the car does not snap XXXXXX when going at a speed of YYYYYY.
These options are beyond the manufacturer's decisions, and therefore when people flash a kernel you immediately trip KNOX (N9005). You can give your phone less power to process, more power to process (not recommended), speed up the CPU/limit the CPU, control governors on how the disk I/O (input/output) is being handled and/or control how much the phone will swap to it's virtual memory when it reaches no memory.
People think use a custom kernel! It saves you a ton of battery life!. This statement is partially wrong. You have to understand how a kernel reacts to your phone. Even though I know that lite kernels like Wootever's Custom N3 has the best battery life, this is because it has less tweaks and features that may boggle the user, and may allow for subsequent battery life extension compared to CivZ's SneakyKat or Imoseyon's LeanKernel. By inserting new tweaks into the kernel, you allow to have more "useful" features that may add to the "driver's knowledge" - Color tweaking, Fast charge over USB, CIFS support, all are extras that the kernel supports. To save power, developers remove the junk that the manufacturers added and added their own settings to make sure they get the result they would like, then they would share it to the public. However, people recommend custom kernels as they get more options when they flash it, as well as ridding of a lot of the stock settings that manufacturers love setting (default governors, lowest CPU frequency, etc)
CPU governors work by controlling how much speed is used at a given time, a good description of what each governor does is listed here: http://forum.xda-developers.com/showthread.php?t=1736168
I/O governors (simply speaking) control how files and requests are being handled by the system, a good description of what each governors is listed here: http://forum.xda-developers.com/showpost.php?p=23616564&postcount=4. Good way to understand this is if you learnt programming and you learnt the Stack/Queue ADTs in a programming language, it describes things better when looking at the descriptions in the link above.
Adjusting Synapse/Trickster would not get you anywhere to getting the best battery/best performance out of the phone. You will have to experiment and check which kernel is best with your phone, according to your SOC_PVS value. SOC_PVS value is how Qualcomm decides your processor's manufacturing "rank" and if you compare a low rank to a high rank, you will see that you can use less power to operate a high ranked chip compared to a low ranked counterpart. As most governors rely heavily on how the code is handled by the system, you should always go for the kernel that fits your system, and setting configurations depending on your system's likings. By following other people's configurations you risk sporadic reboots and incompatibilities, as not all phones are built the same way.
Things you should not touch if you are afraid of destroying your phone: Overvolting and Overclocking, as these may fry your device if you don't know what you are doing.
Any questions - click reply to this, or else I won't see it!
Click to expand...
Click to collapse
First of all thank u very much for the detailed response. That was exactly what I was looking for. I will get back to you after going through the awesome links you were posting with some more knowledge
One thing which came straight in my mind was how do I know if I have a low or high rank from the soc_pvs_value and where do I find it?
Thanks again!
4aces said:
First of all thank u very much for the detailed response. That was exactly what I was looking for. I will get back to you after going through the awesome links you were posting with some more knowledge
One thing which came straight in my mind was how do I know if I have a low or high rank from the soc_pvs_value and where do I find it?
Thanks again!
Click to expand...
Click to collapse
Anytime
You can either install Synapse (If your Kernel supports it, and click on the button under CPU), or check here:
Code:
/sys/devices/system/soc/soc0/soc_pvs
The higher your number, the better.
nicholaschum said:
Anytime
You can either install Synapse (If your Kernel supports it, and click on the button under CPU), or check here:
Code:
/sys/devices/system/soc/soc0/soc_pvs
The higher your number, the better.
Click to expand...
Click to collapse
I ran out of "thanks" so u get it tomorrow. But thanks again. One more thing:
How do I know if I have a high number/between which numbers does the value wary? My soc_pvs is 3.
4aces said:
I ran out of "thanks" so u get it tomorrow. But thanks again. One more thing:
How do I know if I have a high number/between which numbers does the value wary? My soc_pvs is 3.
Click to expand...
Click to collapse
You got a rather good number.
The lowest is 0, and the highest is 6. I have 2 but I don't undervolt so this is not an issue
nicholaschum said:
You got a rather good number.
The lowest is 0, and the highest is 6. I have 2 but I don't undervolt so this is not an issue
Click to expand...
Click to collapse
Can't thank u enough!!! Now I will be off to some reading and testing
nicholaschum said:
You got a rather good number.
The lowest is 0, and the highest is 6. I have 2 but I don't undervolt so this is not an issue
Click to expand...
Click to collapse
Aaand one more question.
What is the difference in tcp congestion control (cubic/reno) and what does it change?
4aces said:
Aaand one more question.
What is the difference in tcp congestion control (cubic/reno) and what does it change?
Click to expand...
Click to collapse
That seems more of a Trickster Mod specific tweak.
It is more of a network speed tweak which you can read here: http://en.m.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm
In simple words, you have to understand what Network Congestion is, and how queues affect how much data is being transmitted. When too much data is being carried in a link or a node, the quality of service would deteriorate. To do Congestion control, it affects how much data is being transmitted through each node systematically. This is rather complicated to explain using simple terms as this is a mathematical formula which processes how much data is being transmitted.
Cubic is used by many default linux kernels. Like CPU governors, these are data transmission governors, and it is best if you use the one better for your TCP/IP connection (Carrier or Wifi)
nicholaschum said:
That seems more of a Trickster Mod specific tweak.
It is more of a network speed tweak which you can read here: http://en.m.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm
In simple words, you have to understand what Network Congestion is, and how queues affect how much data is being transmitted. When too much data is being carried in a link or a node, the quality of service would deteriorate. To do Congestion control, it affects how much data is being transmitted through each node systematically. This is rather complicated to explain using simple terms as this is a mathematical formula which processes how much data is being transmitted.
Cubic is used by many default linux kernels. Like CPU governors, these are data transmission governors, and it is best if you use the one better for your TCP/IP connection (Carrier or Wifi)
Click to expand...
Click to collapse
Just read the answer in the link u posted. Stupid me.
Sorry for taking up your time.
nicholaschum said:
That seems more of a Trickster Mod specific tweak.
It is more of a network speed tweak which you can read here: http://en.m.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm
In simple words, you have to understand what Network Congestion is, and how queues affect how much data is being transmitted. When too much data is being carried in a link or a node, the quality of service would deteriorate. To do Congestion control, it affects how much data is being transmitted through each node systematically. This is rather complicated to explain using simple terms as this is a mathematical formula which processes how much data is being transmitted.
Cubic is used by many default linux kernels. Like CPU governors, these are data transmission governors, and it is best if you use the one better for your TCP/IP connection (Carrier or Wifi)
Click to expand...
Click to collapse
I have another question. If I want to oc or uv is there any script I have to use or can I just apply/test right away?
4aces said:
I have another question. If I want to oc or uv is there any script I have to use or can I just apply/test right away?
Click to expand...
Click to collapse
Just use the main interface of either Trickster or Synapse. I use Synapse personally as my kernel provides the best interface on Synapse.
nicholaschum said:
Just use the main interface of either Trickster or Synapse. I use Synapse personally as my kernel provides the best interface on Synapse.
Click to expand...
Click to collapse
What I found out so far is that the device runs smoother on performance based governors with cfq or sio scheduler. The best results I had so far was on lean kernel and ael kernel. I'm using the last at the moment cause it has a lot of settings to play with
But it seems that I'm still miles away from finding the best settings.
4aces said:
What I found out so far is that my device reacts not good on performance based governors & schedulers. The best results I had so far was on lean kernel and ael kernel. I'm using the last at the moment cause it has a lot of settings to play with
But it seems that I'm still miles away from finding the best settings.
Click to expand...
Click to collapse
I could give you some recommendations that would work well decently with 2-3 PVS valued processors.
Interactive Governor
No OC, No UV.
I/O schedulers Internal: cfq 512kb
I/O schedulers External: cfq 512kb
Dynamic Fsync Enabled
PowerSuspend driver enabled
Mdnie enabled, 0.39%
FastCharge Enabled
GPU Governor: Simple Ondemand 450MHz
I use CivZ's SneakyKat but Wootever's Custom N3 has the best battery life. If you want features you should play with CivZ's, if you like 6h screen on then you should play with Wootever.
You don't have to follow these values, but I spent days restarting my phone finding the best "average" configuration for devices ranging in my state. I found that Intellidemand didn't do so well and Interactive prevented any sporadic reboots that I got while on Intellidemand. Also read aheads of above 512kb doesn't show much speed enhancements. Synapse is great as it tells you whether your boot is successful or not, and now all my boots get Completed.
Notice: Do not soft reboot when configuring Kernels, Kernels don't get loaded properly/doesn't get reset properly so use Full reboot when configuring
cpu lock
I tried gaming with different kernels and governors and encountered a strange issue. Especially in candy crush after playing for a while the cpu locks (sometimes on 14k sometimes 12k). Reboot fixes it but I'm still curious why it locks. 
 @nicholaschum any idea?
Btw. my favorite settings so far are intellidemand with deadline gr8 performance and battery life is OK.
4aces said:
I tried gaming with different kernels and governors and encountered a strange issue. Especially in candy crush after playing for a while the cpu locks (sometimes on 14k sometimes 12k). Reboot fixes it but I'm still curious why it locks.
@nicholaschum any idea?
Btw. my favorite settings so far are intellidemand with deadline gr8 performance and battery life is OK.
Click to expand...
Click to collapse
That's a bit weird, did you have powersaving turned on? But I assume it's off.
I think you should disable your kernel mod application in Application Manager and test it out, if it's a problem with Synapse/Trickster then one setting is a bit problematic.
nicholaschum said:
That's a bit weird, did you have powersaving turned on? But I assume it's off.
I think you should disable your kernel mod application in Application Manager and test it out, if it's a problem with Synapse/Trickster then one setting is a bit problematic.
Click to expand...
Click to collapse
Nope that's why it's strange. Even got it after clean flash without setting/installing any Kernel related apps.
Tested other games and they work fine so I deleted candy crush and so far no cpu lock. No idea why, that's why I was curious
4aces said:
Nope that's why it's strange. Even got it after clean flash without setting/installing any Kernel related apps.
Tested other games and they work fine so I deleted candy crush and so far no cpu lock. No idea why, that's why I was curious
Click to expand...
Click to collapse
I don't play Candy Crush so I wouldn't know..haha
nicholaschum said:
I don't play Candy Crush so I wouldn't know..haha
Click to expand...
Click to collapse
Lol. Me neither from now on... (my kids will be sad though) Still can't really belive the game caused it

Categories

Resources