ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>C++>getDiskIO



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

  1. getDiskIO
  2. DISK IO Á¤º¸¸¦ ¾ò¾î¿Â´Ù.
  3. yundream
  4. Version 0.2
  5. 2005/05/20


¼³¸í

  • ¸®´ª½ºÀÇ /proc ÆÄÀϽýºÅÛÀ» ºÐ¼®Çؼ­ DISK IO °ªÀ» ¾ò¾î¿Â´Ù.
  • DISK IO°ªÀ» ¾ò¾î¿À±â À§Çؼ­ partitions ÆÄÀÏÀ» ºÐ¼®ÇÑ´Ù.

»ç¿ë¹æ¹ý

vector<partition_info> getDiskIO(); 
 
  1. ¸®Åϰª : °¢ ÀåÄ¡ÀÇ IOÁ¤º¸ ¸®½ºÆ®¸¦ vector ÀڷᱸÁ¶¿¡ ´ã¾Æ¼­ µÇµ¹·ÁÁØ´Ù.

int main() 
{ 
  int i; 
  vector<partition_info> diskio; 
  cout << "Dev\t\tRio\t\tWio" << endl; 
  while(1) 
  { 
    diskio = getDiskIO(); 
    for (i = 0; i < diskio.size(); i++) 
    { 
      cout << diskio[i].name <<  "\t\t" << diskio[i].rio  
          << "\t\t" << diskio[i].wio << endl; 
    } 
    sleep(2); 
  } 
} 
 
 


ÄÚµå

typedef struct _partion_info 
{ 
  char major[16]; 
  char minor[16]; 
  char blocks[16]; 
  char name[24]; 
  char rio[16]; 
  char rmerge[16]; 
  char rsect[16]; 
  char ruse[16]; 
  char wio[16]; 
  char wmerge[16]; 
  char wsect[16]; 
  char wuse[16]; 
  char running[16]; 
  char use[16]; 
  char aveq[16]; 
} partition_info; 
 
#define partition_format "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s" 
 
vector<partition_info> getDiskIO() 
{ 
  FILE *fp; 
  char line[512]; 
  class Config *esmCfg; 
  int last_time = 0; 
  int n; 
  int first = 0; 
  partition_info lpartition_info; 
  vector<partition_info> vpartition_info; 
 
  if ((fp = fopen("/proc/partitions", "r")) == NULL) 
  { 
    perror("fopen error"); 
  } 
  char major[12]; 
 
  first = 0; 
 
  while(fgets(line, 511, fp) != NULL) 
  { 
    if (first == 0) 
    { 
      first ++; 
      continue; 
    } 
    n = sscanf(line, 
        partition_format, 
        lpartition_info.major, 
        lpartition_info.minor, 
        lpartition_info.blocks, 
        lpartition_info.name, 
        lpartition_info.rio, 
        lpartition_info.rmerge, 
        lpartition_info.rsect, 
        lpartition_info.ruse, 
        lpartition_info.wio, 
        lpartition_info.wmerge, 
        lpartition_info.wsect, 
        lpartition_info.wuse, 
        lpartition_info.running, 
        lpartition_info.use, 
        lpartition_info.aveq 
        ); 
    // Æ÷¸Ë¿¡ ¸ÂÁö ¾ÊÀ» °æ¿ì °Ç³Ê ¶Ú´Ù. 
    if(n < 10) 
    { 
      continue; 
    } 
 
    if(!isdigit(lpartition_info.name[strlen(lpartition_info.name) - 1 ])) 
    { 
      vpartition_info.push_back(lpartition_info); 
    } 
  } 
  fclose(fp); 
  return vpartition_info; 
} 
 

Åä·Ð

  1. ½ÇÁ¦·Î´Â byte/sec Á¤º¸¸¦ ¾ò¾î¾ß ÇÒ°ÍÀÌ´Ù. byte/sec Á¤º¸¸¦ ¾ò±â À§Çؼ­´Â ÀÌÀüÀÇ IO count°ªÀ» ÀúÀåÇϰí ÀÖ¾î¾ß ÇÑ´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.