VM: page reclaim does not work on ARM9?

From: Wappler Marcel
Date: Thu Aug 28 2008 - 03:52:48 EST


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 2.6.24.7, ARM9, swapping disabled).

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 the app.

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 enabled.

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...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/