Memory Usage of Kernel Driver Module in Linux
A nice tool memstrack .
kthread.c ( example for memory allocation of 50mb)
#include
#include
#include
#include
#include
#include
static int thread_init(void){
char *buffer;
int i =0;
for(i=0;i<50 br="" i=""> {
buffer = (char *)kmalloc(1000*1000, GFP_KERNEL);
}
if(buffer == NULL)
printk(KERN_ERR "low memory...");
else
printk(KERN_ERR "Allocation succedded...\n");
return 0;
}
void thread_exit(void){
printk(KERN_INFO "done.");
}
======== Report format module_summary: ========
Module kthread using 50.0MB (12800 pages), peak allocation 50.0MB (12800 pages)
Module xfs using 0.1MB (31 pages), peak allocation 0.1MB (31 pages)
Module tg3 using 0.1MB (16 pages), peak allocation 0.1MB (16 pages)
Module sr_mod using 0.0MB (1 pages), peak allocation 0.0MB (1 pages)
Module cdrom using 0.0MB (0 pages), peak allocation 0.0MB (0 pages)
======== Report format module_summary END ========
50>
#include
#include
#include
#include
#include
static int thread_init(void){
char *buffer;
int i =0;
for(i=0;i<50 br="" i=""> {
buffer = (char *)kmalloc(1000*1000, GFP_KERNEL);
}
if(buffer == NULL)
printk(KERN_ERR "low memory...");
else
printk(KERN_ERR "Allocation succedded...\n");
return 0;
}
void thread_exit(void){
printk(KERN_INFO "done.");
}
2. run
./memstrack --report module_summary,proc_slab_ static --notui -o mem.txt
3. cat mem.txt
======== Report format module_summary: ========
Module kthread using 50.0MB (12800 pages), peak allocation 50.0MB (12800 pages)
Module xfs using 0.1MB (31 pages), peak allocation 0.1MB (31 pages)
Module tg3 using 0.1MB (16 pages), peak allocation 0.1MB (16 pages)
Module sr_mod using 0.0MB (1 pages), peak allocation 0.0MB (1 pages)
Module cdrom using 0.0MB (0 pages), peak allocation 0.0MB (0 pages)
======== Report format module_summary END ========
you can cleary see 50mb tracked by the tool.