Re: memory consumed by kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 27, 2010 at 4:47 PM, luca ellero <lroluk@xxxxxxxxx> wrote:
> Il 27/09/2010 7.55, Arun KS ha scritto:
>>
>> On Fri, Sep 24, 2010 at 12:19 AM, luca ellero<lroluk@xxxxxxxxx>  wrote:
>>>
>>> Il 23/09/2010 15.49, Mulyadi Santosa ha scritto:
>>>>
>>>> Hi...
>>>>
>>>> On Thu, Sep 23, 2010 at 16:13, Tayade, Nilesh
>>>> <Nilesh.Tayade@xxxxxxxxxxxx>    wrote:
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: kernelnewbies-bounce@xxxxxxxxxxxx [mailto:kernelnewbies-
>>>>>> bounce@xxxxxxxxxxxx] On Behalf Of Arun KS
>>>>>> Sent: Thursday, September 23, 2010 11:30 AM
>>>>>> To: kernelnewbies@xxxxxxxxxxxx
>>>>>> Subject: memory consumed by kernel
>>>>>>
>>>>>> Hello There,
>>>>>>
>>>>>> cat /proc/meminfo will show the memory statistics of the entire
>>>>>> system.
>>>>>>
>>>>>> Is there a way to see the memory consumed by the kernel alone?
>>>>>
>>>>> I do not have thorough idea. But it seems there is no ready-made tool
>>>>> (userspace/kernelspace) to know the complete kernel memory.
>>>>> To debug certain memory related issues - we can refer the
>>>>> /proc/kallsyms
>>>>> (exact place where each symbol is loaded in memory) and /proc/slabinfo
>>>>> -
>>>>> the slab allocation for different objects. But considering the total
>>>>> kernel memory it also includes many other allocations which we do not
>>>>> do
>>>>> explicitly - like Page tables, or some kind of metadata.
>>>>
>>>> You need to define the limitation of "consumed by the kernel alone".
>>>> is it consumed by kernel but later might be used by user space?
>>>>
>>>> In my opinion, you can do it the other way around: sum up all user
>>>> mode pages. pay attention with shared memory between threads (this is
>>>> the greatest hurdle...so far I know none of tools that succesfully
>>>> count them without the help of proper kernel patch..which is likely,
>>>> outside mainline kernel tree). Consider it N. Then if you substract
>>>> Total RAM with N, you get kernel memory consumption
>>>>
>>>>
>>>
>>> Hi,
>>> you can compile and load this module and look in /var/log/messages. Every
>>>  "reserved" range above 1MB is likely to be kernel memory. Generally.
>>> under
>>> 1MB reserved areas belong to BIOS. That is for x86, and recent kernels.
>>> For
>>> other architectures is more or less the same, ...apart from BIOS :-P
>>>
>>> You can also grep for "Memory" in dmesg to have the whole picture:
>>>
>>> Memory: 1024696k/1040320k available (3388k kernel code, 15172k reserved,
>>> 1570k data, 384k init, 131016k highmem)
>>>
>>> regards
>>> Luca
>>>
>>>
>>> #include<linux/module.h>
>>> #include<linux/moduleparam.h>
>>> #include<linux/init.h>
>>>
>>> #include<linux/kernel.h>
>>> #include<linux/slab.h>
>>> #include<linux/fs.h>
>>> #include<linux/errno.h>
>>> #include<linux/types.h>
>>> #include<linux/mm.h>
>>> #include<linux/kdev_t.h>
>>> #include<asm/page.h>
>>> #include<linux/cdev.h>
>>> #include<linux/device.h>
>>>
>>> static int simple_init(void)
>>> {
>>>        int i = 0;
>>>        int temp = 0;
>>>        int reserved;
>>>        struct page * pp;
>>>
>>>        while (pfn_valid(i)) {
>>>
>>>                pp = pfn_to_page(i);
>>>
>>>                reserved = PageReserved(pp);
>>>
>>>                if ( ( temp !=  reserved )  || ( i == 0 ) )
>>>                        printk("%08x reserved: %s\n", i<<  PAGE_SHIFT,
>>> reserved? "yes": "no");
>>>
>>>                temp = reserved;
>>>                ++i;
>>>        }
>>>
>>>        return 0;
>>> }
>>>
>>> static void simple_cleanup(void)
>>> {
>>> }
>>>
>>> module_init(simple_init);
>>> module_exit(simple_cleanup);
>>
>> Thanks for code. But on my architecture  pfn_valid() is returning
>> false in first instance itself.
>> I am running on arm11 and 2.6.29 kernel.
>>
>> Arun
>
>
> IIRC ARM architecture doesn't map RAM at physical address 0 (like x86 does).
> It maps it at address 0x80000000, 0xC0000000 or some other address, leaving
> 0 for flash, ROM or something else. It depends on arch.
> So maybe the problem here is that the cycle have to start from a well
> defined page frame number and not at 0. The code has to be modified at some
> points.
> Take this like a hint, at the moment I have no ARM boards at hand so I can't
> help you further.

Thank you very much.

> Regards
> Luca
>

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux