======== CPU è´è½½ ======== Linuxéè¿``/proc/stat``å``/proc/uptime``导åºåç§ä¿¡æ¯ï¼ç¨æ·ç©ºé´å·¥å · å¦top(1)使ç¨è¿äºä¿¡æ¯è®¡ç®ç³»ç»è±è´¹å¨æ个ç¹å®ç¶æçå¹³åæ¶é´ã ä¾å¦ï¼ $ iostat Linux 2.6.18.3-exp (linmac) 02/20/2007 avg-cpu: %user %nice %system %iowait %steal %idle 10.01 0.00 2.92 5.44 0.00 81.63 ... è¿éç³»ç»è®¤ä¸ºå¨é»è®¤éæ ·å¨æå §æ10.01%çæ¶é´å·¥ä½å¨ç¨æ·ç©ºé´ï¼2.92%çæ¶ é´ç¨å¨ç³»ç»ç©ºé´ï¼æ»ä½ä¸æ81.63%çæ¶é´æ¯ç©ºé²çã 大å¤æ°æ åµä¸``/proc/stat``çä¿¡æ¯å ä¹çå®åæ äºç³»ç»ä¿¡æ¯ï¼ç¶èï¼ç±äºå æ ¸ééè¿äºæ°æ®çæ¹å¼/æ¶é´çç¹ç¹ï¼ææ¶è¿äºä¿¡æ¯æ ¹æ¬ä¸å¯é ã é£ä¹è¿äºä¿¡æ¯æ¯å¦ä½è¢«æéçå¢ï¼æ¯å½æ¶é´ä¸æ触åæ¶ï¼å æ ¸æ¥çæ¤å»è¿è¡ç è¿ç¨ç±»åï¼å¹¶å¢å ä¸æ¤ç±»å/ç¶æè¿ç¨å¯¹åºç计æ°å¨çå¼ãè¿ç§æ¹æ³çé®é¢æ¯ å¨ä¸¤æ¬¡æ¶é´ä¸æä¹é´ç³»ç»ï¼è¿ç¨ï¼è½å¤å¨å¤ç§ç¶æä¹é´åæ¢å¤æ¬¡ï¼è计æ°å¨åª å¢å æåä¸ç§ç¶æä¸ç计æ°ã ä¸¾ä¾ --- å设系ç»æä¸ä¸ªè¿ç¨ä»¥å¦ä¸æ¹å¼å¨ææ§å°å ç¨cpu:: 两个æ¶éä¸æä¹é´çæ¶é´çº¿ |-----------------------| ^ ^ |_ å¼å§è¿è¡ | |_ å¼å§ç¡ç ï¼å¾å¿«ä¼è¢«å¤éï¼ å¨ä¸é¢çæ åµä¸ï¼æ ¹æ®``/proc/stat``çä¿¡æ¯ï¼ç±äºå½ç³»ç»å¤äºç©ºé²ç¶ææ¶ï¼ æ¶é´ä¸æç»å¸¸ä¼åçï¼ç³»ç»çè´è½½å°ä¼æ¯0 大家è½å¤æ³è±¡å æ ¸çè¿ç§è¡ä¸ºä¼åçå¨è®¸å¤æ åµä¸ï¼è¿å°å¯¼è´``/proc/stat`` ä¸åå¨ç¸å½å¤æªçä¿¡æ¯:: /* gcc -o hog smallhog.c */ #include <time.h> #include <limits.h> #include <signal.h> #include <sys/time.h> #define HIST 10 static volatile sig_atomic_t stop; static void sighandler (int signr) { (void) signr; stop = 1; } static unsigned long hog (unsigned long niters) { stop = 0; while (!stop && --niters); return niters; } int main (void) { int i; struct itimerval it = { .it_interval = { .tv_sec = 0, .tv_usec = 1 }, .it_value = { .tv_sec = 0, .tv_usec = 1 } }; sigset_t set; unsigned long v[HIST]; double tmp = 0.0; unsigned long n; signal (SIGALRM, &sighandler); setitimer (ITIMER_REAL, &it, NULL); hog (ULONG_MAX); for (i = 0; i < HIST; ++i) v[i] = ULONG_MAX - hog (ULONG_MAX); for (i = 0; i < HIST; ++i) tmp += v[i]; tmp /= HIST; n = tmp - (tmp / 3.0); sigemptyset (&set); sigaddset (&set, SIGALRM); for (;;) { hog (n); sigwait (&set, &i); } return 0; } åè --- - http://lkml.org/lkml/2007/2/12/6 - Documentation/filesystems/proc.rst (1.8) 谢谢 --- Con Kolivas, Pavel Machek