Hi!
Note:
Sorry this posting got very long. But it will tell you how to configure Android's internal taskkiller which may help getting your hero really speedy again.. Without using any taskkiller.
Here the long story:
I just was curious if already someone tried to play around with Android's internal low-memory task killer.
We all know that Android uses a different way of handling processes. Instead of killing every process after its Activity ended, processes are kept until the system needs more memory. These processes usually should not harm the overall performance and should give speed improvements if you start an Activity again. That's the idea.
But when does Android kill a process? And which process? As far as I understood android keeps a LRU (last recently used) list and starts killing the oldest unneeded process. This way it is much smarter than any of the taskkillers we see in the Market.
Just for curiosity I started to investigate how this mechanism works. Please correct me if you think that I got something wrong:
What I found out:
ActivityManagerService.java tracks the "importance" of processes (is foreground, is running a service, ..) and reflects this importance by setting the "oom_adj" value of the process.
(For info: "oom_adj" is a value of every process under Linux which gives the kernel a hint, which process it can kill in an oom [out of memory] situation. You can see this value on every Linux 2.6 system in the proc directory: /proc/[PID]/oom_adj ). The higher this value is set, the more likely this process gets selected by the kernel's oom killer.)
It seems that on Android the current forefround application gets an oom_adj value of 0 and as soon it's not visible anymore it gets some higher value. I assume the concrete value is dependent by the processes' place in the LRU list.
The out-of-memory killer in the standard Linux kernel only runs in one situation: when the available memory is critical low. However in the Android Linux kernel there is implemented a more fine-grained handling of low memory situations.
I found the kernel source file "lowmemorykiller.c" (located in the kernel source tree under "drivers/misc/"; or look here for GIT source tree: http://tinyurl.com/lowmemkiller).
This module seems to be more configurable than the kernel's standard out-of-memory killer as you can define more than one memory limit, when it should get active and you can tell it which oom_adj values it may kill.
In other words:
You can say "if free memory goes below XXXX then kill some process with oom_adj greater then YYY; if free memory goes even more below than ZZZ then start to kill some processes with oom_adj greater than XYXY. and so on.."
So it's possible to define multiple memory criterias and matching processes which can be killed in these situations. Android seems to group running processes into 6 different categories (comments taken out of "ActivityManagerServer.java"):
Code:
FOREGROUND_APP:
// This is the process running the current foreground app. We'd really
// rather not kill it! Value set in system/rootdir/init.rc on startup.
VISIBLE_APP:
// This is a process only hosting activities that are visible to the
// user, so we'd prefer they don't disappear. Value set in
// system/rootdir/init.rc on startup.
SECONDARY_SERVER:
// This is a process holding a secondary server -- killing it will not
// have much of an impact as far as the user is concerned. Value set in
// system/rootdir/init.rc on startup.
HIDDEN_APP:
// This is a process only hosting activities that are not visible,
// so it can be killed without any disruption. Value set in
// system/rootdir/init.rc on startup.
CONTENT_PROVIDER:
// This is a process with a content provider that does not have any clients
// attached to it. If it did have any clients, its adjustment would be the
// one for the highest-priority of those processes.
EMPTY_APP:
// This is a process without anything currently running in it. Definitely
// the first to go! Value set in system/rootdir/init.rc on startup.
// This value is initalized in the constructor, careful when refering to
// this static variable externally.
These 6 categories are reflected by 6 memory limits which are configured for the lowmemorykiller in the kernel.
Fortunately, it is possible to configure the lowmemorykiller at runtime!
(But only if you are root). The configuration is set in the file: "/sys/module/lowmemorykiller/parameters/minfree"
So if you want to see the current settings, you can do:
Code:
# cat /sys/module/lowmemorykiller/parameters/minfree
This should produce output like this (or similiar):
Code:
1536,2048,4096,5120,5632,6144
These values are the 6 memory limits on which Anedroid starts to kill processes of one of the 6 categories above. Be careful, the units of these values are pages!! 1 page = 4 kilobyte.
So the example above says that Anddroid starts killing EMPTY_APP processes if available memory goes below 24MB (=6144*4/1024). And it starts to kill unused CONTENT_PROVIDERs if available memory goes below 22MB (=5632*4/1024).
So if you want to try if your Hero goes faster when fewer processes are running you can try to adjust these settings. For example if you practically do not want any empty processes you can set the corresponding value very high. For example, you can set the values like this:
Code:
# echo "1536,2048,4096,5120,15360,23040" > /sys/module/lowmemorykiller/parameters/minfree
This example will tell Android to kill unused Content providers if less then 60MB is available and kill empty processes if available memory goes below 90MB.
All other processes will stay untouched! Do you see the advantage compared to process killers?
One word about durabilty:
If you change the settings like this, they are NOT PERMANENT. They will be gone after the next restart of your phone. So you can try to play around a little bit. Please share your results if you find some improvements!
To make this settings survive also reboots you need to somehow set this at startup. I am running Modaco's custom rom and added the command to the startup script /system/init.d/ramzswap.sh, but there may be other ways to do this.
Currently I also disabled compcache on my Hero and set the lowmemkiller very aggressive, as it seems to me that this makes my hero very responsive.
So these are my (current) settings:
Code:
echo "1536,3072,4096,21000,23000,25000" > /sys/module/lowmemorykiller/parameters/minfree
(and compcache disabled)
But play around.. I am glad about any feedback.
Please also give feedback if I am wrong or missed something!
Thx!
i would be interested in changing the application which is startet when i long press on home (normally its the task changer of sense ui, but i want another program to be started)
this is excellent!, I just updated the ramzswap.sh to your settings and I can tell you it does an excellent job so far of running for like 20minutes, my ram is around 76 MB with facebook with all the htc widgets running, it usually drops to around 50 MB, does compcache save alot of ram when you disable it?
Thanks so much for the amazing info!, its hard someone to explain everything for you like you did.
woah!! i cannot stand my phone when RAM is less than 100mb
i keep it around 115~130
anyway whats new in ur method? why not use the Kill-All widgets after setting the ignore list ..or smth like "Automatic Task Killer" ??
inkredi said:
anyway whats new in ur method? why not use the Kill-All widgets after setting the ignore list ..or smth like "Automatic Task Killer" ??
Click to expand...
Click to collapse
Its more sensitive, and doesn't require any more input from the user, whilst having a constant effect
The difference of this method compared to task killers like "Automatic Task Killer" is that there is no separate application involved.
There is no widget or taskkiller process which needs to be run.
Instead you configure the Android kernel itself how to handle processes. While taskkillers need to be run regularly (automatically or by hand) to check memory and kill processes, the way I described this gets done complete automatically by the Android kernel, immediately when available memory goes under the configured limits.
There is also no need for ignore-lists or something like this, as the Android kernel knows which applications it can kill and which not. Furthermore you can configure much more fine-grained when to kill which processes and the kernel is using the internal "last recently used" list and kills the least needed processes first.
External task killer only can kill processes "blindly", they cannot see which processes are "empty" (not hosting an Activity) or which have been in the background for the longest time, and so on..
When people tell you that taskkillers are evil, they mean that taskkillers interfere with Androids process management in a way this was never intended. The way I described you still let Android handling processes itself, but you just tell it to be more restrictive.
So this is far less invasive into the Android system and (should ) have less side-effects..
But I'm still learning. I am a programmer who wants to understand things. And fortunately here we have the source to do so..
These values can be directly edited in your initrc
*APP_ADJ, *APP_MIN_ADJ, *ADJ, *PROVIDER_MEM, *SERVER_MEM and *APP_MEM
Thanks for the info!
Hmm.. but how can I change the init.rc? As it is placed directly in the root directory remounting and changing the file seems not to work (like on the the /system partiton).
I can remount and change the file, but the changes are gone after a reboot. The root dir is mounted as "rootfs".. No idea how to change files in there (without building a new ROM).
Well, you can extract the initrc from the boot.img (first you need to extract the ramdisk)
Edit, and repack.
Very interesting
My minfree: 1536,2048,4096,5120,15360,23040 (compcache disabled)
The system is very fluid and responsive. I dont know if this is by the tweak or compcache, but I see in EStrong Task Manager just the necesary process, no more empty process and more space for hidden process, second.
Very curious.
@adwinp: Ok, i thought already about this. I will try when I have some time. Thanks for the info.
Great Post !!
I try this for 12h
Code:
# echo "1536,2048,4096,5120,15360,23040" > /sys/module/lowmemorykiller/parameters/minfree
with compcache active and MCR 3.1 and hero has an incredible boost ! Apps load more quickly and fluidity is improved very well and i don't use anymore any "killall" app.
Background service also works perfectly.
Without this tweak, i noted random delay when many apps are loaded.
There is a way for disable compcache in MCR ?
@Xfight: Glad to see, I could help you.
Regarding compcache: I disabled it (for testing) on MCR by commenting out the line
Code:
/system/xbin/insmod /system/lib/modules/ramzswap.ko disksize_kb=XXXXX
in "/system/init.d/ramzswap.sh"
Or just temporarily (until next restart):
Code:
# swapoff /dev/block/ramzswap0
So exciting to hear this Anyway, I am some kind of new in linux programing. Would help a lot, if there is a step by step to add the command to the startup script /system/init.d/ramzswap.sh Do I have to go to recovery mode to do so? And use which application or just normal text editor to edit the script?
Thnks,
Anybody tried this on 2.1 Eclair AOSP ROMs?
I get permission denied when I try to change the values
# echo "1536,2048,4096,5120,15360,23040" > /sys/module/lowmemorykiller/parameters/minfree
Tzira said:
I get permission denied when I try to change the values
# echo "1536,2048,4096,5120,15360,23040" > /sys/module/lowmemorykiller/parameters/minfree
Click to expand...
Click to collapse
you need a rooted device for do this
This is just superb idea. I was looking for something like this for ages. Nice one mate.
By the way...
Tzira
I get permission denied when I try to change the values
# echo "1536,2048,4096,5120,15360,23040" > /sys/module/lowmemorykiller/parameters/minfree
Click to expand...
Click to collapse
Did you try type "su" and then the command ?
UPDATE to make more clear what these 6 values mean, when you enter a command like this:
Code:
echo "1536,2048,4096,5120,15360,23040" > /sys/module/lowmemorykiller/parameters/minfree
[B] #1 #2 #3 #4 #5 #6[/B]
Important: The unit of these numbers are "pages" (1 page = 4 kilobyte)
These define 6 limits of minimum "available" memory (which is not necessary equivalent to "free" memory under Linux, but this is an other story). These 6 limits are associated with 6 categories of processes under Android.
If the available memory goes below one of these limits, the kernel starts to kill processes of the corresponding category.
On Android the "ActivityManagerService" takes care of assigning processes into one of these categories (which means nothing more than setting an appropriate "oom_adj" value).
Details on the 6 categories:
#1: FOREGROUND_APP:
Only the current application in the foreground. This is the activity that is the focus for the user's actions.
#2: VISIBLE_APP:
Applications which are not in the foreground but are still visble to the user. That is, another activity lies on top of it and that activity either is transparent or doesn't cover the full screen.
#3: SECONDARY_SERVER:
First: The "HOME" application (or SenseUI on Hero) also falls into this category! So do not set this limit to high!
Further: All (secondary) services, which are currently running. These are all normal services as we know them from applications. ("Primary" services are life-critical services like the PhoneService which never will get killed by the lowmemorykiller.)
#4: HIDDEN_APP:
Any other Activity which falls not under #1 or #2. So any Activity as soon as it is not visible anymore (i.e. in the background, because of pressing Home, or starting another Activity).
#5: CONTENT_PROVIDER:
Processes which host a content provider that does not have any clients connected to it.
For explanation: Content providers store and retrieve data and make it accessible to all applications. Examples are: the contacts content provider, the calendar content provider, the sms content provider, and so on. These allow different applications to access the same underlying data (contacts, calendar, ...).
#6: EMPTY_APP:
This is a process without anything currently running in it. On Android a prgrammer can call "finish()" to close an activity. The system still can decide to keep the "empty" process running, to avoid the startup overhead when the user needs the activity again. All processes in this group are empty processes.
So, to sum up a little bit:
I definitely would be careful with the first 3 values, as they may affect directly the user experience! But it seems there is a wider range of settings we can try at the last 3 values. These applications could be safely killed. So try around until you find appropriate values for your needs.
As long as you just perform the "echo ..." command and do not change any startup script or something like this you should be on the safe side. If something goes wrong, just restart your phone and everything should be normal again.
Hope that helps..
[edit]
All said about this should apply to any Android device. Not only the Hero and not only Android 1.5. So try it also on Eclair!
[/edit]
eujene said:
Anybody tried this on 2.1 Eclair AOSP ROMs?
Click to expand...
Click to collapse
Im using it on the AOSP 2.0.1 rom for the CDMA Hero. I don't notice a whole lot of difference.
Related
Is it possible to put a higher priority on certain processes, eg phone, to make it run quicker?
I think Teksoft has an app to do so. There must be freeware apps to.
http://www.teksoftco.com/index.php?section=speedbooster
V
I remember there was a hack for Blue Angels to make the keyboard more responsive. Do a reg / google search on "Priority256" in the registry. I think it effects the CPU timings.
The lower the value the higher the priority, but make the priority too high and it will get more CPU time then the rest of the OS and mess up your phone. Also I'm not even sure what processes you can add the value to.
SpeedBooster 2.0
Product Overview:
An innovative product from Teksoft, Speedbooster helps you get maximum performance out of your mobile device. We've designed it to be completely safe for your hardware, and easy to use. The built in Benchmark module will easily show your performance gain.
SpeedBooster 2.0 is composed of 6 parts, built to work together to make your device faster and more powerful. In simple terms, we could say that SpeedBooster is "SAFE overclocking", since it allows you to focus the CPU power to various programs running on your device, without stressing the hardware. Besides this, a large number of tweaks have been added to control the functionality and performance of the Memory, Video and Storage!
Best practices list:
Speedbooster can help you distribute the resources of your mobile device to certain tasks, more important to you in a given time moment. Eg.: a user interface, a GPS program, a system component, etc.
You cannot use Speedbooster to gain more hardware power then your device already has, but you can use it successfully to make the important apps run faster at the cost of less important applications.
Here's a Best practices list to help you get started:
# Speed up only 1-2 tasks at a time
# Set lower non-zero priorities for the processes you don't need/use
# Give high priority to your GPS software/Multimedia player/Favorite interface
# To increase the system performance, "boost" gwes.exe, filesys.exe, devices.exe, etc
# Use the Benchmark to see the Hardware performance of your device, but keep in mind that boosting non-system tasks will not change the results.
# Explore, research and tweak various processes according to the configuration of your device for maximum performance!
U can get it here : http://www.teksoftco.com/index.php?section=speedbooster
Remember it s not a free program
there is a demo if u like it purchase it
i m already ...
*Anyone get the reference? Haha*
Resident Mort
The Scripter's Companion
Current News / Status:
Resident Mort is currently Under Development
Resident Mort is planned to be a background EXE that will extend the functionality of MortScript available to developers through the usage of the "PostMessage" function.
Resident Mort is planned to extend functionality by adding extra, possibly more complex, functions or even adding in the ability for more complex GUIs.
Features (Green = Implemented, Blue = In Testing, Orange = Planned, Red = Failed):
GetProcessList - Gets a list of Running Programs
GetRecentApps - Gets a list of Recent Apps (10)
CreateScript - Creates a MortScript with the provided info
MakeFile - Makes a file of any kind with the provided info
MakeFolder - Makes a folder at the specified location
RegToEvent - Registers a File to an event
UnRegFromEvent - Unregisters a File from an event
IsIdEventRegistered - Checks to see if a File is registered to an event.
DispImg - Displays an Image to the screen [and gets where the user Presses]
MakeForm - The Initial call for setting up an 'advanced GUI' form
FormAddObject -A Call that will add one of the predefined objects to the form being created
DeployForm - The Final call for setting up an 'advanced GUI' form, displays it to the user
This application is being made for MortScripters, to possibly make some projects easier. Since I don't use MortScript so much any more, I do rely on you the developers who use MortScript, to tell me what you want in the program.
Since I have a good deal of Functions there, I will commence work on a primary release
Saved For Future Use - Features and Screenshots
like the idea! advanced guis would be very useful
so this is a compiler? I am not sure what this is about
-sorry
No, this is a Resident App, an EXE that is always running in the background. It will have certain functions in it which can be accessed by MortScripters.
All the functions can be called with PostMessage ( I will provide documentation on how to do so, when I make a first release ). Then the results will either be written in the REGISTRY, written to a FILE, or copied to the CLIPBOARD (depending on how the scripter wants to handle the task).
Does this clarify it a bit?
Thanks for sharing!
A small update:
I am using this 'decent' planning utility, to help me keep track of my growing projects. According to this utility, the program is close to 30% complete. Then again, this is just a 'decent' utility haha. I would say, in my estimation (since some Code is "Copy + Paste"), I am close to 60% to 75% done.
A small change in my plans:
While I originally had the intentions of making this program as simple as a PostMessage in MortScript, I found out the following two Limitations:
1) MortScript's PostMessage/SendMessage only support(s) sending Numbers in the wParam and lParam parameters...very disheartening.
2) Due to #1, I made an assistant EXE, which would be run instead of calling PostMessage [this way I could do it Natively in my own control], but it is MUCH harder to transfer data between two applications that I would have thought! Due to Virtual Stacks and Memory Allocation 'rules', I couldn't EASILY do this.
So Here is my change:
In order to use Resident Mort, scripters will have to do about 3 or 4 commands to run. The only real commands that need to be used are PostMessage and RegWriteString (Did I get those right?).
In any case, my Resident Mort will read the Registry for corresponding wParam and lParam values and use those [in the future I will attempt Clipboard integration, to avoid Registry Interfacing].
When I release this program to the public, I will try to include a MortScript file that shows how to use all the functions. I don't remember much of MortScript [unfortunately], but I was thinking it could be helpful to make a "Library" of MortScript functions so a script will only have to call that function. But that is if some kind dev. would like to help out later on
Anyways, Thats that for this update. Expect a result in the coming week.
That sounds interesting for adv. gui functions.
Cyclonezephyrxz7 said:
1) MortScript's PostMessage/SendMessage only support(s) sending Numbers in the wParam and lParam parameters...very disheartening.
Click to expand...
Click to collapse
That's not MortScript's fault, it is design of whole Windows CE kernel, more here
I'd go with background EXE, that would listen to messages WM_USER+somenumber, maybe even region (for different actions, so you'd have both lParam and wParam free for another parameters). If you need help with this part, drop me PM on MSN, I had to study this a bit in the PinchToZoom project myself.
@OndraSter : Yeah, I know that Windows CE has limitations, however it is not impossible. Such an ability could be implemented in a code-update to MortScript. I did my reseach (if you look at #2, I mention that I found it much harder to transfer data between exe's that I had hoped) and found that you can transfer data via SendMessage (the Synchronous method) using a TRANSFERDATASTRUCT and WM_COPYDATA. If MortScripts interpreter could identify a SendMessage with a String value in either wParam or lParam, then it would create such a structure and transfer it, the receiving app would HAVE to take care of deleting the data though, or you have mis-used RAM.
As for how it is going to work now, I did not consider using WM_USER + a value, mainly because my program won't be using other Messages, and will only act if the correct wParam/lParam are provided (preventing accidental execution if the System decides to post a message with the same ID). I have it mostly covered, and I am closing in on finishing (currently with Reg data retrieval only, no Clipboard yet). I have completed 3 of the 7 Proposed Functions (MakeFile, MakeFolder, CreateScript) and I would have finished RegToEvents, but I got sorta lazy hehe. DispImg shouldn't take me more than a few minutes when I get to it, and once I get the API calls for Processes and figure out how to read the MRU reg-entry, I will have the last 3 complete!
As for Clipboard data retrieval, unless I am using the entirely wrong API calls, MortScript has an interesting way of using the Clipboard...I tried copying simple strings like "hello world" to the clipboard using MortScript, then trying to retrieve them in my Resident Mort, but the clipboard always comes up empty... Any ideas anyone?
Thats that for now I am about ready to release....any other functions you want implemented?
As for how it is going to work now, I did not consider using WM_USER + a value, mainly because my program won't be using other Messages, and will only act if the correct wParam/lParam are provided (preventing accidental execution if the System decides to post a message with the same ID).
Click to expand...
Click to collapse
http://msdn.microsoft.com/en-us/library/ms644947(v=VS.85).aspx
Good idea, the only downside being that it will generate the Message Numbers each time it is run... It is not assured that the Post / Send Message MsgIDs will remain constant.
Thanks for the link however
Cyclone,
Sorry about taking so long to post here...
How about, when the BT is on, this reports what is "out there" based on what the BT stack is telling you.
That is, it should read the surrounding area, then report that is saw my BT dongle. In the car, it should report that it saw my BT GPS unit.
Then, I can use that information to change my profile. That is, when it sees the BT dongle, regular phone calls. When it sees the BT GPS unit, run speaker mode, or connect to the GPS unit for phone calls.
Thanks!
--Ironhead
P.S. it would need to support the Touch Pro 2, Rhodium (my understanding is that it is Widcomm BT stack)
I"ll see what I can manage. I am really 'grid-locked' in my work on a couple of projects already So a release of this may have to wait a while....Sorry
I wish I had caught you a little sooner...
AutohotkeyCE may be a better base to work from than Mortscript...
http://www.autohotkey.net/~Micha/AutohotkeyCE/html/index.htm
In fact... AHKCE should be able to cater to all of your needs without the separate resident app
Yeah, I have seen that before. This project is really just a little challenge for myself to expand upon MortScript [because I know it is widely used].
Thank you for the link/suggestion however
I've been playing with Mortscripts for a while, I'm really thinking I can do everything I want, right from there...
EXCEPT:
Actually getting the information from the BT stack. I just need to see if there are any registered BT devices around my phone (so I can tell if I am in my car, at home, at work, etc.).
--Ironhead
Bumpity bump!
Hehe...Yeah, sorry for the lack of work on this. Check out FFP_LockScreen. I am working on a new release. I have very little time now, and I can't manage more than just one or two projects at a time. Once I release FFP_LS 3.0, I can devote some time MAYBE to this project. It all depends on how quickly the XDA-Marketplace idea takes off.
Sorry =\
I you can add a tool to make an GUI... it s must be soo cool...
This is guide made for Windows 8, but can be used with any version of Windows. The options might just vary a little.
**This guide is meant to provide a way to improve performance on your computer. This is in no way, shape, or form, a fool-proof method (although i tried to make it fool-proof). I will not be responsible for any damage done to your computer by using any of these tools in this thread.**
This guide will show you ways that I have found to optimize windows to get the most you can out of any computer. Some of these tools come with windows, while others I will provide links for your convenience.
To make some of this easier, i have created a '.bat' script for your use.
HDD – Hard Drive
Free up space: Using Windows Tools
This first tool comes with windows. It is the disk cleaner.
The easiest way to find this tool is to go to the start page and type in: “cleanmgr.exe” and click on that.
This takes a little while to sort through your hard drive. Here are the categories that I recommend cleaning:
Code:
[LIST]
[*]Downloaded Program Files
[*]Temporary Internet Files
[*]Recycle Bin
[*]System error memory dump files
[*]Temporary files
[*]Thumbnails
[*]Any of the user error reporting categories if you want
[/LIST]
There is the option to clean system files, which requires administrator privileges. Here are the additional categories that I recommend you clean:
Code:
[LIST]
[*]Previous Windows Installation(s)
[*]Windows Update cleanup
[/LIST]
Depending on how much data is going to be erased, this may take awhile. This tool also tends to use a lot of CPU
Free up space: Using CCleaner
This second tool is not part of windows, but is simple and easy to use. It is called CCleaner. This is a program that has a lot of options that are explained in the different sections (Registry)
- Link: CCleaner
For this category, you will be using the cleaner section which is opened by default when you open the program.
Everything that is checked, I recommend keeping checked. You may choose whatever you want though.
1st click analyze and let it sort through your HDD
It may pause and ask you if you want to force close Chrome or any other conflicting program. Go ahead and let it force close them.
2nd look at what it is going to remove a second time and make sure it’s all stuff that you don’t care about. After that, you may click clean.
There is a third tool that is under the “tools” section in CCleaner. It is the driver wiper.
When you go to this section, you will only wipe the free space on your HDD.
The 35 passes option is a little overkill. Feel free to choose what ever option you want though.
If you have an SSD, DO NOT do the 35 passes. this will only shorten the SSD's life. See more info regarding this in post #4
This could take many hours to complete so make sure you have time.
This also may not give you a whole lot of space, but it should give you some.
Make your disk load files faster:
The major thing that many people recommend to do often, is to defragment the HDD. For people with SSD's, this is not needed
This program is found by going to the start menu and typing in “defrag” in the settings section.
When this opens, click on your HDD, and then click on analyze. It will then scan your HDD and tell you the amount of your HDD is fragmented.
You then click on optimize and this process will take a while as it does about 13 passes over the HDD
Registry
*For this procedure, you will be using CCleaner again. For those who skipped the HDD section, link for this program is in that section.*
In CCleaner, click and on the registry section and then click: “scan for issues”
After it scans, you can take a look at what it has found before it removes them. You can also choose what to delete.
Click fix issues, and this is when it will ask to backup the registry. I HIGHLY recommend doing this.
It will then ask you one by one what you want to do with each entry. You also have the option to fix all issues with one click
Uninstalling programs
For uninstalling programs, the windows uninstaller does not do it for me. I use revo uninstaller
- Link: Revo Uninstaller
This program is pretty self-explanatory but it does more than just uninstalling the program. After the program is uninstalled revo will scan your HDD and your registry to find anything that it believes it left over from the program.
BEWARE: make sure you choose wisely what you delete. Revo does make a system restore point before it uninstalls the program, but this is not a fool-proof method.
**On windows 8, there is a small bug, as far as I know, that when scanning all of this, it will use a decent amount of your CPU.**
*If any of you have ideas on how I can make this guide better whether it is by adding methods, or just clarifying some of these directions as this is the first time that I have written a reference guide like this. Any help is greatly appreciated. :fingers-crossed:
Thanks:
Microsoft: for Windows
Piriform: for CCleaner
VSRevo Group: for Revo Uninstaller
BillP Studios: for WinPatrol (Next post)
GoodDayToDie: for giving some major tips.
Awidawad: letting me use his code as a guide
Tips:
GoodDayToDie: Post #4
SixSixSevenSeven: Post #5
Tips on how to make your computer start-up faster.
Programs start-up
Using task manager
In task manager, there are a ton of options that can be used to help performance. This is especially true with the new task manager that
Microsoft has pushed out with Windows 8.
For the majority of people, when you open up task manager, it will look like this:
To get the full format of task manager, which you will need for this process, you will need to click on the button at the bottom that says: “More Details” and it will open the full version of task manager.
Now to disable start-up programs:
At the top where all the tabs are, click on the “Start-up” tab and you should see something like this:
Now all you have to do is click on the process that you do not want starting with your computer, and click the “Disable” button. Here are some processes that I recommend but you can choose whatever you want.
Code:
[LIST]
[*]Adobe CS6 Service Manager
[*] Apple Push
[*] Bing Desktop Application
[*] Evernote Clipper
[*] Hamachi Client Application
[*] iTunesHelper
[*] KiesPDLR
[*]Logitech Download Assistant
[*]Quicktime Task
This is only what I have disabled. You may disable whatever you want because there are no system tasks that are there to disable.
**That does not meant that you can disable whatever you want because that might cause some programs to not work**
[*]Using WinPatrol
[/LIST]
This program does more than just control start-up programs. This section is only going to talk about the start-up section.
This section of the program, in essence, is a more advanced program to deal with start-up programs.
- Link: WinPatrol
After you install WinPatrol, go to the "Startup Programs" section. It should look like this:
Run through the list of programs and find ones you want to disable. My list of recommended programs is listed under the task manager section.
NOTE: If you do not know if what you are going to disable is going to effect any of your programs, then I would recommend using the "Disable" button. If you KNOW that it WON'T effect any program, then feel free to hit the "remove" button
This program does not only take care of start-up programs. There are many other features such as Active taks and IE Helpers that i will not be covering in this thread. I do however, recommend that you look at them.
Services:
Using Service Manager:
This is going to show you how to use the service manager that is built into Windows to disable some services form starting automatically with your computer. For this, you will not be disabling any services completely, but rather just have them set to manual which will allow them to run when needed.
Start by opening the start page and typing "services" into the settings section. you should end up with a screen that looks like this:
Click on "View Local Services"
Right-click on a service such as "Apple Mobile Device", click properties, and change the startup type from Auto, to Manual.
Choose other services and do the same.
WARNING: I highly advise you NOT to disable any system services as this could cause problems. I am at no fault for what you disable.
Tips from users:
GoodDayToDie said:
tip of my own: there's a bunch of Windows Services which are enabled by default because *somebody* might need them, but which are really unnecessary on most computers. Some good examples include the Bluetooth service (if you don't have or don't use Bluetooth), Encrypting File System (if you don't use EFS), Print Spooler (if you never print), and so on. These can be disabled from the Services management console (services.msc, or find Services using the Start search). I actually recommend just turning them from "Automatic" down to "Manual"; this way, if you ever do want to use such a thing, it's possible that it will still work when you try to invoke it. As with other tweaks, do bear in mind what you've changed and watch for any potential system problems; if you're unsure, either revert the change or don't make it in the first place. Changing certain system services will make the system nigh-unusable. Also, be aware that changing many of these services really won't help much; it might shave fractions of a second each off of the bootup time of the system and/or save a few megs of RAM, but an idle service really isn't that big a threat to system performance if it's not coded completely horribly.
Click to expand...
Click to collapse
SixSixSevenSeven said:
In almost a year on win7 I never had to manually invoke defrag, whenever I went to and analysed the disk it was only ever 1%, on the 80gb hard disk I had at the time its an insignificant amount of dragged data and I ignored it. I got windows 8 in November and so far it still says 0%.
I would recommend at least checking the values though, especially for external drives (my one hit 20%, think it was unplugged during windows scheduled defrags)
Click to expand...
Click to collapse
the_scotsman said:
Windows 8 knows if an SSD is being used. If it sees one, it won't allow you to "defrag". it will still allow you to "optimise" the drive. What this does is to manage TRIM to help clean the drives.
Look up TRIM if you want to know more. But do not disable the scheduled "optimisation" of an SSD drive as it's not a defrag, it does other things.
More info here: http://www.helpwithwindows.com/Windows8/Windows-8-on-Solid-State-Drive.html
Click to expand...
Click to collapse
One last one just in case
also if this is in the wrong section, can someone please let me know. Thanks :good:
this guide is also a work-in-progress and no where near complete. again, feel free to offer whatever advice you have
A couple things to point out here, quickly:
* Don't try to do a massive overwrite a la CCleaner if you have a SSD. It will do nothing except use up a small portion of the disk's lifetime. SSD logical sectors are dynamically mapped to physical NAND blocks by a wear-leveling algorithm; overwriting the same address on the "disk" 35 times probably just means burning one write operation (out of tens or hundreds of thousand each, mind you) on 35 different chunks of NAND memory. Trying to read the "erased" data back in after even a single overwrite is quite futile, though.
* Manual defragmentation shouldn't be necessary on Win7 or later, unless somebody has disabled or otherwise tampered with the automatically scheduled task that runs it in the background. If you never leave the computer on except when it's in active use, though, it might be necessary. Also, SSDs don't benefit from defragmentation in any meaningful way - the speed boost is completely trivial given the lack of seek times, but again it burns a bit of NAND lifetime - although Windows should be smart enough to figure this out on its own.
A tip of my own: there's a bunch of Windows Services which are enabled by default because *somebody* might need them, but which are really unnecessary on most computers. Some good examples include the Bluetooth service (if you don't have or don't use Bluetooth), Encrypting File System (if you don't use EFS), Print Spooler (if you never print), and so on. These can be disabled from the Services management console (services.msc, or find Services using the Start search). I actually recommend just turning them from "Automatic" down to "Manual"; this way, if you ever do want to use such a thing, it's possible that it will still work when you try to invoke it. As with other tweaks, do bear in mind what you've changed and watch for any potential system problems; if you're unsure, either revert the change or don't make it in the first place. Changing certain system services will make the system nigh-unusable. Also, be aware that changing many of these services really won't help much; it might shave fractions of a second each off of the bootup time of the system and/or save a few megs of RAM, but an idle service really isn't that big a threat to system performance if it's not coded completely horribly.
+1 on defrag. In almost a year on win7 I never had to manually invoke defrag, whenever I went to and analysed the disk it was only ever 1%, on the 80gb hard disk I had at the time its an insignificant amount of dragged data and I ignored it. I got windows 8 in November and so far it still says 0%.
I would recommend at least checking the values though, especially for external drives (my one hit 20%, think it was unplugged during windows scheduled defrags)
A note on freeing up space (which is a good idea!):
goldflame09 said:
I recommend that you use the “very complex overwrite "35 passes" option.
If you have an SSD, DO NOT do the 35 passes. this will only shorten the SSD's life. See more info regarding this in post #4
Click to expand...
Click to collapse
35 passes is also overkill on hard disks. Most government standards only require 1-3 passes. Just one pass is sufficient to prevent data recovery via software - there are probably only a handful of labs in the world which can recover data after this (by removing the platters from the drive and reading the bits off).
You also don't need to do this at all if you use bitlocker or truecrypt to encrypt the drive.
Updated: added service management to second post
Windows 8 knows if an SSD is being used. If it sees one, it won't allow you to "defrag". it will still allow you to "optimise" the drive. What this does is to manage TRIM to help clean the drives.
Look up TRIM if you want to know more. But do not disable the scheduled "optimisation" of an SSD drive as it's not a defrag, it does other things.
More info here: http://www.helpwithwindows.com/Windows8/Windows-8-on-Solid-State-Drive.html
the_scotsman said:
Windows 8 knows if an SSD is being used. If it sees one, it won't allow you to "defrag". it will still allow you to "optimise" the drive. What this does is to manage TRIM to help clean the drives.
Look up TRIM if you want to know more. But do not disable the scheduled "optimisation" of an SSD drive as it's not a defrag, it does other things.
More info here: http://www.helpwithwindows.com/Windows8/Windows-8-on-Solid-State-Drive.html
Click to expand...
Click to collapse
Added to tips from users section
Sent from my Kindle Fire using Tapatalk 2
Updated: Added '.bat' script to make this as easy as possible for all of you
will be adding description soon for extras that i have included
For a while now I've been asking about some of these and searching online, but no one seems to know too many details about these apps. Recently I decided to dive deep and find out.
In the latest 5.0.3 build for the 5T, I see 7 apps in /system/vendor/app/
/system/vendor/app/aptxui/aptxui.apk
This one appears to be a codec manager for bluetooth audio settings. In another thread someone pointed out it has annoying popup notifications. The entire apk could be deleted if it's annoying enough.
/system/vendor/app/CABLService/CABLService.apk
Inside the app is /res/values/strings.xml which shows CABL stands for "Content Adaptive Backlight Settings", for which the backlight can be automatically adjusted based on the screen content. It says, "Lower quality level indicate CABL will try to save as much power as possible without significantly affecting content being displayed. Auto visual quality level means CABL will try to maximize power savings based on auto detecting type of content being displayed."
/system/vendor/app/colorservice/colorservice.apk
This apk "Allows the application to directly affect the device's display paramter" and calls native_getAdaptiveBacklightScale, native_getBacklightQualityLevel, and native_getColorBalance. I believe it changes the screen color balance at sunrise and sunset. The way it's written seems insanely over-complicated.
/system/vendor/app/Perfdump/Perfdump.apk
Perfdump is a "Performance Tool by Qualcomm" which allows devs to grab details of the system (device storage, external storage, hardware test, logs) into a compiled report. The inclusion of <action android:name="android.provider.Telephony.SECRET_CODE"/> does seem odd though.
The full list of report objectives includes: Graphics, Input, View System, WebView, Window Manager, Activity Manager, Sync Manager, Audio, Video, Camera, HAL, Application, Resource Loading, Dalvik VM, RenderScript, Bionic C Library, Power Management, Package Manager, System Server, Database, CPU Scheduling, CPU Frequency, CPU Idle, CPU Load, Memory Reclaim, Binder Driver, Binder Lock, Synchronization, Workqueues, Regulators, Page Cache, IRQ Events, Disk I/O, MDSS, GPU, Screen Capture, and Overlay Alpha Setting.
/system/vendor/app/SecProtect/SecProtect.apk
SecProtect allows users or devs to encrypt or decrypt files. "Please set password first before encrypting/decrypting. You need to provide this password for decrypting the encrypted file later." What is being encrypted? No idea. XML tools include:
change_password_layout.xml
create_password_layout.xml
encryptdata.xml
encryptdata_operation.xml
file_explorer.xml
list_item_authaccess_settings.xml
/system/vendor/app/SVIService/SVIService.apk
SVI Display Settings can "Enhance the viewing based on the ambient condition", it's some sort of automatic screen brightness adjustment tool. The line ".method public abstract unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient)Z" is a little disturbing.
/system/vendor/app/TimeService/TimeService.apk
TimeServiceBroadcastReceiver uses action.TIME_SET and action.DATE_CHANGED to maintain the correct time and date on Android devices. There are only a few lines of code in here, and no NTP servers listed, it's difficult to see how it works.
Great info, thanks for your findings, but I don't think these apps can be deleted? or is it ok to remove them? cheers
Can they be removed? Not sure yet. I'm going to remove the following and test on my 5T.
/system/vendor/app/CABLService/
/system/vendor/app/Perfdump/
/system/vendor/app/SecProtect/
/system/vendor/app/SVIService/