はlsmod、/ procの/モジュールとslabinfoはこれら、/ procの/ meminfoの は私のカーネルモジュールが私のカーネルモジュールはどのくらいのメモリを使用していますか?
を使用しているどのくらいのメモリ与えるものではありません、これを見つける方法はありますか?
btw、基本的に小さなテストプログラムを作成しました。デバイスドライバは1MBのioctl呼び出しを行い、アプリケーションから毎秒このioctlメッセージを送信して、毎秒kmallocを実行します。増加を参照することはできませんIAM "猫の/ proc/meminfoのを| grepをスラブ"
- 中略---
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->オブジェクトを持っていることを知っていますが、特定のカーネルモジュールのメモリサイズを決めるにはユーザランドに何らかの方法が必要です。
おかげで、