¹öÆÛ»çÀÌÁî°¡ Àбâ/¾²±â ¼º´É¿¡ ¹ÌÄ¡´Â ¿µÇâ
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



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

¼Ò°³

ÆÄÀÏÀ» ÀÐ°í ¾µ¶§, Çѹø¿¡ ÀоîµéÀÌ´Â µ¥ÀÌÅÍÀÇ Å©±â¿¡ µû¶ó Àбâ/¾²±â ¼º´ÉÀÌ ´Þ¶óÁø´Ù´Â °ÍÀº »ó½Ä¼±¿¡¼­ ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ´ë·« ¾Ë°í ÀÖ´Â ¹Ù·Î´Â 1024 ¹ÙÀÌÆ® ´ÜÀ§·Î Àоî¿Ã ¶§ °¡Àå È¿°úÀûÀÎ °ÍÀ¸·Î ¾Ë°í ÀÖ´Ù. ½ÇÁ¦, ÀÌ·¯ÇÑ ¿ì¸®ÀÇ »ó½ÄÀÌ ¿Ã¹Ù¸¥Áö¸¦ È®ÀÎÇϱâ À§Çؼ­ ¹öÆÛ Å©±â¿¡ µû¸¥ Àбâ/¾²±â ¼º´É¿¡ ´ëÇÑ ÀڷḦ ¸¸µé¾îº¸±â·Î Çß´Ù.

´ÙÀ½Àº Å×½ºÆ®¸¦ À§Çؼ­ ¸¸µç °£´ÜÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. 32 ºÎÅÍ 4096 ±îÁö ¹öÆÛ»çÀÌÁ 2¹è¾¿ Áõ°¡½ÃŰ¸é¼­, µ¿ÀÏÇÑ µ¥ÀÌÅ͸¦ ÀÐ°í ¾²´Âµ¥ °É¸®´Â ½Ã°£À» üũÇß´Ù. ÆÄÀÏÀÇ Å©±â´Â 256M·Î Çß´Ù.
#include <stdlib.h> 
#include <fcntl.h> 
#include <stdio.h> 
#include <string.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <sys/time.h> 
#include <time.h> 
 
int wtest(int cycle, int block_size); 
int rtest(int cycle, int block_size, char *file); 
int main(int argc, char **argv) 
{ 
  int fd; 
  int i =  1; 
  int cycle = 0; 
  int total_size = 1024*1024*256; 
  int minblock = 16; 
  int maxblock = 4096; 
  int defaultblock = minblock; 
 
  printf("========== Write Perf\n"); 
  while(minblock = minblock * 2) 
  { 
    if (minblock > maxblock) 
    { 
      break; 
    } 
    wtest(total_size/minblock,minblock); 
  } 
 
  printf("========== Read Perf\n"); 
  minblock = defaultblock; 
  while(minblock = minblock * 2) 
  { 
    if (minblock > maxblock) 
    { 
      break; 
    } 
    rtest(total_size/minblock,minblock,"temp.1"); 
  } 
 
  close(fd); 
} 
 
// ¾²±â ¼º´É Å×½ºÆ® 
int wtest(int cycle, int block_size) 
{ 
  int i; 
  int fd; 
  clock_t sclock, eclock; 
  char *wdata; 
  struct timeval stime, etime, rtime; 
 
  unlink("temp.1"); 
  wdata = (char *)malloc(block_size); 
  fd = open("temp.1", O_CREAT|O_WRONLY,S_IRUSR|S_IWUSR); 
  if (fd < 0) 
  { 
      perror("file open error"); 
      return 1; 
  } 
  gettimeofday(&stime, NULL); 
  sclock = clock(); 
  for (i = 0; i < cycle; i++) 
  { 
      write(fd, (void *)&wdata, block_size); 
  } 
  eclock = clock(); 
  gettimeofday(&etime, NULL); 
  timersub(&etime, &stime, &rtime); 
  printf("block=%d size=%d time=%d.%d clock=%.3fs\n", block_size, cycle*block_size,  
     rtime.tv_sec, rtime.tv_usec, (double)(eclock-sclock)/CLOCKS_PER_SEC); 
  close(fd); 
} 
 
// Àб⠼º´É Å×½ºÆ® 
int rtest(int cycle, int block_size, char *file) 
{ 
  char *buff; 
  int fd; 
  clock_t sclock, eclock; 
  int readn; 
  struct timeval stime, etime, rtime; 
  buff = (char *)malloc(block_size); 
  fd = open(file, O_RDONLY); 
  if (fd < 0) 
  { 
    perror("file open error"); 
    return 0; 
  } 
  gettimeofday(&stime, NULL); 
  sclock = clock(); 
  while(readn = read(fd, buff, block_size)) 
  { 
  } 
  eclock = clock(); 
  gettimeofday(&etime, NULL); 
  timersub(&etime, &stime, &rtime); 
  printf("block=%d size=%d time=%d.%d clock=%.3fs\n", block_size, cycle*block_size,  
     rtime.tv_sec, rtime.tv_usec, (double)(eclock-sclock)/CLOCKS_PER_SEC); 
  return 1; 
} 
 

´ÙÀ½Àº ½ÇÇà°á°ú´Ù.
$ ./rwtest 
========== Write Perf 
block=32 size=268435456 time=29.196705 clock=21.370s 
block=64 size=268435456 time=15.144043 clock=10.640s 
block=128 size=268435456 time=12.217236 clock=6.880s 
block=256 size=268435456 time=9.473108 clock=5.060s 
block=512 size=268435456 time=9.154647 clock=3.000s 
block=1024 size=268435456 time=9.28617 clock=2.230s 
block=2048 size=268435456 time=7.589446 clock=1.750s 
block=4096 size=268435456 time=8.126196 clock=1.470s 
========== Read Perf 
block=32 size=268435456 time=7.366217 clock=6.950s 
block=64 size=268435456 time=3.579088 clock=3.400s 
block=128 size=268435456 time=1.771714 clock=1.650s 
block=256 size=268435456 time=1.19989 clock=0.930s 
block=512 size=268435456 time=0.545688 clock=0.510s 
block=1024 size=268435456 time=0.332906 clock=0.320s 
block=2048 size=268435456 time=0.229784 clock=0.210s 
block=4096 size=268435456 time=0.179176 clock=0.160s 
 

ÅØ½ºÆ®·Î´Â º¸±â°¡ Èûµé¾î¼­, ±×·¡ÇÁ·Î ³ªÅ¸³»±â·Î Çß´Ù. óÀ½¿¡´Â gnuplot¸¦ »ç¿ëÇÒ±î »ý°¢Çß¾ú´Âµ¥, [http]google chart¸¦ »ç¿ëÇϱâ·Î Çß´Ù. google chart´Â º°µµÀÇ ÇÁ·Î±×·¥¾øÀÌ, À¥»ó¿¡¼­ ½±°Ô íƮ¸¦ ¸¸µé¾î³¾ ¼ö ÀÖ´Ù.

¹öÆÛÅ©±â¿¡ µû¸¥ ¾²±â ¼º´É

Sample chart

¹öÆÛÅ©±â¿¡ µû¸¥ Àб⠼º´É

Sample chart

Å×½ºÆ® ȯ°æ

Å×½ºÆ® ȯ°æÀº ´ÙÀ½°ú °°´Ù.
  • °³ÀÎ µ¥½ºÅ©Å¾ PC
  • Linux yundream-desktop 2.6.24-19-generic #1 SMP Wed Jun 4 16:35:01 UTC 2008 i686 GNU/Linux
  • CPU

    processor    : 0 
    vendor_id    : AuthenticAMD 
    cpu family    : 15 
    model        : 79 
    model name    : AMD Athlon(tm) 64 Processor 3800+ 
    stepping    : 2 
    cpu MHz        : 1000.000 
    cache size    : 512 KB 
    bogomips    : 2005.97 
    clflush size    : 64 
     
  • HD Disk : IDE

    # fdisk -l 
     
    Disk /dev/sda: 200.0 GB, 200049647616 bytes 
    255 heads, 63 sectors/track, 24321 cylinders 
    Units = cylinders of 16065 * 512 = 8225280 bytes 
    Disk identifier: 0xcab10bee 
     

°á°ú

°á°ú´Â ¿¹»óÇß´ø¹Ù¿Í Å©°Ô ´Ù¸£Áö ¾Ê´Ù. ´Ü ¾²±â¿¡ À־, ¹öÆÛÀÇ Å©±â°¡ 256¸¦ ³Ñ¾î°¡°Ô µÇ¸é, ¾²±â½Ã°£¿¡ À־ ¼º´ÉÀÇ °³¼±ÀÌ ±â´ëµÇÁö ¾Ê´Â ¹Ý¸é, Clock ½Ã°£Àº ²ÙÁØÈ÷ °¨¼ÒÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. ±×·¸´Ù¸é, Clock ½Ã°£À» °¨¾ÈÇØ¼­ 1024 byte Á¤µµ¸¦ ¼±ÅÃÇÏ´Â°Ô °¡Àå ¹«³­ÇÒµí ½Í´Ù.

ÀбâÀÇ °æ¿ìµµ 1024 byteÁ¤µµ·Î ¹öÆÛÅ©±â¸¦ Àâ´Â°Ô °¡À幫³­ÇÒµí ÇÏ´Ù. ÆÄÀÏÀÇ Å©±â°¡ Å©´Ù¸é 1024 byteÀÌ»óÀ» Àâ¾Æµµ ¾î´ÀÁ¤µµÀÇ ¼º´ÉÇâ»óÀº ±â´ëÇÒ ¼ö ÀÖÀ» °Í °°´Ù.

ÀÌ»ó ¹öÆÛÅ©±â¿¡ µû¸¥ Àбâ/¾²±â ¼º´ÉÃøÁ¤À» ÇØº¸¾Ò´Âµ¥, À̰ÍÀº DB¿Í °°ÀÌ, ·£´ý access°¡ ÀϾ´Â ¾îÇø®ÄÉÀ̼ÇÀ» À§Çؼ­´Â ¾µ¸¸ÇÑ Á¤º¸¸¦ ÁÖ±â Èûµé °ÍÀÌ´Ù. ½Ã°£ÀÌ µÈ´Ù¸é ·£´ý accessÀÇ ¼º´ÉÃøÁ¤À» ÇØº¸´Â °Íµµ Àç¹ÌÀÖÀ» °Í °°´Ù. À̿ܿ¡ seek½Ã°£µî¿¡ ´ëÇÑ ¼º´ÉÃøÁ¤À» ÇØº¸´Â °Íµµ ±¦ÂúÀ»°Í °°´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.