· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
IO PerformanceHOWTO

I/O Performance HOWTO

Sharon Snider v1.1, 05/2002

Revision History Revision v1.1 2002-05-01 Revised by: sds

Updated technical information and links.

Revision v1.0 2002-04-01 Revised by: sds

Wrote and converted to DocBook XML.

This HOWTO covers information on available patches for the 2.4 kernel that can improve the I/O performance of your Linux¢â operating system.

ÀÌ ¹®¼­ÀÇ ¿µ¹® ¿øº»Àº ´ÙÀ½ÀÇ À§Ä¡¿¡ ÀÖ½À´Ï´Ù.


¹ø¿ª : hb_kim (at) hotmail.com

2003-12-11 ver 1.1-trans-0.1


1. ¹èÆ÷Á¤Ã¥

The I/O Performance-HOWTO is copyrighted © 2002, by IBM Corporation

Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover text, and no Back-Cover text. A copy of the license can be found at http://www.gnu.org/licenses/fdl.txt.


2. ¼Ò°³

ÀÌ ¹®¼­´Â 2.4 Ä¿³ÎÀ» ¾²´Â Linux ¿ÀÆÛ·¹ÀÌÆà ½Ã½ºÅÛÀÇ I/O ¼º´ÉÀ» °³¼±Çϴµ¥ ´ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù. Ãß°¡ÀûÀÎ ÆÐÄ¡°¡ ¸¸µé¾îÁö´Â´ë·Î ÀÌ ¹®¼­¿¡ ´õÇØÁú°ÍÀÌ´Ù.

¾î¶°ÇÑ Á¦¾ÈÀ̳ª, ÀÌ ¹®¼­¿¡ µµ¿òÀÌ µÉ¸¸ÇÑ ³»¿ëÀÌ ÀÖ´Ù¸é Sharon Snider¿¡°Ô e-mailÀ» º¸³»Áֱ⸦ ¹Ù¶õ´Ù.


3. ¹Ù¿î½º ¹öÆÛÀÇ »ç¿ëÀ» ÇÇÇϱâ

ÀÌ Àå¿¡¼­´Â ¸®´ª½º 2.4 Ä¿³Î¿¡ ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡¸¦ Àû¿ëÇÏ°í »ç¿ëÇÏ´Â °Í¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù. Jens Axboe°¡ ¸¸µç ÀÌ ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡´Â µð¹ÙÀ̽º µå¶óÀ̹öµéÀÌ ³ôÀº ÁÖ¼ÒÀÇ ¹°¸®Àû ¸Þ¸ð¸®¿¡ Á÷Á¢ DMA ¸¦ ¼öÇàÇÒ¼ö ÀÖµµ·Ï Áö¿øÇÔÀ¸·Î½á ¹Ù¿î½º ¹öÆÛÀÇ »ç¿ëÀ» ÇÇÇÏ°Ô ÇØÁØ´Ù.

ÀÌ ¹®¼­´Â ¸®´ª½º Ä¿³Î¿¡¼­ÀÇ ¸Þ¸ð¸® ¾îµå·¹½Ì¿¡ ´ëÇØ °£·«ÇÏ°Ô ¼­¼úÇѵÚ, ¿Ö ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡¸¦ »ç¿ëÇØ¾ß ÇÏ´ÂÁö, ¾î¶»°Ô »ç¿ëÇØ¾ß ÇÏ´ÂÁö¸¦ ¾Ë·ÁÁØ´Ù.

3.1. ¸®´ª½º 2.4 Ä¿³Î¿¡¼­ÀÇ ¸Þ¸ð¸® ¾îµå·¹½Ì

¸®´ª½º 2.4 Ä¿³ÎÀº ´ë»ó ÄÄÇ»ÅÍÀÇ ¹°¸®Àû ¸Þ¸ð¸®ÀÇ ¾çÀ» ÁöÁ¤ÇÒ¼ö ÀÖ´Â Á¦¾î ¿É¼ÇÀÌ ÀÖ´Ù. ±âº»°ªÀ» ±×³É »ç¿ëÇÒ¶§, ÀÌ Á¦¾î ¿É¼ÇÀº Ä¿³ÎÀÇ °¡»ó¸Þ¸ð¸® °ø°£¿¡ Á÷Á¢ ¸ÅÇεɼöÀÖ´Â ¸Þ¸ð¸®ÀÇ ¾çÀ» ÁöÁ¤Çϴ°ÍÀ¸·Î¸¸ ÇÑÁ¤µÇ¾î ÀÖ´Ù. I386 ½Ã½ºÅÛ¿¡¼­ ±âº» ¸ÅÇÎ ¹æ¹ýÀº Ä¿³Î ¸ðµå¿¡¼­ »ç¿ëÇÏ´Â ¸Þ¸ð¸®¸¦ ¹°¸®Àû ¸Þ¸ð¸®¿¡¼­ óÀ½ 1 ±â°¡ ¹ÙÀÌÆ®·Î Á¦ÇÑÇÑ´Ù. ÀÌ Ã³À½ 1 ±â°¡ ¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸®¸¦ ³·Àº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®(low memory) ¶ó°í ºÎ¸£±âµµ ÇÑ´Ù. µû¶ó¼­ ³ôÀº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¶õ 1 ±â°¡ ¹ÙÀ̽º ÀÌ»óÀÇ ÁÖ¼Ò¸¦ °¡Áö´Â ¸Þ¸ð¸®¸¦ ÅëĪÇϴ°ÍÀÌ´Ù. º¸ÅëÀÇ °æ¿ì, ÀÌ ³ôÀº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®´Â Ä¿³Î¿¡ ÀÇÇØ Á÷Á¢ÀûÀ¸·Î ¾×¼¼½ºµÇ°Å³ª, ¿µ±¸ÀûÀ¸·Î ¸ÅÇεɼö ¾ø´Ù. ÀÌ ³ôÀº ÁÖ¼Ò ¸Þ¸ð¸®¿¡ ´ëÇÑ Áö¿ø ¿É¼ÇÀº ¸®´ª½º Ä¿³ÎÀ» ¼³Á¤ÇÒ¶§ ÄÓ ¼ö ÀÖ´Ù.


3.2. ¹Ù¿î½º ¹öÆÛÀÇ ¹®Á¦Á¡

ÀÌ ³ôÀº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¿¡ DMA I/O °¡ ¼öÇàµÉ¶§´Â, ³·Àº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¿¡ ¹Ù¿î½º ¹öÆÛ°¡ ÇÒ´çµÈ´Ù. µ¥ÀÌÅÍ°¡ µð¹ÙÀ̽º¿Í ³ôÀº ÁÖ¼ÒÀÇ ¸Þ¸ð¸® »çÀ̸¦ ¿òÁ÷À϶§´Â ¸ÕÀú ÀÌ ¹Ù¿î½º ¹öÆÛ¸¦ ÅëÇؼ­ º¹»çµÈ´Ù.

¸¹Àº ¾çÀÇ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Â ½Ã½ºÅÛ¿¡¼­ ÁýÁßÀûÀÎ I/O ¸¦ ¼öÇàÇϸé, ÀÌ ¹Ù¿î½º ¹öÆÛ°¡ ³·Àº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¿¡ ¸¹ÀÌ ÇÊ¿äÇÏ°Ô µÇ¹Ç·Î ¸Þ¸ð¸®ÀÇ ºÎÁ· Çö»óÀ» ÃÊ·¡ÇÑ´Ù. °Ô´Ù°¡ ¹Ù¿î½º ¹öÆÛ¸¦ ÅëÇÑ µ¥ÀÌÅÍÀÇ º¹»ç°¡ ´ë·®À¸·Î ¹ß»ýÇÏ°Ô µÇ¹Ç·Î ¼º´ÉÀº ÀúÇÏÇÏ°Ô ¸¶·ÃÀÌ´Ù.

PCI µð¹ÙÀ̽º´Â º¸Åë 4 ±â°¡¹ÙÀÌÆ®ÀÇ ¹°¸®Àû ¸Þ¸ð¸®¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ¹Ù¿î½º ¹öÆÛ°¡ 4 ±â°¡¹ÙÀÌÆ® ÀÌÇÏÀÇ ÁÖ¼Ò¸¦ °®´Â ³ôÀº ÁÖ¼Ò ¸Þ¸ð¸®¿¡ »ç¿ëµÇ´Â °æ¿ì¿¡(¿ªÀÚÁÖ: Áï 1 ±â°¡¹ÙÀÌÆ®ºÎÅÍ 4 ±â°¡¹ÙÀÌÆ® »çÀÌ¿¡ ÀÖ´Â ¸Þ¸ð¸®), PCI µð¹ÙÀ̽º ÀÚü°¡ Á÷Á¢ ¾×¼¼½º ÇÒ¼ö ÀÖ´Â ¸Þ¸ð¸® °ø°£À» ¾×¼¼½ºÇϸ鼭 ¹Ù¿î½º ¹öÆÛ¸¦ °ÅÃļ­ »ç¿ëÇÔÀ¸·Î½á, ½Ã°£°ú ¸Þ¸ð¸®¸¦ ³¶ºñÇÏ°í Àִ°ÍÀÌ´Ù. ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡¸¦ »ç¿ëÇÔÀ¸·Î½á ÀÌ·¯ÇÑ ¹Ù¿î½º ¹öÆÛÀÇ »ç¿ëÀ» ÃÖ¼ÒÈ­Çϰųª ¿ÏÀüÈ÷ ¾ø¾ÖÁÙ ¼ö ÀÖ´Ù.

3.3. ÆÐÄ¡ ´Ù¿î ¹Þ±â

ÀÌ ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡ÀÇ ÃֽŠ¹öÁ¯Àº block-highmem-all-18b.bz2 À̸ç, ´ÙÀ½ ÁÖ¼Ò¿¡ ÀÖ´Â Andrea Arcangeli's -aa ½Ã¸®Áî Ä¿³Î¿¡ ÀÖ´Ù.


3.3.1. ¹Ù¿î½º ¹öÆÛ¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï ¸®´ª½º Ä¿³Î ¼³Á¤Çϱâ

ÀÌ Àå¿¡¼­´Â ¹Ù¿î½º ¹öÆÛ¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï ¸®´ª½ºÄ¿³ÎÀ» ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ´Ù·ç°í ÀÖ´Ù. ¸®´ª½º Ä¿³ÎÀ» ÄÄÆÄÀÏÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­´Â ´ÙÀ½ÀÇ ¹®¼­¸¦ ÂüÁ¶Çϵµ·Ï.


´ÙÀ½°ú °°Àº Ä¿³Î ¼³Á¤ ¿É¼ÇÀ» ÄѾ߸¸ ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡¸¦ »ç¿ëÇÒ¼ö ÀÖ°Ô µÈ´Ù.

Development Code : ¼³Á¤ ¸Þ´º¿¡¼­ ³ôÀº ÁÖ¼Ò ¸Þ¸ð¸® »ç¿ë¿É¼ÇÀÌ ³ª¿À°Ô ÇÏ·Á¸é, Code maturity level Ç׸ñ¿¡ °¡¼­ development and/or incomplete code/drivers ¿É¼ÇÀ» ÄÑ¾ß µÈ´Ù.

High Memory Support : 1±â°¡ ¹ÙÀÌÆ® ÀÌ»óÀÇ ¹°¸®Àû ¸Þ¸ð¸® Áö¿øÀ» °¡´ÉÇÏ°Ô Çϱâ À§Çؼ­´Â, Processor type and features Ç׸ñ¿¡ °¡¼­ High Memory Support ¿É¼ÇÀ» ÄÒ´Ù.

High Memory I/O Support : 1±â°¡ ¹ÙÀÌÆ® ÀÌ»óÀÇ ¹°¸®Àû ¸Þ¸ð¸®¿¡ ´ëÇØ DMA I/O¸¦ Áö¿øÇϱâ À§Çؼ­´Â, Processor type and features Ç׸ñ¿¡¼­ HIGHMEM I/O support ¿É¼ÇÀ» "y"·Î ÄÑÁÖ¾î¾ß ÇÑ´Ù. ÀÌ ¼³Á¤ ¿É¼ÇÀº ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡·Î ÀÎÇØ »õ·Î »ý±ä ¿É¼ÇÀÌ´Ù.

3.3.2. ÀÌ¹Ì °íÃÄÁø µå¶óÀ̹öµé

ÀÌ ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡µéÀº ³ôÀº ÁÖ¼Ò ¸Þ¸ð¸®ÀÇ DMA I/O ¸¦ Áö¿øÇϱâ À§ÇÑ Ä¿³ÎÀÇ ÀÎÇÁ¶ó½ºÆ®·°ÃÄ¿Í ÇÔ²² º¯°æµÈ SCSI¿Í IDEÀÇ Áß°£ ·¹º§ µå¶óÀ̹ö¸¦ Æ÷ÇÔÇÑ´Ù. ¶ÇÇÑ À§¿¡¼­ »õ·Ó°Ô Ãß°¡µÈ Áö¿ø »çÇ×À» »ç¿ëÇϵµ·Ï ¼öÁ¤µÈ ¸î¸î µð¹ÙÀ̽º µå¶óÀ̹öµéµµ Æ÷ÇԵǾî ÀÖ´Ù.

¹Ù¿î½º ¹öÆÛ ÆÐÄ¡°¡ Àû¿ëµÇ°í, Ä¿³ÎÀ» ³ôÀº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¿¡ I/O °¡´ÉÇϵµ·Ï ¼³Á¤Çϸé, ¸¹Àº IDE ¼³Á¤°ú ´ÙÀ½¿¡ ³ª¿­µÈ µð¹ÙÀ̽º µå¶óÀ̹öµéÀº ¹Ù¿î½º ¹öÆÛ¾øÀÌ DMA I/O ¸¦ ¼öÇàÇÒ¼ö ÀÖ°Ô µÈ´Ù.

aic7xxx_drv.o

aic7xxx_old.o

cciss.o

cpqarray.o

megaraid.o

qlogicfc.o

sym53c8xx.o


3.4. ¹Ù¿î½º ¹öÆÛ¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¼öÁ¤ÇÏ´Â ¹æ¹ý

¸¸¾à ´ç½ÅÀÌ »ç¿ëÇÏ°í ÀÖ´Â µð¹ÙÀ̽º µå¶óÀ̹ö°¡ À§ÀÇ ¼öÁ¤µÈ µð¹ÙÀ̽º µå¶óÀ̹ö ¸ñ·Ï¿¡ Æ÷ÇÔµÇÁö ¾Ê¾ÒÁö¸¸, µð¹ÙÀ̽º ÀÚü´Â ³ôÀº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¿¡ DMA I/O °¡ °¡´ÉÇÏ´Ù°í Çϸé, ´ÙÀ½¿¡ ¼­¼úµÈ ¹æ¹ýÀ¸·Î ´ç½ÅÀÌ Á÷Á¢ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¼öÁ¤Çؼ­ ¹Ù¿î½º ¹öÆÛ ÆÐÄ¡¸¦ Àû¿ëÇϴ°ÍÀ» ½ÃµµÇØ º¼¼öµµ ÀÖ°Ú´Ù. ¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ ´ëÇÑ Àü¹ÝÀûÀÎ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù¸é ´ÙÀ½ÀÇ ¸µÅ©¸¦ ÂüÁ¶Çϵµ·Ï.



1. a. SCSI ¾î´ðÅÍÀÇ µå¶óÀ̹ö: Scsi_Host_Template ±¸Á¶Ã¼ÀÇ highmem_io ºñÆ®¸¦ ¼¼Æ®ÇØÁÙ°Í.

b. IDE ¾î´ðÅÍÀÇ µå¶óÀ̹ö: ide_hwif_t ±¸Á¶Ã¼ÀÇ highmem_io ºñÆ®¸¦ ¼¼Æ®ÇØÁÙ°Í.

2. pci_set_dma_mask(struct pci_dev *pdev, dma_addr_t mask) ¸¦ È£ÃâÇؼ­, ±× µð¹ÙÀ̽º°¡ DMA ·Î ¾×¼¼½ºÇÒ¼ö ÀÖ´Â ÁÖ¼Ò¹øÁöÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇØÁÙ°Í.

ÁöÁ¤µÈ ÁÖ¼Ò¹øÁöÀÇ ¹üÀ§¿¡ DMA I/O°¡ Áö¿øµÈ´Ù¸é pci_set_dma_mask()´Â pdev->dma_mask °ªÀ» ¼¼Æ®ÇÏ°í 0À» ¸®ÅÏÇÑ´Ù. SCSI³ª IDE µð¹ÙÀ̽ºÀÇ °æ¿ì, ÀÌ ÁÖ¼Ò¹üÀ§´Â Áß°£ ·¹º§ µå¶óÀ̹ö¿¡¼­ blk_queue_bounce_limit(request_queue_t *q, u64 dma_addr) ÇÔ¼ö·Î Àü´ÞµÇ¼­, ÀÌ µð¹ÙÀ̽º°¡ Á÷Á¢ ¾×¼¼½ºÇÒ¼ö ÀÖ´Â ¹°¸®Àû ¸Þ¸ð¸®¸¦ ¾×¼¼½ºÇÏ´Â °æ¿ì¿¡ ¹Ù¿î½º ¹öÆÛ°¡ »ý¼ºµÇÁö ¾Êµµ·Ï ÇÑ´Ù. SCSI³ª IDE µå¶óÀ̹ö°¡ ¾Æ´Ñ °æ¿ì¿¡´Â blk_queue_bounce_limit() ÇÔ¼ö¸¦ Á÷Á¢ È£ÃâÇØÁÖ¾î¾ß ÇÑ´Ù.

3. pci_map_single(dev, address, size, direction) ÇÔ¼ö ´ë½Å¿¡ pci_map_page(dev, page, offset, size, direction) ÇÔ¼ö¸¦ »ç¿ëÇؼ­ µð¹ÙÀ̽º°¡ Á÷Á¢ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸® ¿µ¿ªÀ» ¸ÊÇØÁØ´Ù. pci_map_page() ÇÔ¼ö´Â ³ôÀº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¿Í ³·Àº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¸¦ ¸ðµÎ Áö¿øÇØÁØ´Ù.

pci_map_single() ÇÔ¼ö¿¡¼­ÀÇ ÁÖ¼Ò ÀÎÀÚ´Â pci_map_page()ÀÇpage ¿Í offset ÆĶó¸ÞÅÍ·Î º¯È¯µÉ¼ö ÀÖ´Ù. virt_to_page() ¸ÅÅ©·Î¸¦ »ç¿ëÇؼ­ ÁÖ¼Ò¸¦ page¿Í offsetÀ¸·Î º¯È¯Çؼ­ »ç¿ëÇϵµ·Ï. virt_to_page() ¸ÅÅ©·Î¸¦ »ç¿ëÇÏ·Á¸é pci.h ¸¦ include ÇؾßÇÑ´Ù. ¿¹·Î:

void *address;
 
struct page *page;
 
unsigned long offset;
 
page = virt_to_page(address);
 
offset = (unsigned long) address & ~PAGE_MASK;
DMA I/O°¡ ¿Ï·áµÇ¸é pci_unmap_page() ÇÔ¼ö¸¦ È£ÃâÇؼ­ pci_map_page() ÇÔ¼ö·Î »ý¼ºÇÑ ¸ÅÇÎÀ» Á¦°ÅÇØ¾ß ÇÑ´Ù.

  • pci_map_single() ÇÔ¼ö´Â virt_to_bus() ¸¦ »ç¿ëÇؼ­ ±¸ÇöµÇ¾ú´Âµ¥, virt_to_bus()´Â ³·Àº ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¸¸À» ´Ù·é´Ù. ³ôÀºÁÖ¼ÒÀÇ ¸Þ¸ð¸®¸¦ Áö¿øÇÏ´Â µå¶óÀ̹ö´Â ´õ ÀÌ»ó virt_to_bus() ³ª bus_to_virt()¸¦ »ç¿ëÇÏ¸é ¾ÈµÈ´Ù.


4. µå¶óÀ̹ö°¡ pci_map_sg() ¸¦ ½á¼­ scatter-gather DMA ¸¦ ¸ÅÇÎÇÏ°í ÀÖ¾ú´Ù¸é, scatterlist ±¸Á¶Ã¼ÀÇ address Çʵ带 »ç¿ëÇÏ´ø °ÍÀ» page¿Í offset Çʵ带 »ç¿ëÇϵµ·Ï °íÃÄ¾ß µÈ´Ù.ÁÖ¼Ò¸¦ page ¿Í offsetÀ¸·Î º¯°æÇÏ´Â ¹ýÀº À§ÀÇ ÀÖ´Â ´Ü°è 3 À» ÂüÁ¶Çϵµ·Ï.


  • µå¶óÀ̹ö°¡ ÀÌ¹Ì PCI DMA API ¸¦ »ç¿ëÇÏ°í ÀÖ¾ú´Ù¸é, °è¼Ó pci_map_page()³ª pci_map_sg()¸¦ »ç¿ëÇصµ ÁÁ´Ù. scatterlist ±¸Á¶Ã¼ÀÇ address Çʵå´Â »ç¿ëÇÏÁö ¸»°Í.


4. Raw I/O °¡º¯ Å©±â ÃÖÀûÈ­ ÆÐÄ¡

ÀÌÀåÀº ¸®´ª½º 2.4 Ä¿³ÎÀ» À§ÇÑBadari Pulavarty ÀÇ Raw I/O °¡º¯ Å©±â ÃÖÀûÈ­ ÆÐÄ¡¿¡ ´ëÇؼ­ ¼³¸íÇÑ´Ù. ÀÌ ÆÐÄ¡´Â RAW VARY ȤÀº PAGESIZE_io ÆÐÄ¡¶ó´Â À̸§À¸·Îµµ ¾Ë·ÁÁ® ÀÖ´Ù.

ÀÌ Raw I/O °¡º¯ Å©±â ÃÖÀûÈ­ ÆÐÄ¡´Â raw I/O ¿¡ »ç¿ëµÇ´Â ºí·ÏÀÇ Å©±â¸¦ hardsect_size(ÀϹÝÀûÀ¸·Î 512 ¹ÙÀÌÆ®)¿¡¼­ 4 KByte·Î ¹Ù²Ù¾îÁØ´Ù. ÀÌ ÆÐÄ¡´Â raw I/O ¼öÇà¿¡ ÇÊ¿äÇÑ ¹öÆÛ ÇìµåÀÇ ¼ö¸¦ ÁÙ¿©ÁÜÀ¸·Î½á I/O throughput°ú CPU È°¿ëµµ¸¦ °³¼±ÇØÁØ´Ù.

4.1. ÆÐÄ¡´Ù¿î¹Þ±â

´ÙÀ½ Àå¼Ò¿¡¼­ ÀÌ ÆÐÄ¡¸¦ ´Ù¿î¹ÞÀ»¼ö ÀÖ´Ù.

Andrea Arcangeli °¡ ¿Ã·Á³õÀº Àå¼Ò


ÆÄÀÏÀÇ À̸§Àº10_rawio-vary-io-1ÀÌ´Ù.

Alan Cox ´Â ÀÌ ÆÐÄ¡¸¦2.4.18pre9-ac2 Ä¿³Î ÆÐÄ¡¿¡ Æ÷ÇÔ½ÃÄ×´Ù. ÀÌ°ÍÀ» ¹ÞÀ¸·Á¸é,

http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.4/2.4.18/


ÀÌ ÆÐÄ¡´Â SourceForge ¿¡¼­µµ ¹ÞÀ»¼ö Àִµ¥,


ÃֽŠ¹öÁ¯ÀºPAGESIZE_io-2.4.17.patch ÀÌ´Ù.

4.2. Raw I/O °¡º¯ Å©±â ÃÖÀûÈ­ ÆÐÄ¡¸¦ »ç¿ëÇϵµ·Ï µå¶óÀ̹ö¸¦ ¼öÁ¤Çϴ¹ý

ÀÌ ÆÐÄ¡ÀÇ ÀÌÀü ¹öÁ¯¿¡¼­´Â ¸ðµç µå¶óÀ̹ö°¡ ÀÌ ÆÐÄ¡¸¦ »ç¿ëÇϵµ·Ï º¯°æÇÏ¿´´Ù. ÇÏÁö¸¸ 2.4.17 ÀÌÈÄÀÇ ¹öÁ¯¿¡¼­´Â Adaptec, Qlogic ISP1020, IBM ServerRAID µå¶óÀ̹ö¿¡¸¸ »ç¿ëµÇµµ·Ï ¼öÁ¤µÇ¾ú´Ù. 2.4.17 ÀÌÈÄ ¹öÁ¯ÀÇ ÆÐÄ¡¸¦ ¼³Ä¡ÇÑ ÈÄ¿¡, À§ÀÇ µå¶óÀ̹ö¸¦ Á¦¿ÜÇÑ µå¶óÀ̹ö¿¡¼­ ÀÌ ÆÐÄ¡ÀÇ ³»¿ëÀ» Àû¿ëÇÏ·Á¸é, Scsi_Host_Template ±¸Á¶Ã¼ÀÇ can_do_varyio ºñÆ®¸¦ ¼¼Æ®Çϵµ·Ï ¼öÁ¤µÇ¾î¾ß¸¸ ÇÑ´Ù.


  • Raw I/O °¡º¯ Å©±â ÃÖÀûÈ­ ÆÐÄ¡¸¦ »ç¿ëÇϵµ·Ï ¼öÁ¤µÈ µå¶óÀ̹ö´Â ¹Ýµå½Ã ÇÑ I/O request¿¡¼­ °¡º¯Å©±âÀÇ(b_size) ¹öÆÛÇìµå¸¦ Áö¿øÇϵµ·Ï ¼öÁ¤µÇ¾î¾ß ÇÑ´Ù. ÀÌ´Â µ¥ÀÌÅÍ ¹öÆÛ°¡ 4K °æ°è¿¡ ³õ¿©ÀÖÁö ¾ÊÀ¸¸é hardsect_size °¡ »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù.


¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ºôµåÇϴµ¥ ÇÊ¿äÇÑ Ãß°¡ÀûÀÎ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù¸é ´ÙÀ½ÀÇ ¸µÅ©¸¦ ÂüÁ¶Çϵµ·Ï.



5. I/O Request Lock ÆÐÄ¡

ÀÌ Àå¿¡¼­´ÂI/O Request Lock ÆÐÄ¡¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÑ´Ù. ÀÌ ÆÐÄ¡´Â Johnathan Lahr °¡ ÀÛ¼ºÇÑ °ÍÀ¸·Î, SCSI º´·Ä Å¥À× ÆÐÄ¡(sior1)¶ó´Â À̸§À¸·Îµµ ¾Ë·ÁÁ® ÀÖ´Ù.

I/O Request Lock ÆÐÄ¡´Â º´·Ä I/O Å¥À×À» Á¦°øÇÔÀ¸·Î½á, ¸®´ª½º 2.4 Ä¿³ÎÀ» ¾²´Â SMP ȯ°æ¿¡¼­ÀÇ SCSI I/OÀÇ ¼º´ÉÀ» Çâ»ó½ÃŲ´Ù. ¸ÖƼ ÇÁ·Î¼¼¼­ ȯ°æ¿¡¼­ ¿©·¯°³ÀÇ ÇÁ·Î¼¼¼­°¡ µ¿½Ã¿¡ ¿©·¯°³ÀÇ ºí·Ïµð¹ÙÀ̽ºµéÀ» ±¸µ¿ÇÒ¼ö ÀÖ°Ô ÇØÁÜÀ¸·Î½á I/O ¼º´É°ú CPU È°¿ëÀ²À» ´ëÆøÀ¸·Î °³¼±ÇÒ ¼ö ÀÖ´Ù.

ÀÌ ÆÐÄ¡°¡ Àû¿ëµÇ±âÀü¿¡´Â, ºí·Ï I/O request´Â Àü¿ª spinlockÀ» Àâ°í ÀÖ´Â »óÅ¿¡¼­ Çϳª¾¿ Çϳª¾¿ Â÷·Ê·Î Å¥¿¡ Ãß°¡µÇ¾îÁ³´Ù. ÀÌ ÆÐÄ¡°¡ Àû¿ëµÇ¸é, SCSI I/O request´Â ÀÌ I/O request¿¡ ÇØ´çÇϴ ť¿¡ °ü·ÃÇÑ lock ¸¸À» Àâ°í ÀÖ´Â »óÅ¿¡¼­ Å¥¿¡ Ãß°¡µÉ¼ö ÀÖ´Ù. µû¶ó¼­ ¼­·Î ´Ù¸¥ µð¹ÙÀ̽º¿¡ ÇØ´çÇÏ´Â I/O requestµéÀº µ¿½Ã¿¡ Å¥¿¡ Ãß°¡µÉ¼ö ÀÖ´Ù. ¹°·Ð °°Àº µð¹ÙÀ̽º¿¡ ÇØ´çÇÏ´Â I/O requestµéÀº ¼øÂ÷ÀûÀ¸·Î Å¥¿¡ Ãß°¡µÈ´Ù.

5.1. ÆÐÄ¡ ´Ù¿î ¹Þ±â

ÀÌ ÆÐÄ¡´Â SourceForge ¿¡¼­ ¹ÞÀ»¼ö ÀÖ´Ù.


ÃֽŠ¹öÁ¯Àº sior1-v1.2416 ÀÌ´Ù. ¶ÇÇÑ ÀÌ ÆÐÄ¡¸¦ Àû¿ëÇÑ °¢ µå¶óÀ̹öµéµµ SourceForge¿¡¼­ ¹ÞÀ»¼ö ÀÖ´Ù. Emulex SCSI/FC µå¶óÀ̹ö¿ë ÆÐÄ¡´Â lpfc_sior1-v0.249 À̸ç Adaptec SCSI µå¶óÀ̹ö¿ë ÆÐÄ¡´Â aic_sior1-v0.249ÀÌ´Ù.




5.2. I/O Request Lock ÆÐÄ¡¸¦ »ç¿ëÇϵµ·Ï µå¶óÀ̹ö¸¦ ¼öÁ¤ÇÏ´Â ¹æ¹ý

ÀÌ I/O Request Lock ÆÐÄ¡´Â º´·Ä I/O Å¥À×ÀÌ Áö¿øµÇ´Â SCSI Áß°£ ·¹ÀÌ¾î µå¶óÀ̹ö¸¦ ¼³Ä¡ÇÑ´Ù. ÀÌ º´·Ä I/O Å¥À×Àº °¢°¢ÀÇ SCSI ¾î´ðÅÍ µð¹ÙÀ̽º µå¶óÀ̹ö¸¶´Ù È°¼ºÈ­µÇ¾î¾ß ÇÑ´Ù. µå¶óÀ̹ö¿¡¼­ À̸¦ È°¼ºÈ­ ÇÏ·Á¸é, µå¶óÀ̹ö°¡ µî·ÏµÉ¶§ Scsi_Host_Template ±¸Á¶Ã¼¿¡¼­ concurrent_queue Çʵ带 ¼¼Æ®ÇØÁÖ¸é µÈ´Ù.

  • º´·Ä Å¥À×À» È°¼ºÈ­ÇÏ´Â µå¶óÀ̹öµéÀº request_queue ÀÇ ¾×¼¼½º°¡ request_queue.queue_lock¿¡ ÀÇÇؼ­ º¸È£µÇµµ·Ï ±¸ÇöµÇ¾î¾ß ÇÑ´Ù.


¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ºôµåÇϴµ¥ ÇÊ¿äÇÑ Ãß°¡ÀûÀÎ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù¸é ´ÙÀ½ÀÇ ¸µÅ©¸¦ ÂüÁ¶Çϵµ·Ï.



6. Âü°í¹®Çå

´ÙÀ½¿¡ ¿­°ÅÇÏ´Â À¥»çÀÌÆ®µéÀº µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ º¯°æÇϰųª ¸®´ª½º Ä¿³ÎÀ» ¼³Á¤ÇÏ´Â °Í¿¡ ´ëÇÑ Ãß°¡ÀûÀÎ Á¤º¸¸¦ Á¦°øÇÑ´Ù.


ID
Password
Join
Enjoy your life; be pleasant and gay, like the birds in May.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-12-12 13:25:44
Processing time 0.0083 sec