Guest User

Untitled

a guest
May 28th, 2012
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. void load(int *load0, int *load1){
  6.  
  7. FILE *stat;
  8.  
  9. //0 user,1 nice,2 system,3 idle,4 prev idle,5 total,6 prev total,7 prev total - total
  10. int core0[8]={0,0,0,0,0,0,0};
  11. int core1[8]={0,0,0,0,0,0,0};
  12.  
  13. char dump[10];
  14. char buffer[100];
  15.  
  16. stat = fopen("/proc/stat", "r");
  17. fgets(buffer, 100, stat);//discard first line
  18. fgets(buffer, 100, stat);
  19. sscanf(buffer, "%s %d %d %d %d", dump, &core0[0], &core0[1], &core0[2], &core0[4]);
  20. fgets(buffer, 100, stat);
  21. sscanf(buffer, "%s %d %d %d %d", dump, &core1[0], &core1[1], &core1[2], &core1[4]);
  22. fclose(stat);
  23.  
  24. //calculate prev total
  25. core0[6]=core0[0]+core0[1]+core0[2]+core0[4];
  26. core1[6]=core1[0]+core1[1]+core1[2]+core1[4];
  27.  
  28.  
  29. //sleep 500ms
  30. usleep(500000);
  31.  
  32. stat = fopen("/proc/stat", "r");
  33. fgets(buffer, 100, stat);//discard first line
  34. fgets(buffer, 100, stat);
  35. sscanf(buffer, "%s %d %d %d %d", dump, &core0[0], &core0[1], &core0[2], &core0[3]);
  36. fgets(buffer, 100, stat);
  37. sscanf(buffer, "%s %d %d %d %d", dump, &core1[0], &core1[1], &core1[2], &core1[3]);
  38. fclose(stat);
  39.  
  40. //calculate total
  41. core0[5]=core0[0]+core0[1]+core0[2]+core0[3];
  42. core1[5]=core1[0]+core1[1]+core1[2]+core1[3];
  43.  
  44.  
  45. //calculate prev total - total
  46. core0[7]=core0[6]-core0[5];
  47. core1[7]=core1[6]-core1[5];
  48.  
  49.  
  50. //100*((prev total - total)-(prev idle - idle))/(prev total - total)
  51. *load0=100*(core0[7]-(core0[4]-core0[3]))/(core0[7]==0?1:core0[7]);
  52. *load1=100*(core1[7]-(core1[4]-core1[3]))/(core1[7]==0?1:core1[7]);
  53. }
  54.  
  55.  
  56. int main(void) {
  57.  
  58.  
  59. int load0,load1;
  60.  
  61. while (1) {
  62.  
  63. load(&load0, &load1);
  64. printf("CPU0 =%i\%\tCPU1 =%i\%\n",load0,load1);
  65. }
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment