I do need some help to understand what's going on in the VM
of the Linux kernel...
I wrote a little script which generates a C app with
millions of lines of dumb linear running code and a endless
loop at the end. I run this app on both PC Linux (swapping
enabled) and embedded Linux (Kernel 184.108.40.206, ARM9, swapping
The app shall consume a lot of code pages which are used
only once (to run the linear code in it) and then stay in
the endless loop and never touch all the other pages in
memory. Then I consume all of the remaining memory of the
system through generating a big file on the tmpfs (whose
data resides in memory) with the help of /dev/zero and "dd".
My expectation was: the VM shall steal (reclaim) all the
only once touched pages containing those dumb linear code of
My observation is: "top" shows that the app is consuming
constantly the same huge amount of residential memory during
the decreasing free memory space. At some moment the kernel
starts a OOM killer on the app instead of reclaiming its
unused code pages.
Keep in mind: the behaviour is the same on both PC Linux (2
GB RAM) and ARM Linux (32MB RAM ) with and without swapping
So for me it looks like that any page which is containing
code never gets reclaimed from the application it belongs to
regardless of its usage.
Any idias, whats going on?
best regards, Marcel
PS: Please CC me on reply...