Quote:
Originally Posted by sciurius
I recently upgraded from 32-bits Fedora to 64-bits Fedora 17 and I perceive a vast increase of memory consumption. Theretically, a program consisting of all pointers could double in size, but I measure memory increase up to 50 times! This means that the same program, mockbuilt from the same rpm takes 50 times as much memory in 64bit than when built for 32 bit.
Also, many standard programs have ridiculous sizes. For example, according top top(1): firefox, gajim and transmission-gtk all take well over 1GB of memory each.
So either top(1) is wrong, or there is something serious going on.
|
Actually the theoretical maximum is a lot more than double for a variety of reasons but that is both exceedingly rare and your problem likely has very little to do with the size of pointers anyway. More likely reasons to consider (in no particular order):
How many tabs are you using and what extensions are you using?
Did you switch from Fedora17 32bit to Fedora17 64bit? If you changed version as well then you likely have different versions of libraries and programs which may result in different memory usage.
When you are looking at memory usage are you looking at Virtual memory or Resident memory (VIRT and RES column respectively in top)? Applications often allocate large chunks of memory up front to avoid pauses to ask for more memory later. That would give a very high virtual memory figure. The memory itself isn't actually allocated or paged into ram until it is actually used. The resident memory is the memory is a far better indicator of the actual amount being used. The amount of memory that is requested up front can in many cases vary from 32bit to 64bit processors but since a lot of it is not used at any given time anyway it is not an issue.
A lot of those programs will cache data in memory for speed and ease and then write stuff out at some future point. On 32bit processors the virtual memory (the memory space the process can see) is limited to 4GB. On 64bit processors the maximum virtual memory is much much higher and sometimes programs will happily cache more safe in the knowledge that the memory will just be swapped out when not in use but all the program has to do is read a memory address and the operating system will just bring back what's needed. Makes things a lot easier for many cache heavy programs.
It's not impossible that a program or library is perfectly fine on 32bit but may exhibit a bug when compiled as 64bit. The reverse can also happen.
Be careful when you watch memory usage that you subtract the shared memory usage. The shared memory usage is in fact shared between multiple process (normally for use in inter-process communication) and is actually only one lot of memory but is shown in every process that is using it.
Have you got a lot of physical ram? If you have a lot more than 4GB then the processes may have used less before because it's all they had but now they have more memory to play with they will cache things for longer... This can also lead to more resident memory because there is simply more memory to be resident in so to speak.
When all is said and done though none of those figures would sound in any way odd (assuming they are virtual memory or lots of physical ram combined with the last point) for moderate usage.
Also note that you have just woken up quite an old thread. It would probably have made more sense to start a new one unless the new post was directly related to the old one.