2012-05-27 10 views
6

सी में, लिनक्स 3.2: क्या कुछ प्रोग्राम पर प्रत्येक pthread निर्मित धागे की स्थिति पर प्रोग्रामेटिक रूप से आंकड़े एकत्र करने का कोई तरीका है? उदाहरण के लिए, मैं प्रत्येक थ्रेड को चलाने में और निष्क्रिय स्थिति में समय प्राप्त करना चाहता हूं।pthreads: विभिन्न राज्यों पर खर्च किए गए समय पर प्रोग्रामेटिक रूप से जानकारी एकत्रित करें?

उत्तर

1

clock_gettime() थ्रेड-विशिष्ट CPU समय लौटा सकता है। बस करें:

struct timespec ts; 
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts); 

लेकिन मेरी समझ से यह इस धागे के उपयोगकर्ता और सिस्टम समय का योग है। इसके अलावा आपको मैन पेज के अंत में एसएमपी सिस्टम के बारे में चेतावनी संदेश पर विचार करना चाहिए।

इसके अलावा

, आप वर्तमान धागे पर समय जानकारी नहीं करना चाहती है, लेकिन कुछ pthread पर, आप clockid_tclock_gettime()int pthread_getcpuclockid(pthread_t thread, clockid_t *clock_id) उपयोग करने के साथ उपयोग करने के लिए मिल सकता है।

1

getrusage()

संपादित करें: निष्क्रिय समय पाने के लिए, मैं कुल समय धागा सक्रिय था से सिस्टम और उपयोगकर्ता समय घटाना होगा।

अन्य टूल्स जिन्हें आप जांच के लिए उपयोग कर सकते हैं उनमें शामिल हैं: सिस्टम टैप, स्विट्रेस, टप्रोफ, ऑप्रोफाइल, परफ, सिसप्रोफ, पीटी आदि,

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

  • कोई संबंधित समस्या नहीं^_^