Re: Memory Management

From: Márcio Oliveira
Date: Sun Jul 24 2005 - 20:47:01 EST


Neil Horman wrote:

On Sat, Jul 23, 2005 at 08:16:20PM -0300, Márcio Oliveira wrote:


Neil,



The best way I can think to do that is take a look at /proc/slabinfo. That will
likely give you a pointer to which area of code is eating up your memory.




OK. I will monitor the /proc/slabinfo file.



Based on the sysrq-m info you posted it looks like due to fragmentation the
largest chunk of memory you can allocate is 2MB (perhaps less depending on
address space availability). If you can build a test kernel to do a show_state
rather than a show_mem at the beginning of oom_kil, then you should be able to
tell who is trying to do an allocation that leads to kswapd calling
out_of_memory.




Neil, I'm trying to recompile the kernel source 2.4.21-32.0.1 and get some error messages:

In file included from /usr/src/linux-2.4.21-32.0.1.EL/include/linux/prefetch.h:13,
from /usr/src/linux-2.4.21-32.0.1.EL/include/linux/list.h:6,
from /usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:12,
from 3w-xxxx.c:172:
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:61: warning: parameter names (without types) in function declaration
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:61: field `loops_per_jiffy_R_ver_str' declared as a function
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:84: invalid suffix on integer constant
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:84: syntax error before numeric constant
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:84: warning: function declaration isn't a prototype
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:269: invalid suffix on integer constant
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:269: syntax error before numeric constant
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:269: warning: function declaration isn't a prototype
/usr/src/linux-2.4.21-32.0.1.EL/include/asm/processor.h:273: warning: parameter names (without types) in function declaration
In file included from 3w-xxxx.c:172:
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:190: invalid suffix on integer constant
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:190: syntax error before numeric constant
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:190: `inter_module_register_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:190: warning: function declaration isn't a prototype
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:191: invalid suffix on integer constant
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:191: syntax error before numeric constant
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:191: `inter_module_unregister_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:191: warning: function declaration isn't a prototype
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:192: `inter_module_get_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:192: warning: parameter names (without types) in function declaration
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:193: `inter_module_get_request_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:193: warning: parameter names (without types) in function declaration
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:194: invalid suffix on integer constant
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:194: syntax error before numeric constant
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:194: `inter_module_put_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:194: warning: function declaration isn't a prototype
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:203: `try_inc_mod_count_R_ver_str' declared as function returning a function
/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h:203: warning: parameter names (without types) in function declaration
make[3]: *** [3w-xxxx_10200033.o] Error 1
make[3]: Leaving directory `/usr/src/linux-2.4.21-32.0.1.EL/drivers/addon/3w-xxxx_10200033'
make[2]: *** [_modsubdir_3w-xxxx_10200033] Error 2
make[2]: Leaving directory `/usr/src/linux-2.4.21-32.0.1.EL/drivers/addon'
make[1]: *** [_modsubdir_addon] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.21-32.0.1.EL/drivers'
make: *** [_mod_drivers] Error 2

Is there any relationship between the sysrq-m changes to do show_state() rather than a show_mem() and the compiling erros?

/usr/src/linux-2.4.21-32.0.1.EL/include/linux/prefetch.h, line 13:
#include <asm/processor.h>

/usr/src/linux-2.4.21-32.0.1.EL/include/linux/list.h ,line 6:
#include <linux/prefetch.h>

/usr/src/linux-2.4.21-32.0.1.EL/include/linux/module.h, line 12:
#include <linux/list.h>

3w-xxxx.c, line 172:
#include <linux/module.h>

Any ideia about the kernel compiling erros?

(If I try to recompile a kernel.org kernel, it is compiled fine).

Thanks again.

Márcio.



I honestly don't know. I expect you haven't patched something correctly, have
you built the source tree with rpmbuild, or are you just extracting the tar file
from the rpm?
Neil



I'm using the kernel-source package and trying to compiling the source (in /usr/src/linux-2.4 directory) with "make config", "make dep", "make clean", "make bzImage", "make modules" and "make modules_install". I also try to compile a RHEL3 kernel-source without the sysrq-m changes on other RHEL3 systems and get the same errors...

If I try to compile a kernel source provide by kernel.org, I don't get the errors above, and the kernel compile works. When I try to compile the RHEL3 kernel-source, the "make config", "make dep", "make clean" and "make bzImage" commands works fine but when I run "make modules" command I get the errors above. I think that is some issue with the RHEL3 kernel-source package because other kernel sources (not Red Hat kernel) compile without problems.

I will try to compile the kernel using rpmbuild and check the results, plus the slabinfo informations.

Thanks again,

Márcio.
-
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/