2013-03-07 13 views
10

lsmod,/proc/modules und slabinfo,/proc/meminfo nicht geben, wie viel Speicher ist mein Kernel-ModulWie viel Speicher verwendet mein Kernelmodul?

verwendet, ist es eine Möglichkeit, dies herauszufinden?

btw, Ich schrieb ein kleines Testprogramm im Grunde, ein Gerätetreiber, der ioctl Aufruf zu 1MB zuzuweisen und ich sende diese ioctl Nachricht jede Sekunde von meiner Anwendung, so dass mein Laufwerk kmalloc jede Sekunde. Iam nicht in der Lage, die Erhöhung der "cat/proc/meminfo | grep Slab" zu sehen

- schnipp ---

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; 
} 

Anwendung/Benutzerraum

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); 

     } 

I nicht das Wachstum der Erinnerung in Slabinfo sehen. Ich weiß, dass Linux Cache-> Brammen-> Seiten-> Objekte tut, aber es muss einen Weg geben, um die Speichergröße eines bestimmten Kernel-Moduls zu bestimmen.

Danke,

Antwort

0

Unter der Annahme, es keine Möglichkeit, dies direkt zu tun (was es auch sein mag, für alles, was ich weiß) ....

könnten Sie LTTng verwenden Ihre Kernel Ereignisse zu verfolgen. Wenn dort noch kein praktisches Ereignis vorhanden ist, sollten Sie jedes Mal, wenn Ihr Modul Speicher reserviert, eine neue Ablaufverfolgung erstellen.

Sie können dann die Ablaufverfolgung analysieren und ein Diagramm zeichnen, wie Ihre Speicherbelegung im Laufe der Zeit zunimmt und abnimmt.

3

Ich bin nicht sicher, ob es für Sie in Ordnung ist, aber Sie können die Menge an Speicher, die ein Modul mit 'cat/proc/modules' genommen hat, die zweite Spalte ist die Größe in Bytes, die das Modul in der ersten Spalte wird verwendet.

Beispielausgabe zeigt, wie viel Speicher sind mit drm Module:

cat/proc/modules | grep^drm | awk '{$ 1 "" 2 $ drucken}'

drm_kms_helper 49394 drm 286.028

Hoffe, dass hilft.

Verwandte Themen