After many tests I think that we really suffer from a lack of RAM. But the internal memory (NAND) should be the same speed as RAM I think. So why we don't use another 128Mb of NAND as additional RAM? A sort of swap part, but used as RAM and not as normal swap....
If someone related to the kernel would answer is it possible or not, it would be good)
DiMiK said:
After many tests I think that we really suffer from a lack of RAM. But the internal memory (NAND) should be the same speed as RAM I think. So why we don't use another 128Mb of NAND as additional RAM? A sort of swap part, but used as RAM and not as normal swap....
If someone related to the kernel would answer is it possible or not, it would be good)
Click to expand...
Click to collapse
Using it as RAM would propably require major changes to the kernel if it is even possible which I doubt it is. Using it as swap would be the possible alternative and I pretty sure that is very possible and would help performance but at a cost.
1. You would either have very little left for system and data or you would have to put system and/or data on the SD-card and that alone may make you lose anything you gain from putting swap on NAND.
2. I actually asked the swap-on nand question myself and well, we can't replace our NAND, at least not easily and swap is I/O intensive and intesive I/O will sooner or later wear out the NAND. So basicly this is not a good alternative unless you want to turn your phone into a paperweight sooner than you had planned.
So what we can do is using compcache and/or swap on SD-card. The easiest thing is to just enable some compcache. It uses RAM as swap and uses compression on the contents so we can hold more things in RAM that we would usually be able to. This means Android can keep more apps in "sleep" allowing for faster switching between apps but it will also decrease the possible amount of available RAM for the active app. I usually turn on compcache with the default setting which is to use 25% of the RAM for compressed swap. It might be placebo but IMHO it feels a it "smoother" to use after that.
Another alternative is to use a swap partition in the sdcard. Just using swap means you do not need to load any compcache kernel modules and there is no compression taking place so it's a good alterantive. However you need know your way around partitioning SD-cards to get this running so it's not as easy as just enabling compcache (assuming the build supports compcache).
For the really advanced you can enable compcache with backing swap. It means it uses a certain amount of compressed swap i RAM and when it runs out of space there it starts putting stuff on the SD-card swap partition. Once again, a bit tricky to setup but may be the best alternative.
Read more about it here: http://wiki.cyanogenmod.com/index.php/Compcache
kallt_kaffe said:
I usually turn on compcache with the default setting which is to use 25% of the RAM for compressed swap. It might be placebo but IMHO it feels a it "smoother" to use after that.
Click to expand...
Click to collapse
It make good effect: more applications can run simultaneously.
I have a Flash application that requires ~130Mb of RAM and I want to run it on my Galaxy S
I've installed Froyo JPK with latest flash 10.1, but just before the end of startup procedure I always get the "exclamation circle" icon which is apparently the "out-of-memory" message in flash.
I have tried to free up the memory with task killers and memory boster, but can't get it above 175 Mb, which is obviously still not enough, since probably browser and other applications/services use it back before the flash application starts completely. Or might be also some limitation my browser in Galaxy S ? -> see EDIT below
On HTC Desire this same application works like a charm.
So I wonder...
Is there any way to get more free memory ? [EDIT: Yes, with "Chuck Norris mode" app killers, but i does not always help and it's lame]
Is there any way to get more than 311-322Mb RAM used for Applications ? [EDIT: Yes, when developpers will found out the way how to get less memory used for video codecs or even found the misterious 32Mb which are yet nowhere to be found]
Can we expect to this memory issue to be solved in future Froyo releases ? [probably only Samsung knows that, but for now it seems very unlikely]
EDIT: Found out that I get out-of-memory with every single application when it reaches 128Mb of RAM usage.
This is again specific to SGS. Looks like this is some internal max memory allocation size per application/VM
So here is another question:
Is there any way to increase this limit (might be android internal or dalvik VM related)?
no
no
no
sorry to say that...
flypubec said:
I have a Flash application that requires ~130Mb of RAM and I want to run it on my Galaxy S
I've installed Froyo JPK with latest flash 10.1, but just before the end of startup procedure I always get the "exclamation circle" icon which is apparently the "out-of-memory" message in flash.
I have tried to free up the memory with task killers and memory boster, but can't get it above 175 Mb, which is obviously still not enough, since probably browser and other applications/services use it back before the flash application starts completely. Or might be also some limitation my browser in Galaxy S ?
On HTC Desire this same application works like a charm.
So I wonder...
Is there any way to get more free memory ?
Is there any way to get more than 309Mb RAM used for Applications ?
Can we expect to this memory issue to be solved in future Froyo releases ?
Click to expand...
Click to collapse
If you need that amount of memory you should use a computer.
Its not the phone thats the probem here. its what you try to run.
//Damian
I would personally put up money to get the RAM issue resolved.
People keep saying that 324~ MB is enough. That's not the point though. The point is that Samsung advertised 512MB. Any reasonable person would assume that, like other phones containing 512MB of RAM, that the phone would have 400+MB available for general usage. 324 MB for such a power phone is dismal. I consider Samsung's claim to be a form of false advertising. Yes, technically the phone has 512MB of RAM, but not according to the reasonable expectations of a consumer. Almost half of the stated RAM isn't usable to the end user for applications. This is a problem with the phone from the standpoint of delivering the expected value to the consumer.
Dear XDA Developer Legends,
Do you think it is possible that you will be able to free up ram that is allocated to the ram disk?
Yours,
Concerned Customers
Hm, maybe its applicable for a lawsuit?
andars05 said:
I would personally put up money to get the RAM issue resolved.
People keep saying that 324~ MB is enough. That's not the point though. The point is that Samsung advertised 512MB. Any reasonable person would assume that, like other phones containing 512MB of RAM, that the phone would have 400+MB available for general usage. 324 MB for such a power phone is dismal. I consider Samsung's claim to be a form of false advertising. Yes, technically the phone has 512MB of RAM, but not according to the reasonable expectations of a consumer. Almost half of the stated RAM isn't usable to the end user for applications. This is a problem with the phone from the standpoint of delivering the expected value to the consumer.
Click to expand...
Click to collapse
the phone has 512MB and you can use all. But the system use some of it.
Its only user that cant read and understand how it work hat keep asking about it.
And this phone has more ram that most have. So yes it is enough of ram.
'If you try to runt 50+ all time you will and up with low memory.
But its the same on a computer. none complain about that.
Only that you can only see 3.5GB on windows and use that on a 32.bit system. Well now you can see 4GB and all people are happy.. but they still cant use it, but its looks good.
That the same with this phone.
If samsung did show 512MB and did show how much that was free, all people that complain would be happy. but it dont change a bit what thay can use.
yaocheng said:
no
no
no
sorry to say that...
Click to expand...
Click to collapse
That make no sense
there is no reason to get less memory with the i9000 when comparable devices like the nexus one running the same OS version has 100mb+ more free ram
DamianGto said:
the phone has 512MB and you can use all. But the system use some of it.
Its only user that cant read and understand how it work hat keep asking about it.
And this phone has more ram that most have. So yes it is enough of ram.
'If you try to runt 50+ all time you will and up with low memory.
But its the same on a computer. none complain about that.
Only that you can only see 3.5GB on windows and use that on a 32.bit system. Well now you can see 4GB and all people are happy.. but they still cant use it, but its looks good.
That the same with this phone.
If samsung did show 512MB and did show how much that was free, all people that complain would be happy. but it dont change a bit what thay can use.
Click to expand...
Click to collapse
This misses the point of my original statement. The Nexus One is advertised (along with many other phones) as having 512MB of RAM. The N1 has 380-400+MB available of RAM available for applications, as do many other phones containing 512MB of RAM.
Yes, the system does reserve some for certain system functions. Even after those functions have been reserved on other 512MB models, the vast majority is still available to the end user. This is not the case on the Galaxy S series. This is evident by the original posters comment regarding his application.
To address your Windows example: Windows 32 bit actually states that only a portion of the 4GB is available for use. I don't see in the advertisements where Samsung states "Contains 512MB -- 324MB available for actual usage"
I think most consumers, like myself, would assume that the amount of RAM advertised is directly correlated to the amount usable for applications.
Otherwise, what's the difference between a phone advertised as having 384MB and the Galaxy S? They both could have the same amount of RAM available.
andars05 said:
Windows 32 bit actually states that only a portion of the 4GB is available for use.
Click to expand...
Click to collapse
But its not the case here.
+1 for the rest.
This is what i get if I run top command from adb from a freshly booted phone:
←[H←[JMem: 296300K used, 15048K free, 0K shrd, 6968K buff, 134720K cached
CPU: 1.3% usr 2.3% sys 0.0% nic 96.2% idle 0.0% io 0.0% irq 0.0% sirq
Load average: 0.99 1.33 0.59 1/351 3109
Wonder what this "cached" means.
Can somebody pls run this on HTC desire ?
I don't think our phone has 512mb of RAM physically available to the system. I think the phone has 512mb of RAM in total but it looks like 128mb of it is graphics RAM or something. Meaning we only have 384mb available to the system. The maximum amount of RAM I can ever get free is about 175mb so I don't think that it's reasonable that the system is using about 337mb of RAM. My desktop linux system uses less RAM than that on boot.
Isn't the memory allocation for graphics dynamic?
how often does the graphics really need all that ram?
any why aren't other devices affected by this? (doesn't the GPU on nexus or milestone for example need memory allocated?)
sionyboy said:
Do you think it is possible that you will be able to free up ram that is allocated to the ram disk?
Click to expand...
Click to collapse
Please explain. Which ram disk do you mean?
Also, since it runs on linux, cant we assign some space from the internal sd (or external) to make a virtual ram disk that would be used as ram when needed? some king a paging file that we know on windows...
And if this is possible, can we assign it to video so graphism will be a little slower but app will become faster?
I think there is something we can do if we can change assignation of ram, apps, and video to make this phone way much powerful.
(just an idea...)
franklin01 said:
Also, since it runs on linux, cant we assign some space from the internal sd (or external) to make a virtual ram disk that would be used as ram when needed? some king a paging file that we know on windows...
And if this is possible, can we assign it to video so graphism will be a little slower but app will become faster?
I think there is something we can do if we can change assignation of ram, apps, and video to make this phone way much powerful.
(just an idea...)
Click to expand...
Click to collapse
There's always Compcache..that worked like a charm on the G1 and Magic.
http://forum.xda-developers.com/showthread.php?t=724960
As you can see, all other Android phones reserve some memory to the system... It's just the way it is.
the sgs kernel creates amemory blackhole, that is, it starts using memory after a certain memory address.
It does that because many things in the hardware are using fixed memory addresses to allocate their own memory which is not managed by the kernel itself and the kernel will never touch or see it.
what you call "system memory" is usually memory used and seen by the kernel, for the OS's functionality: various applications, services, daemons, kernel daemons, kernel memory itself (its not much) and some time some ramdisks.
Every phone also uses that of course, which amounts for like 80-130megs. They also often use small black holes of like a couple of megs, but that's so little that no one will notice.
The sgs makes a big blackhole. To me it's more of a design fault, but not much you can do about it I guess. It would need someone who's going to read the complete hardware sheets to bypass that, if at all possible, lol. Or samsung.
I bet they fixed the design issue in the galaxy tab and either the chip has separate dedicated memory either there's no blackhole.
Another theory why the blackhole is necessary is that there's a bug in the chip and it's messing up a portion of the memory, so this portion is left unused (blackhole'd - never seen by the kernel) for stability reasons.
i hope this gives some insight.
reference from the previously linked post:
- Galaxy S [2.1] RAM = 512 MiB | Linux = 325 MiB | Reserved = 187 MiB (with I9000XWJM2 firmware)
notice the huge black hole here (187 megs)
I used to have more than 300mb free after reboot with nexus one...
DamianGto said:
the phone has 512MB and you can use all. But the system use some of it.
Its only user that cant read and understand how it work hat keep asking about it.
Click to expand...
Click to collapse
No, *we* can't use it all , because we != system. The debate is not whether or not there is 512MB of physical memory; there could be , since Samsung advertises as having 512MB, but its not all user accessible memory. We don't know for what the system is utilizing that memory, I don't think its for loading some of the core system components; otherwise we should be left with more free RAM like other devices with 512MB of RAM (i.e Nexus One). Its more likely that 188MB is used by either the GPU and other hardware or as a Ram disk.
In contrast, other phones having 512MB of RAM don't use user allocated memory for system or hardware use (at least not the same way Samsung does). They are somehow handling it differently, maybe their GPU's and Other hardware software counterparts have dedicated memory. Whatever said, at the end of the day in the user's point of view, Galaxy S DOES NOT have 512MB of RAM as what we were all led to believe . That is pure deception !!
If they knew this was the case then they should have alerted this to the users. For-example a spec sheet for Samsung Fascinates says 512MB Flash/384MB RAM they should have advertised Galaxy S like that instead of lying through their teeth.
I'm curious about the memory swap implementation present in some kernels.
Did anyone know the wareout of the flash memory? From my knowledge there's a limited number of writes (about 100k ?) to a flash memory after that it can be damaged permanently.
IMO the best solution would be swapping on the external SD card that you can cheaply replace if damaged.
Then the question is which class of memory you need for good performance? If the read/write time is slow, all the benefit is lost.
Inviato dal mio Optimus 2X usando Tapatalk
Hi,
I am using modaco's gr5 (v20l) with Horsepower Rc11-R kernel. And I am using a feature available from that kernel called Compcache (compressed cache) which is regarded as swap.
For what I understand, the cache/swap file actually resides in the physical ram itself in a compressed form. Meaning, certain blocks/partition of the ram is being specifically reserved as compressed swap data so that more data can be stored in the physical ram. There are discussions about the fluidity and cpu usage thus affecting the battery life, but I have use it for a week and didn't notice much difference in battery consumption. So it has nothing to do with the internal flash memory.
As far as I know, there is no kernel supporting swap file on internal sd, only fps kernel dev planning on doing it because he does not like compcache, the idea of compressed swap file.
Personally, I prefer compcache on physical ram than swap on external sd because fetching files are faster that way and don't have to worry much about wear on the ram.
I hope someone else can correct me if I am mistaken! thanks!
Cheers!
Thank you for the detailed explanation.
Which is the level of compression achievable?
Wouldn't be more efficient to use a ramhack (like ironkernel) to get more memory?
Sorry for so many questions
Inviato dal mio Optimus 2X usando Tapatalk
I am not really quite sure about the amount of compression attainable as I do not know much of the nature of compcache. Sorry.
About the ramhack, do you mean the gain of more ram by removing ota function and others or the hack where you lessen the amount of gpu memory buffer and allocate it to main memory?
The gpu buffer ramhack was implemented in most kernels before, but most users do not like the sacrifices that they have to make just to gain an additional 64mb ram (that was the gain that time, I don't know about now on the kernel you mention). One of the problems is with stock gallery not displaying photo correctly and games not function properly.
Fyi, currently I have 750mb of ram by using compcache, 384mb on main, 384mb as compressed cache, all in physical memory. I do not know how they do it, but its there, and I do notice the difference whereby application on background not being terminated as fast as before.
Maybe someone else can give you a better understanding of compcache, how it resides on the ram etc.
Cheers.
my 2c about compcache (now "zram") and swap
Both compcache and swap are used to improve performance AND maximum number of open apps.
1)How they work:
swap is the classic way to "increase" ram on a system.
Swap is a space on a non volatile memory (="not ram") where unused ram data are parked instead of being deleted.
Swap wears(and kills) memories it is put on. It is an heavy access file. Sdcards don't like it. They are not full-featured SSD Disks. Think of your photographs
Compcache is the new way to "increase" ram on a system,
compcache :
-reserves a part of you ram (cache),
-then it looks for unused data sitting on remaining, "real", ram,
-compresses these unused data (with a very primitive,loseless, algorithm) and
- send them to its cache OR to swapfile.
Compcache's trick works well when you have lots of higly,easily, compressable data in your ram. Text is higly compressable, an executable is less compressable.
1a)
-if, after compression , data are still "big" (compressed data > original data /2), then compcache sends compressed data to swap, not to cache.
-and when compcache is full, unused compressed data are sent to swap.
2) because of compression involved, compcache uses more cpu cycles than classic swap.
3) settings of both depends on
-hardware specs of the system.
-use of the system
4) compcache+swap is better than swap alone if your ram is filled with EASILY compressable data.
4a)Remember point 1a : compcache has a simple compression algorithm, and ALWAYS first compresses data.
AFTER COMPRESSION it decides if keeping them in cache or sending them to swap. This means that
if compcache has always to work with not compressable data, it will compress them AND send to swap. this means double work: compression AND swap access.
4b) First practical conclusion :
compcache is useful for people using LOTS of text-intensive apps (forums, webpages, docs, facebook)
compcache may be useful in apps using SIMPLE still images (some games, driving assistant)
compcache is useless in multimedia activity (watching youtube, movies, photographs, listening to mp3s, playing some other games.)
5) The swap file.
As told at the beginning, swap, both improve performance(=speed) AND number of apps simultaneously open.
Lets' take a look to the PERFORMANCE thing.
5a)On "classical" (fragmented, not-SSD hard disk) systems, a swap file is always faster than retrieving datas from original disk locations. EVEN IF the swap file is on the same disk where original datas are.
This happens mainly because :
5a1)-data in swap file are less fragmented, needing less seek time.
5a2)-swap file is usually put in the external (=fast) zone of an hard disk,
5b)On SSD systems (phones included) 5a1 and 5a2 are not true, and a swapfile is USELESS IN IMPROVING PERFORMANCE EACH TIME THAT it is keeping data which are already present on its same phisycal memory.
Examples :
5b1)opera browser executable is on phone memory; but Opera-cached-webpages have been moved on sdcard via app2sd.
In this situation a swap file on sdcard is obviously useless to improve internet browsing with Opera.
5b2) i use apps (facebook, Whatsapp) which DON'T have a good caching of their own. Swap could be useful: it could avoid re-downloading data from the internet.
Now, the INCREASE MAXIMUM NUMBER OF OPEN APPS argument.
This is always true.
So:
5c)swapfile on SSD speeds up multitasking ONLY IF you use apps that
-badly manage (or don't have) a cache of their own.
-don't like force closing
Since this seems to happen very often to android apps, a swapfile is useful.
5c1)Swapfile could speed multitasking also IF an app's well-designed-cache is on a media WAY SLOWER than swapfile (but this is not LG O2x situation: it has a class10 internal memory).
So, my 2 cents about "increasing" RAM in LG O2X is :
-leave apps on phone memory, and put swap on a class10 sdcard.
-enable compcache only if you use lots of text-rich apps.
First: I think this doesn't really fit into the development section.
Then: I can't second the post you made.
mercxda said:
Both compcache and swap are used to improve performance AND maximum number of open apps.
(...)
As told at the beginning, swap, both improve performance(=speed) AND number of apps simultaneously open.
Click to expand...
Click to collapse
zRAM does NOT improve the speed of your device. Everything that's in the reserved zram storage will get compressed and decompressed, which takes some time (and cpu).
Swap is performing even worse. Instead of the fast RAM or the semi-fast compressed zRAM usage it's swapping onto the slow SD.
Sure, you can increase the maximum number of open apps, but the price is a lower performance.
So you're probably just meaning multitasking performance.
But still I can't agree to your conclusion:
mercxda said:
So, my 2 cents about "increasing" RAM in LG O2X is :
-leave apps on phone memory, and put swap on a class10 sdcard.
-enable compcache only if you use lots of text-rich apps.
Click to expand...
Click to collapse
As I wrote above zRAM is way faster than swap. So zRAM should be the first choice if you're running into low RAM situations.
If you still need more go and enable swap as well.
Last but not least:
Why are you talking about compache all the time? It's called zram nowadays, so call it that way.
tonyp said:
First: I think this doesn't really fit into the development section.
Click to expand...
Click to collapse
First : thanks for your interest in this post . I partially agree with you: this post is on the borderline beetwen Q&A and Development, because swap is not a development matter, it's standard unix's way of working.
On the other side zram's use,way of working, and even its inclusion (or not) itself in default installs, is still under development.
https://lists.ubuntu.com/archives/ubuntu-devel-discuss/2012-December/014122.html
Sure, x86/x64 is not ARM. And CM is not ubuntu.
Then: I can't second the post you made.
zRAM does NOT improve the speed of your device. Everything that's in the reserved zram storage will get compressed and decompressed, which takes some time (and cpu).
Swap is performing even worse. Instead of the fast RAM or the semi-fast compressed zRAM usage it's swapping onto the slow SD.
Sure, you can increase the maximum number of open apps, but the price is a lower performance.
So you're probably just meaning multitasking performance.
Click to expand...
Click to collapse
I, again , partially agree, i was fundamentally talking about multitasking performance. And sure, zram takes cpu cycles... I reserved a full, standalone point to say that.
But
i wouldn't be so sure about one being better than the other. My arguments are in the original post.
As I wrote above zRAM is way faster than swap. So zRAM should be the first choice if you're running into low RAM situations.
If you still need more go and enable swap as well.
Click to expand...
Click to collapse
As I wrote, and argumented, before, compcache/zram is way faster in a way limited range of situations.
Last but not least:
Why are you talking about compache all the time? It's called zram nowadays, so call it that way.
Click to expand...
Click to collapse
Because
1) I'm an old cat.
2) "Compcache" is a well chosen autodescriptive term.
3) It's been "compcache" for over 4/5 of it's life, and, well...
4) I'm an old cat. ;D
Have fun, and thanks for all your work in O2x developing.