lsmod,/ proc / modules和slabinfo,/ proc / meminfo
不给我内核模块使用多少内存
不给我内核模块使用多少内存
有没有办法找到这个?
btw,我基本上写了一个小的测试程序,一个设备驱动程序需要ioctl调用来分配1MB,我每秒从我的应用程序发送这个ioctl消息,所以我的驱动器每秒做kmalloc. Iam不能看到“cat / proc / meminfo | grep Slab”的增加
– snip —
int device_ioctl( struct file *file,unsigned int ioctl_num,unsigned long ioctl_param) { /* * Switch according to the ioctl called */ printk ( "<l> inside ioctl %d IOCTL_ALLOC_MSG = %d\n",ioctl_num,IOCTL_ALLOC_MSG ); switch (ioctl_num) { case IOCTL_ALLOC_MSG: allocfunc(); // kmalloc 1MB // printk in this function is OK break; case IOCTL_DEALLOC_MSG: deallocfunc(); break; } return 0; }
应用/用户空间
while ( !stop ) { ret_val = ioctl(memfile,IOCTL_ALLOC_MSG); if (ret_val < 0) { printf("ioctl Failed. Return code: %d,meaning: %s\n",ret_val,strerror(errno)); return -1; } sleep ( 10 ); }
我没有看到slabinfo内存的增长.我知道linux做cache-> slabs-> pages->对象,但在用户界面中必须有一些方法来确定特定内核模块的内存大小.
谢谢,