我的内核模块使用多少内存?

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->对象,但在用户界面中必须有一些方法来确定特定内核模块的内存大小.

谢谢,

解决方法

我不确定它是否适合您,但您可以使用’cat / proc / modules’获取模块所占用的内存量,第二列是第一列中模块的大小(以字节为单位)正在使用.

示例输出显示drm模块使用多少内存:

cat / proc / modules | grep ^ drm | awk'{print $1“”$2}“

drm_kms_helper 49394
drm 286028

希望有帮助.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...