का उपयोग कर लिनक्स में सीपीयू उपयोग की सटीक गणना करना/proc/stat में आंकड़ों का उपयोग करके सीपीयू उपयोग को कैसे प्राप्त करें इस पर कई पोस्ट और संदर्भ हैं। हालांकि, उनमें से अधिकतर लिनक्स 2.6 (iowait, irq, softirq) में मौजूद शेष जिफी सीपीयू गणनाओं को अनदेखा करते हुए, 7+ CPU आंकड़ों (उपयोगकर्ता, अच्छा, सिस्टम और निष्क्रिय) में से केवल चार का उपयोग करते हैं।/proc/stat
उदाहरण के तौर पर, Determining CPU utilization देखें।
मेरा प्रश्न यह है: क्या iowait/irq/softirq संख्याओं को पहले चार नंबरों (उपयोगकर्ता/अच्छा/सिस्टम/निष्क्रिय) में से एक में भी गिना जाता है? दूसरे शब्दों में, क्या कुल जिफी गणना पहले चार आंकड़ों के बराबर होती है? या, कुल 7 आंकड़ों के योग के बराबर कुल जिफी गणना है? यदि बाद में सच है, तो एक CPU उपयोग सूत्र संख्या के सभी को ध्यान में इस तरह लेना चाहिए,:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long double a[7],b[7],loadavg;
FILE *fp;
for(;;)
{
fp = fopen("/proc/stat","r");
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
fclose(fp);
sleep(1);
fp = fopen("/proc/stat","r");
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&b[0],&b[1],&b[2],&b[3],&b[4],&b[5],&b[6]);
fclose(fp);
loadavg = ((b[0]+b[1]+b[2]+b[4]+b[5]+b[6]) - (a[0]+a[1]+a[2]+a[4]+a[5]+a[6]))
/((b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+b[6]) - (a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]));
printf("The current CPU utilization is : %Lf\n",loadavg);
}
return(0);
}
मैं इस प्रश्न के बारे में भी उत्सुक हूं। क्या आपको किसी अन्य स्रोत से उत्तर मिला? – justinzane
यह भी देखें [यह उत्तर] (http://stackoverflow.com/a/23376195/85696)। – danadam