2013-03-07 6 views
10

lsmod/proc/मॉड्यूल और slabinfo,/proc/meminfo नहीं देता कितनी स्मृति मेरी कर्नेल मॉड्यूलमेरा कर्नेल मॉड्यूल कितना मेमोरी उपयोग कर रहा है?

इस पता लगाने के लिए एक तरीका है उपयोग कर रहा है?

बीटीडब्ल्यू, मैंने मूल रूप से एक छोटा परीक्षण कार्यक्रम लिखा, एक डिवाइस चालक जो 1 एमबी आवंटित करने के लिए ioctl कॉल लेता है और मैं अपने आवेदन से प्रति सेकंड इस ioctl संदेश भेजता हूं, इसलिए मेरा ड्राइव हर सेकेंड किमीलोक करता है। --- कटाव

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

     } 

मैं -

| iam में "grep स्लैब बिल्ली/proc/meminfo" वृद्धि देखने में सक्षम नहीं slabinfo में स्मृति की वृद्धि को न देखें। मैं जानता हूँ कि linux cache-> slabs-> पृष्ठों> वस्तुओं करता है लेकिन उपयोगकर्ता देश में किसी तरह एक विशेष कर्नेल मॉड्यूल की स्मृति आकार निर्धारित करने होनी चाहिए।

धन्यवाद,

उत्तर

0

मान लिया जाये कि वहाँ सीधे यह करने के लिए एक तरीका नहीं है (जो वहाँ हो सकता है, सब मुझे पता है के लिए) ....

आप LTTng का उपयोग अपने कर्नेल घटनाओं का पता लगाने में कर सकते हैं। यदि वहां पहले से कोई आसान घटना नहीं है, तो आपको हर बार जब आपका मॉड्यूल स्मृति आवंटित करता है तो आपको एक नया निशान बनाना चाहिए।

फिर आप का पता लगाने का विश्लेषण और कैसे अपनी स्मृति उपयोग बढ़ता है और समय के साथ सिकुड़ता का ग्राफ आकर्षित कर सकते हैं।

3

मुझे यकीन है कि अगर यह आप के लिए ठीक हो जाएगा नहीं कर रहा हूँ, लेकिन आप स्मृति की मात्रा है कि एक मॉड्यूल के साथ 'cat/proc/मॉड्यूल' ले लिया है प्राप्त कर सकते हैं, दूसरे स्तंभ बाइट में आकार कि मॉड्यूल है पहले कॉलम में उपयोग कर रहा है।

नमूना उत्पादन दिखा कितनी स्मृति का उपयोग कर DRM मॉड्यूल हैं:

cat/proc/मॉड्यूल | ग्रेप^DRM | awk '{$ 1 "" $ 2 प्रिंट}'

drm_kms_helper 49,394 DRM 286,028

आशा है कि मदद करता है।

संबंधित मुद्दे