> Ideally, fixing the free-page pool fragmentation would be the ideal
> solution. To do this cleanly, the whole Memory Management sub-system
> needs to be written so that all references to an allocated page can be
> found quickly - this involves PTE chains, which are fat and heavy.
sounds like quite some work...
{ great explanation on the VM system deleted }
>
> In summary, change SLAB_BREAK_GFP_ORDER to 1.
Okay, did that, and tried to get it locked like was reproducable with the
SLAB_BREAK_GFP_ORDER set to 2 (default). My old recipy for making the
machine lockup didn't work, the machine kept running. So I pushed harder
(more apps running, keeping more pages in-use), until it locked up ;-(
Then I changed the SLAB_BREAK_GFP_ORDER to 0, and tried again. As expected
my machine was more 'prone' to this torturing :-) I was not able to get it
into the lockup situatuation, but saw a weird phenomena:
quoting from syslog....
Nov 11 20:52:53 obelix kernel: kmalloc fails in alloc_skb() in skbuf.c;
size=65620, priority=0
>>>> here is a debug message, captured by syslog (all the others vanished..)
A kmalloc of size 65620 bytes fails.
>>>> at that time (same second, but in one second a lot can happen to the
machine. Perhaps should make a call to show_mem() when this condition
arrises)
Nov 11 20:55:22 obelix kernel: SysRq: Show Memory
Nov 11 20:55:22 obelix kernel: Mem-info:
Nov 11 20:55:22 obelix kernel: Free pages: 260kB
Nov 11 20:55:22 obelix kernel: ( 1*4kB 2*8kB 1*16kB 1*32kB 1*64kB 1*128kB = 260kB)
>>>> 128kB block free ?
Nov 11 20:55:22 obelix kernel: Swap cache: add 3613/3613, delete 2440212/2491, find 11677/1030
Nov 11 20:55:22 obelix kernel: Free swap: 83572kB
Nov 11 20:55:22 obelix kernel: 8192 pages of RAM
Nov 11 20:55:22 obelix kernel: 221 free pages
Nov 11 20:55:22 obelix kernel: 458 reserved pages
Nov 11 20:55:22 obelix kernel: 1454 pages shared
Nov 11 20:55:22 obelix kernel: Buffer memory: 120kB
Nov 11 20:55:22 obelix kernel: Buffer heads: 156
Nov 11 20:55:22 obelix kernel: Buffer blocks: 120
Nov 11 20:55:22 obelix kernel: CLEAN: 35 buffers, 31 used (last=35), 1 locked, 0 protected, 0 dirty
Nov 11 20:55:22 obelix kernel: LOCKED: 48 buffers, 31 used (last=31), 0 locked, 0 protected, 0 dirty
Nov 11 20:55:22 obelix kernel: DIRTY: 36 buffers, 3 used (last=4), 0 locked, 0 protected, 36 dirty
Nov 11 20:55:22 obelix kernel: Networking buffers in use : 613
Nov 11 20:55:22 obelix kernel: Total network buffer allocations : 567859
Nov 11 20:55:22 obelix kernel: Total failed network buffer allocs : 638 <<<--- here they are !!!
Nov 11 20:55:22 obelix kernel: IP fragment buffer size : 0
Nov
never got these 4kB alloc failures :-)
Regards,
Frank.
========================---------------->
#define NAME "Frank van de Pol"
#define ADDRESS "mgr. Nelislaan 10"
#define CITY "4741 AB Hoeven"
#define COUNTRY "The Netherlands"
#define EMAIL "F.K.W.van.de.Pol@inter.NL.net
Linux - Why use Windows, since there is a door?