- यह
lseek(fd,0)
प्रयोग सुरक्षित है और इसके बजाय यह फिर से खोलने के लिए इस फ़ाइल अगली बार के अद्यतन सामग्री प्राप्त करने के लिए की फ़ाइल तोread(fd,buf)
/proc/stat
के लिए? - और
mmap()
इस फ़ाइल को खोलने के बाद कॉल वास्तव में क्या करता है (नीचे देखें)?
मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि शीर्ष रिपोर्ट बहुत कम CPU उपयोग (सॉफ़्टवेयर इंटरप्ट्स के लिए 10% बनाम 100%) है। स्ट्रेस इंगित करता है कि शीर्ष इस फ़ाइल को दोबारा नहीं खोलता है बल्कि इसके बजाय शुरू करने और इसे एक बार फिर से पढ़ता है। और किसी भी तरह से इस फ़ाइल से अगली बार जो सामग्री पढ़ी जाती है, उससे मेल नहीं खाती है जब मैं /proc/stat
फ़ाइल के लिए बिल्ली चलाता हूं।इसे सुरक्षित lseek उपयोग करने के लिए है() जब प्रोक-एफएस से पढ़ने दूसरी बार फ़ाइलें
इसके अलावा अगर मैं एक ही समय तो कम से एक पाश में ऊपर और बिल्ली /proc/stat
चलाने शीर्ष सही सीपीयू उपयोग रिपोर्ट करने के लिए शुरू होता है। जबकि cat
कि ऐसा नहीं करता है
एक और अंतर मैं जगह है, जिसमें शीर्ष दाईं ओर /proc/stat
फ़ाइल खोलने के बाद mmap()
कॉल का उपयोग करता है। मुझे यकीन है कि अगर यह भी (यहाँ क्योंकि filesdes=-1
) मेरी समस्या के साथ संबंधित हो सकता है नहीं कर रहा हूँ:
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7b37649000
मैं 2.6.32-27-सर्वर छवि के साथ Ubuntu 10.04.1 डेस्कटॉप संस्करण का उपयोग कर रहा हूँ। सीपीयू इंटेल Q6600 है।
यह lseek के बारे में सच है। ऐसा लगता है कि इसे पढ़ने से पहले प्रत्येक बार फिर से/proc/stat फ़ाइल को फिर से खोलने के लिए htop लागू किया गया है, लेकिन इस बीच htop भी अमान्य cpu-use की रिपोर्ट करता है। तो हम शायद lseek() बाहर शासन कर सकते हैं। –