ºñµ¿±â IO »ç¿ëÀ» À§ÇØ aio_write »ç¿ëÇÏ·Á´Âµ¥¿ä.
Áö±ÝÀº ¸ÕÀú Á¦´ë·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎÀ» À§ÇØ
for¹®À» ÀÌ¿ëÇÏ¿© aio_write¸¦ È£ÃâÇÏ¿© 32K¾¿ 1024¹ø ½áÁÖ¸é¼ ÆÄÀÏ 2°³¸¦ ÀÛ¼ºÇϵµ·Ï ÇÏ¿´½À´Ï´Ù.
¹öÆÛÀÇ ³»¿ëÀº ¹®ÀÚ A¸¸ ÀÖ±¸¿ä.
±×·±µ¥ ÆÄÀÏ °á°ú¸¦ º¸¸é ÆÄÀÏ È®ÀÎÇغ¸¸é aio_write¸¦ 1¹ø ´õ ¾²°Å³ª ¶Ç´Â ÆÄÀÏÀÇ ³»¿ëÀÌ ¾²·¹±â°ªÀ¸·Î ä¿öÁ® Àֳ׿ä.
ÀÌ·¯ÇÑ °ÍÀ» ÇØ°áÇÏ·Á¸é ¾î¶»°Ô ÇؾßÇÒ±î¿ä?
¾Æ·¡´Â º¯¼ö ¼±¾ðÀ» Á¦¿ÜÇÏ°í ÆÄÀÏ WRITE ÇÏ´Â ¼Ò½ºÀÔ´Ï´Ù.
sAlignedBuf = (char*)( ((long)sBuf) + (512 - ((long)sBuf) % 512)); memset( sAlignedBuf, 0x41, BUFFER_SIZE ); for( i = 0; i < FILE_CNT; i++ ) //FILE_CNT = 2; { memset( &sAiocb[i], 0, sizeof(struct aiocb) );
sAiocb[i].aio_buf = sAlignedBuf; sAiocb[i].aio_nbytes = BUFFER_SIZE; //32K snprintf( sTmpFileName[i], FILE_PATH, "testAio_%d", i);
unlink( sTmpFileName[i] );
sFd[i] = open( sTmpFileName[i], O_CREAT | O_RDWR | O_EXCL | O_DIRECT | O_LARGEFILE, S_IRUSR | S_IWUSR );
sAiocb[i].aio_fildes = sFd[i];
if( sFd[i] == -1 ) { printf( TNAME " Error at open(): %s\n", strerror( errno ) ); exit(1); } }
for( j = 0; j < 1024; j++ ) { for( i = 0; i < 2; i++ ) { if( sWrittenSize = aio_write( &sAiocb[i] ) == -1 ) { printf( TNAME " Error at aio_write(): %s\n", strerror( errno ) ); close( sFd[i] ); exit(2); } sAiocb[i].aio_offset += sAiocb[i].aio_nbytes; } }
|
sAiocb[i].aio_offset += sAiocb[i].aio_nbytes;
offset º¯°æÀ» aio_write ³¡³ª°í ÇؾßÇϳªºÁ¿ä.
aio_offsetÀÌ µ¿½Ã¼ºÀÌ Á¦¾î°¡ ¾ÈµÇ´Ï ¾²·¹±â °ªÀ̶û ÆÄÀÏ »çÀÌÁî°¡ ´Þ¶óÁø°Å °°½À´Ï´Ù.