lsmod 、 /proc/modules および slabinfo 、 /proc/meminfo では、カーネル モジュールが使用しているメモリ量がわかりません
これを見つける方法はありますか?
ところで、私は基本的に小さなテスト プログラムを作成しました。これは、ioctl 呼び出しを使用して 1MB を割り当てるデバイス ドライバーであり、この ioctl メッセージをアプリケーションから毎秒送信して、ドライブが毎秒 kmalloc を実行するようにします。「cat /proc/meminfo | grep Slab」の増加を確認できません
- をちょきちょきと切る - -
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->objects を実行することは知っていますが、特定のカーネル モジュールのメモリ サイズを決定するには、ユーザー ランドに何らかの方法が必要です。
ありがとう、