High Performance Network Adapters and Drivers in Windows


Contents:
Introduction
Network Adapter Hardware
Network Adapter Driver
Scatter-Gather DMA
Auto-tuning
Call to Action

³×Æ®¿öÅ· ¼º´ÉÀº Àü¹ÝÀûÀÎ ½Ã½ºÅÛ ¼º´É¿¡¼­ °¡Àå Áß¿äÇÑ ¿ä¼ÒÀÇ Çϳª·Î Á¡Á¡ µÇ¾î°¡°í ÀÖ´Ù. ³×Æ®¿öÅ· ¼º´É¿¡ ¿µÇâÀ» ÁÖ´Â ¸¹Àº ¿ä¼ÒµéÀº ´ÙÀ½ÀÇ 3°¡Áö Á¾·ù°¡ ÀÖ´Ù.: ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î¿Í µå¶óÀ̹ö ¼º´É, ³×Æ®¿öÅ© ½ºÅà ¼º´É, ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ³×Æ®¿öÅ© ½ºÅðú »óÈ£ÀÛ¿ëÇÏ´Â ¹æ¹ý. ÀÌ ±â»ç´Â Microsoft¢ç Windows¢ç 2000, Windows XP, Windows .NET Server ¿¡¼­ ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î¿Í µå¶óÀ̹ö ¼º´É¿¡ °ü°èµÈ À̽´µéÀ» ¼³¸íÇÑ´Ù.

Introduction
Back to Top

³×Æ®¿öÅ· ¼º´ÉÀº 󸮷®°ú ÀÀ´ä ½Ã°£À¸·Î ÃøÁ¤µÈ´Ù. ½Ã½ºÅÛ ÀÚ¿øµéÀ» ³Ñ°Ô ÀÌ¿ëÇÏÁö ¾Ê°í ÃÖÀûÀÇ ¼º´É ¿¬»ê Æ÷ÀÎÆ®¸¦ ÀÌ·ç´Â °ÍÀº Áß¿äÇÏ´Ù. ±×·± ÃÖÀûÀÇ ¿¬»ê Æ÷ÀÎÆ®¸¦ ÀÌ·ç±â À§Çؼ­, ³×Æ®¿öÅ© ¾î´ðÅÍ º¥´õµéÀº ¸î¸î ºÐ¾ßµéÀ» Á¶»çÇÒ Çʿ䰡 ÀÖ´Ù.

  • ¡¤ ¾î´À ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î ´É·ÂµéÀÌ ¼öÇàµÇ´Â°¡
  • ¡¤ ÀÓ°è °æ·Î ±æÀÌ¿Í ÀÓ°è °æ·Î ±æÀÌ¿Í scalability¿¡ ´ëÇÑ ³×Æ®¿öÅ© ¾î´ðÅÍ µå¶óÀ̹ö ¼öÇà
  • ¡¤ ÀÚµ¿-ÅÍ´× ÇÏ´Â °ÍÀ» Çã¿ëÇÏ´Â µ¿ÀûÀÎ Àû´çÇÑ Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î ÀÎÀÚµé

Network Adapter Hardware
Back to Top

³×Æ®¿öÅ© ¾î´ðÅÍ¿¡¼­ ¼öÇàÇϱâÀ§Çؼ­ ¾î´À Çϵå¿þ¾î ÇÔ¼öµéÀ» °áÁ¤ÇÒÁö Ç×»ó ±³È¯ÀÌ ÀÖ´Ù. ÀÎÅÍ·´Æ® ¿ÏÈ­¸¦ Çã¿ëÇÏ´Â task offload featuresÀ» Ãß°¡ÇÏ´Â °Í, µ¿ÀûÀ¸·Î Çϵå¿þ¾î¸¦ tuning onÇÏ´Â °Í, PCI ¹ö½ºÀÇ »ç¿ëÀ» °³¼±ÇÏ´Â °Í, Á¡º¸ ÇÁ·¹ÀÓµéÀ» Áö¿øÇÏ´Â °ÍÀ» °í·ÁÇÏ´Â °ÍÀº Á¡Á¡ Áß¿äÇØÁö°í ÀÖ´Ù. ÃÖ»óÀÇ ¼º´ÉÀ» ¿ä±¸ÇÏ´Â ±¸¼º¿¡¼­ »ç¿ëµÉ high-end ³×Æ®¿öÅ© ¾î´ðÅÍ¿¡ ´ëÇØ¼­ ƯÈ÷ Á߿伺ÀÌ ÀÖ´Ù.

Task Offload Features

Task offload featuresÀº µå¶óÀ̹ö³ª Æß¿þ¾î¿¡¼­ ¼öÇàµÉ ¼ö ÀÖ´Ù. ÃÖÀûÀÇ ¼º´É¿¡ ´ëÇØ¼­, Çϵå¿þ¾î¿¡¼­ Task offload ¸¦ ¼öÇàÇÏ´Â °ÍÀº ÃÖ»óÀÌ´Ù. À©µµ¿ì´Â ´ÙÀ½ÀÇ ¼¼ °³ÀÇ Task offload featuresÀ» Àο¡À̺íÇÑ´Ù. Task offload¿¡ ´ëÇÑ ¹®¼­´Â À©µµ¿ì SDK¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.

  • TCP and IP Checksum Offload: °¡Àå ÀϹÝÀûÀÎ ³×Æ®¿öÅ© Æ®·¡ÇÈ¿¡ ´ëÇØ¼­, ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î¿¡¼­ üũ¼¶ °è»êÀ» ¿ÀÇÁ·ÎµùÇÏ´Â °ÍÀº ¹ÙÀÌÆ® ´ç ¿ä±¸µÇ´Â CPU»çÀÌŬÀÇ ¼ö¸¦ °¨¼Ò½ÃŰ¹Ç·Î »ó´çÇÑ ¼º´É ÀÌÁ¡À» Á¦°øÇÑ´Ù. üũ¼¶ °è»êÀº µÎ °¡Áö ÀÌÀ¯·Î ³×Æ®¿öÅ· ½ºÅÿ¡¼­ °¡Àå °í°¡ÀÇ ±â´ÉÀÌ´Ù.:
    • ¡¤ ±ä ÆÐ½º ±æÀÌ¿¡ µµ¿òÀÌ µÈ´Ù.
    • ¡¤ ij½¬°¡ churning effectsÇÏ°Ô ÇÑ´Ù.(ÀϹÝÀûÀ¸·Î º¸³»´Â ÂÊ¿¡¼­)

    º¸³»´Â ÀÚ¿¡¼­ üũ¼¶ °è»êÀ» ¿ÀÇÁ·ÎµùÇÏ´Â °ÍÀº È£½ºÆ® CPUÀÇ ºÎÇϸ¦ °¨¼Ò½Ã۰í ij½¬ È¿°ú¸¦ Áõ°¡½ÃŰ¹Ç·Î Àü¹ÝÀûÀÎ ½Ã½ºÅÛ ¼º´ÉÀ» °³¼±ÇÑ´Ù.

    À©µµ¿ì ¼º´É Lab¿¡¼­, network-intensive°¡ workloadsÇÏ´Â µ¿¾È üũ¼¶ ¿ÀÇÁ·ÎµåµÉ ¶§, TCP 󸮷®ÀÌ 19% °³¼±µÇ°Ô ÃøÁ¤µÇ¾ú´Ù. ÀÌ °³¼±ÀÇ ºÐ¼®Àº Àüü °³¼±ÀÇ 11%°¡ the path length reduction·Î ¹ß»ýÇß°í 8%´Â cache's effectivenessÀÇ Áõ°¡·Î ¹ß»ýÇß´Ù.

    ¼ö½ÅÀÚ¿¡¼­ üũ¼¶À» ¿ÀÇÁ·ÎµùÇÏ´Â °ÍÀº º¸³»´Â ÀÚ¿¡¼­ üũ¼¶À» ¿ÀÇÁ·ÎµùÇÏ´Â °Í°ú °°Àº ÀÌÁ¡À» °¡Áø´Ù. Áõ°¡µÈ ÀÌÁ¡Àº ¼ÒÄÏ ÇÁ¶ô½Ã ¼­¹ö¿Í °°Àº Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö µÑ ´Ù¿¡¼­ ÇàÇÏ´Â ½Ã½ºÅÛ¿¡ º¸¿©Áú ¼ö ÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ® ½Ã½ºÅÛ °°Àº CPU°¡ ¹Ù»Ü Çʿ䰡 ¾ø´Â ½Ã½ºÅÛ¿¡¼­, üũ¼¶ ¿ÀÇÁ·ÎµùÀÇ ÀÌÁ¡Àº °³¼±µÈ 󸮷®º¸´Ù´Â ´õ ÁÁÀº ³×Æ®¿öÅ© ÀÀ´ä ½Ã°£À¸·Î º¸¿©Áø´Ù.

  • À©µµ¿ì´Â TCP-up ¿¡¼­ 64K¿¡¼­ MTUº¸´Ù ´õ Å« Maximum Segment Size (MSS)À» ¾Ë¸®±â À§Çؼ­ ³×Æ®¿öÅ© ¾î´ðÅÍ/µå¶óÀ̹ö¿¡ ´ëÇÑ ´É·ÂÀ» Á¦°øÇÑ´Ù. À̰ÍÀº TCP°¡ µå¶óÀ̹ö¿¡¼­ 64K±îÁö ¹öÆÛ¸¦ ÇÒ´çÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ±×¸®°í ±× µå¶óÀ̹ö´Â ³×Æ®¿öÅ© MTU¿¡ ¾È¿¡¼­ Àû´çÇÑ ÆÐŶµé·Î Å« ¹öÆÛ¸¦ ³ª´«´Ù.

    TCP ¼¼±×¸ÕÅ×ÀÌÆÃ ÀÛ¾÷Àº È£½ºÆ® CPU ´ë½Å¿¡ ³×Æ®¿öÅ© ¾î´ðÅÍ/µå¶óÀ̹ö Çϵå¿þ¾î¿¡ ÀÇÇØ¼­ ÇàÇØÁø´Ù. À̰ÍÀº ³×Æ®¿öÅ© ¾î´ðÅÍ CPU°¡ Ãß°¡ÀûÀÎ ÀÛ¾÷À» ´Ù·ê ¼ö ÀÖ´Ù¸é »ó´çÇÑ ¼º´É °³¼±ÀÇ °á°ú°¡ ¹ß»ýÇÑ´Ù.

    Å×½ºÆ®µÈ ¸¹Àº ³×Æ®¿öÅ© ¾î´ðÅ͵鿡 ´ëÇØ¼­, È£½ºÆ® CPU°¡ ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾îº¸´Ù ´õ ÆÄ¿öÇ® ÇßÀ» ¶§ ¼øÀüÈ÷ ³×Æ®¿öÅ· Ȱ¼ºÈ­¿¡ ´ëÇØ¼­ º¸¿©Áö´Â °³¼±Àº ¾ÆÁÖ ÀÛ´Ù. ±×·¯³ª, ÀϹÝÀûÀÎ business workloads¿¡ ´ëÇØ¼­, 󸮷®ÀÇ 9%±îÁö Àü¹ÝÀûÀÎ ½Ã½ºÅÛ ¼º´É °³¼±ÀÌ ÃøÁ¤µÈ´Ù. ÀÌÀ¯´Â È£½ºÆ® CPU°¡ 󸮸¦ ½ÇÇàÇϱâÀ§Çؼ­ ´ëºÎºÐÀÇ »çÀÌŬÀ» »ç¿ëÇϱ⠶§¹®ÀÌ´Ù. ÀÌ °æ¿ì¿¡, Çϵå¿þ¾î¿¡¼­ TCP ¼¼½º¸ÕÅ×À̼ÇÀ» ¿ÀÇÁ·ÎµùÇÏ´Â °ÍÀº ¼¼±×¸ÕÅ×À̼ÇÀÇ ºÎÇϷκÎÅÍ È£½ºÆ® CPUÀÇ ºÎÇÏ´Â ÀÚÀ¯·Ó°Ô ÇÑ´Ù. ±×°ÍÀÇ ¿©ºÐÀÇ »çÀÌŬÀº ´õ ¸¹Àº 󸮷®À» ¼öÇàÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù.

  • IP Security (IPSec) Offload: À©µµ¿ì´Â ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î¿¡¼­ IPSecÀÇ ¾Ïȣȭ ÀÛ¾÷À» ¿ÀÇÁ·ÎµåÇÏ´Â ´É·ÂÀ» Á¦°øÇÑ´Ù. ƯÈ÷ 3 DES´Â ¸Å¿ì ³ôÀº cycles/byte ratio¸¦ °¡Áø´Ù. ±×·¡¼­, ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î¿¡¼­ IPSecÀ» ¿ÀÇÁ·ÎµùÇÏ´Â °ÍÀÌ º¸¾È ÀÎÅͳݰú VPN Å×½ºÆ®¿¡¼­ 30%ÀÇ ¼º´É Çâ»óÀÌ ÃøÁ¤µÈ °ÍÀº ³î¶ö ÀÏÀÌ ¾Æ´Ï´Ù.

Interrupt Moderation

°£´ÜÇÑ ³×Æ®¿öÅ© ¾î´ðÅÍ´Â ÆÐŶÀÇ µµÂø¿¡¼­³ª ÆÐŶ º¸³»±â ¿ä±¸ÀÇ ½Ã±×³Î ¿Ï·á¿¡¼­ È£½ºÆ®¿¡ Çϵå¿þ¾î ÀÎÅÍ·´Æ®¸¦ »ý¼ºÇÑ´Ù. ÀÎÅÍ·´Æ® ´ë±â½Ã°£À̳ª cache churning effectsÀÇ °á°ú´Â Àü¹ÝÀûÀÎ ³×Æ®¿öÅ· ¼º´É¿¡ ¿À¹öÇìµå¸¦ ÁØ´Ù. ¸¹Àº ½Ã³ª¸®¿À¿¡¼­(¿¹¸¦ µé¸é, ¸¹Àº ½Ã½ºÅÛ »ç¿ëÀ̳ª ³×Æ®¿öÅ© Æ®·¡ÇÈ), °¢°¢ÀÇ ÀÎÅÍ·´Æ®¿¡ ´ëÇØ¼­ ¿©·¯ °³ÀÇ ÆÐŶµéÀ» ó¸®ÇϹǷμ­ Çϵå¿þ¾î ÀÎÅÍ·´Æ®ÀÇ ¼Õ½ÇÀ» °¨¼Ò½ÃŰ´Â °ÍÀÌ ÃÖ»óÀÌ´Ù.

¸¹Àº ³×Æ®¿öÅ© ÀÛ¾÷ºÎÇÏ¿¡¼­, 󸮷®¿¡¼­ 9%±îÁö ¼º´É Çâ»óÀÌ ³×Æ®¿öÅ©-ÁýÁßÀûÀÎ(intensive) ÀÛ¾÷ºÎÇÏ¿¡¼­ ÃøÁ¤µÇ¾ú´Ù. ±×·¯³ª, 󸮷® °³¼±¿¡ ´ëÇØ¼­¸¸ ÀÎÅÍ·´Æ® Moderation ÀÎÀÚµéÀ» Á¶Á¤ÇÏ´Â °ÍÀº ÀÀ´ä ½Ã°£¿¡¼­ ¼º´É Ÿ°ÝÀÇ °á°ú¸¦ ÃÊ·¡ÇÑ´Ù. ÃÖÀûÀÇ ¼ÂÆÃÀ» À¯ÁöÇϱâ À§Çؼ­¿Í ´Ù¸¥ ÀÛ¾÷ºÎÇÏ¿¡¼­ ÀûÀÀ½ÃŰ´Â À§Çؼ­, µÚ¿¡ ÀÖ´Â ±â»çÀÎ ÀÚµ¿-Á¶Á¤¿¡¼­ ¼³¸íµÇ´Â µ¿ÀûÀ¸·Î Àû¿ëµÈ ÀÎÀÚµéÀ» Çã¿ëÇÏ´Â °ÍÀÌ ÃÖ»óÀÌ´Ù.

PCI Bus Usage

³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î ¼º´É¿¡¼­ °¡Àå Áß¿äÇÑ ¿ä¼Òµé Áß¿¡ Çϳª´Â PCI ¹ö½ºÀÇ È¿°úÀûÀÎ »ç¿ëÀÌ´Ù. ³×Æ®¿öÅ© ¾î´ðÅÍÀÇ DMA ¼º´ÉÀº °°Àº PCI ¹ö½º¿¡ ÀÖ´Â ¸ðµç PCI Ä«µåÀÇ ¼º´É¿¡ ¿µÇâÀ» ÁØ´Ù. ´ÙÀ½ÀÇ °¡À̵å¶óÀÎÀº PCI »ç¿ëÀ» ÃÖÀûÈ­ÇÒ ¶§ °í·ÁµÇ¾îÁ®¾ß ÇÑ´Ù.:

  • ¡¤ »ç¿ëÇÏ´Â ¸ñÀû ÆÐÀÌÁöµéÀ» Çѵ¥ ¸ðÀ½À¸·Î¼­ DMA Àü¼ÛÀ» °£¼ÒÈ­ÇÑ´Ù.
  • ¡¤ Å« µ¢¾î¸®(Àû¾îµµ 256¹ÙÀÌÆ®)¿¡¼­ DMA Àü¼ÛÀ» ¼öÇàÇϹǷμ­ PCI ÇÁ·ÎÅäÄÝ ¿À¹öÇìµå¸¦ °¨¼Ò½ÃŲ´Ù. °¡´ÉÇÏ´Ù¸é, Àüü ÆÐŶµéÀÌ ÇϳªÀÇ PCI 󸮿¡¼­ Àü¼ÛµÇ´Â µ¥ÀÌÅÍÀÇ È帧À» Á¤Çضó. ±×·¯³ª Àü¼ÛÀÌ ¾î¶»°Ô ¹ß»ýÇØ¾ß ÇÏ´ÂÁö¸¦ °í·ÁÇØ¶ó.; ¿¹µé µé¸é, Àü¼ÛÀÌ ½ÃÀÛÇϱâ Àü¿¡ µµÂøÇÑ ¸ðµç µ¥ÀÌÅÍ´Â ±â´Ù·Á¼± ¾ÈµÈ´Ù. À̰ÍÀº ´ë±â »ç°£À» Áõ°¡½Ãų °ÍÀ̰í Ãß°¡ÀûÀÎ ¹öÆÛ °ø°£À» ¼ÒºñÇÑ´Ù.
  • ¡¤ ÆÐŶÀÇ ¸¶Áö¸· ÀûÀº ¹ÙÀÌÆ®µéÀ» Àü¼ÛÇÒ ¶§ "clean up"ÇϱâÀ§Çؼ­ ÀûÀº ¿©ºÐÀÇ Àü¼ÛÀ» ¿ä±¸ÇÏ´Â °Í º¸´Ù´Â DMA ÆÐŶ Àü¼Û¿¡ Ãß°¡ÀûÀÎ ¹ÙÀÌÆ®µéÀ» ä¿ì´Â°Ô ´õ ÁÁ´Ù.
  • ¡¤ PCI ½ºÆå¿¡ ÀÇÇØ¼­ °í·ÁµÇ¾îÁö´Â °Í°°ÀÌ Memory Read, Memory Read Line, °ú Memory Read Multiple transactionsÀ» »ç¿ëÇÑ´Ù.
  • ¡¤ ³×Æ®¿öÅ© ¾î´ðÅÍ ¹ö½º ÀÎÅÍÆäÀ̽º Çϵå¿þ¾î´Â È£½ºÆ® ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯¿¡¼­ Á¦ÇѵéÀ» ¹ß°ßÇØ¾ß Çϰí Àû´çÇÑ ÇàÀ§¸¦ ÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é, ³×Æ®¿öÅ© ¾î´ðÅÍ ¹ö½º ÀÎÅÍÆäÀ̽º Çϵå¿þ¾î´Â DMA ¸Þ¸ð¸® Àб⿡¼­ ¸Þ¸ð¸®-ÄÁÆ®·Ñ·¯ pre-fetch limitationsÀ» ¹ß°ßÇØ¾ß ÇÑ´Ù. Çϵå¿þ¾î´Â ³×Æ®¿öÅ© ¾î´ðÅÍÀÇ ÀϺκп¡¼­ °úµµÇÑ ¹Ýº¹À» ¹ß°ßÇØ¾ß Çϰí óÀ½¿¡ È£½ºÆ®¿¡ ÀÇÇØ¼­ cut off µÉ ¶§ ¹Ì·¡¿¡ 󸮸¦ ´Ù½Ã Çϱâ Àü¿¡ ½Ã°£À» Áõ°¡ÇØ¾ß ÇÑ´Ù. µ¥ÀÌÅÍÀÇ ´ÙÀ½ ¼ÂÀ» °¡Á®¿À±â°¡ ¹Ù»Ü ¶§, ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯¿¡¼­ 󸮵éÀ» Á¦¾ÈÇÏ´Â °ÍÀ» °è¼ÓÇÏ´Â °Í¿¡¼­ Æ÷ÀÎÆ®°¡ ¾ø´Ù.
  • ¡¤ ±â´Ù¸®´Â »óÅÂÀÇ »ðÀÔÀ» ÃÖ¼ÒÈ­ÇØ¶ó, ƯÈ÷ µ¥ÀÌÅÍ Àü¼Ûµ¿¾È¿¡, ¹ö½º¸¦ Æ÷±âÇÏ´Â °ÍÀÌ ´õ ÁÁ°í ¸¸¾à Çϳª ÀÌ»óÀÇ ±â´Ù´Â »óŰ¡ »ðÀԵǰí ÀÖ´Ù¸é ¹ö½º¸¦ »ç¿ëÇÏ´Â ¶Ç ´Ù¸¥ PCI ¾î´ðÅÍ´Â ÇàÇØÁö´Â ¾î¶² ÀÛ¾÷À» °¡Á®¾ß ÇÑ´Ù.
  • ¡¤ ÇÁ·Î±×·¥ I/O´ë½Å¿¡ ¸Þ¸ð¸® ¸Ê I/O¸¦ »ç¿ëÇØ¶ó. À̰ÍÀº µå¶óÀ̹ö¿¡ ´ëÇØ¼­ ¶ÇÇÑ TRUEÀÌ´Ù.

Jumbo Frame Support

Å« Maximum Transmission Units (MTUs)°ú ´õ Å« ÇÁ·¹ÀÓ Å©±âµé, ƯÈ÷ Á¡º¸ ÇÁ·¹ÀÓµéÀ» Áö¿øÇÏ´Â °ÍÀº, ¹ÙÀÌÆ® ´ç ¹ß»ýµÇ´Â ³×Æ®¿öÅ© ½ºÅà ¿À¹öÇìµå¸¦ °¨¼Ò½Ãų °ÍÀÌ´Ù. 20% TCP 󸮷® Áõ°¡´Â MTU°¡ 1514¿¡¼­ 9000À¸·Î º¯È­µÆÀ» ¶§ ÃøÁ¤µÈ´Ù. ¶ÇÇÑ, ³×Æ®¿öÅ© ½ºÅÃÀ¸·ÎºÎÅÍ ³×Æ®¿öÅ© µå¶óÀ̹ö·ÎÀÇ È£ÃâÀÌ Àû°Ô µÇ¹Ç·Î CPU ÀÌ¿ë·üÀÇ »ó´çÇÑ °¨¼Ò¸¦ ¾ò´Â´Ù.

Network Adapter Driver
Back to Top

³×Æ®¿öÅ© ¾î´ðÅÍ µå¶óÀ̹öÀÇ ¼º´É È¿°ú´Â Àü¹ÝÀûÀÎ ³×Æ®¿öÅ© ¼º´É¿¡¼­ Áß¿äÇÑ ¿ä¼ÒÀÌ´Ù. ³×Æ®¿öÅ© ¾î´ðÅÍ¿Í ÇÔ²²ÇÏ´Â ¼º´É À̽´µéÀº ¾Æ·¡ 3°³ ºÐ¾ß°¡ ÀÖ´Ù.: Path length, scalability, alignment.

Path Length

ºñ·Ï µå¶óÀ̹ö·ÎºÎÅÍ µå¶óÀ̹ö±îÁö Àü¼Û°ú ¼ö½Å °æ·ÎµéÀÌ ´Ù¸£Áö¸¸, ¼º´É ÃÖÀûÈ­¿¡ ´ëÇØ¼­ ¾î¶² ÀϹÝÀûÀÎ ±ÔÄ¢ÀÌ ÀÖ´Ù.

  • ¡¤ ÀϹÝÀûÀÎ °æ·Î¿¡ ´ëÇØ¼­ ÃÖÀûÈ­ÇØ¶ó. Kernprof.exe ÅøÀº ÇÊ¿äÇÑ Á¤º¸¸¦ Ǭ À©µµ¿ìÀÇ MSDN°ú IDW ºôµå·Î Á¦°øµÈ´Ù. °³¹ßÀÚµéÀº ÃÖ°í·Î CPU »çÀÌŬµéÀ» ¼ÒºñÇÏ´Â ·çƾµéÀ» ¾Ë¾Æ¾ß Çϰí È£ÃâµÇ´Â ÀÌ ·çƾµéÀÇ ¼ö³ª ÀÌ ·çƾµé¿¡¼­ ¼ÒºñµÈ ½Ã°£À» °¨¼Ò½ÃŰ·Á°í ½ÃµµÇØ¾ß ÇÑ´Ù.
  • ¡¤ ³×Æ®¿öÅ© ¾î´ðÅÍ µå¶óÀ̹ö°¡ °úµµÇÑ ½Ã½ºÅÛ ÀÚ¿øµéÀ» »ç¿ëÇÏÁö ¾Ê°Ô ÇϱâÀ§Çؼ­ DPC¿¡¼­ ¼ÒºñµÇ´Â ½Ã°£À» °¨¼Ò½ÃÄѶó. À̰ÍÀº Àü¹ÝÀûÀÎ ½Ã½ºÅÛ ¼º´ÉÀ» Á¦°øÇÒ °ÍÀÌ´Ù.
  • ¡¤ µð¹ö±× Äڵ尡 µå¶óÀ̹öÀÇ ÃÖÁ¾ ¸±¸®Áî ¹öÀü¿¡¼­ ÄÄÆÄÀÏÀÌ ¾ÈµÇ°Ô È®½ÇÈ÷ ÇØ¶ó.; À̰ÍÀº °úµµÇÑ Äڵ带 ½ÇÇàÇÏ´Â °ÍÀ» ÇÇÇÑ´Ù.

Scalability Issues

Scalability À̽´µéÀº ÁÖ¼Ò¸¦ ÁöÁ¤Çϴµ¥ ¸Å¿ì Áß¿äÇÏ´Ù. ƯÈ÷ SMP ½Ã½ºÅÛ¿¡ ´ëÇØ¼­. °¡º¯ÀûÀÎ Scalability À̽´µéÀº ÀÌ Àå¿¡¼­ ³íÀǵȴÙ.

Partitioning
ºÐÇÒ ÀÛ¾÷Àº ÇÁ·Î¼¼¼­µé »çÀÌ¿¡¼­ °øÀ¯µÇ´Â µ¥ÀÌÅÍ¿Í Äڵ带 ÃÖ¼ÒÈ­Çϴµ¥ ÇÊ¿äÇÏ´Ù. ºÐÇÒ ÀÛ¾÷ µµ¿òÀº ½Ã½ºÅÛ ¹ö½º ÀÌ¿ë·üÀ» °¨¼Ò½Ã۰í ÇÁ·Î¼¼½º ij½¬ÀÇ È¿°ú¸¦ °³¼±ÇÑ´Ù. °øÀ¯ÇÏ´Â °ÍÀ» ÃÖ¼ÒÈ­ÇϱâÀ§Çؼ­ µå¶óÀ̹ö °³¹ßÀÚµéÀº ´ÙÀ½À» °í·ÁÇØ¾ß ÇÑ´Ù.:

  • ¡¤ À©µµ¿ì DDK¿¡¼­ ¼³¸íµÈ °Í °°ÀÌ ºñÁ÷·ÄÈ­µÈ ¹Ì´ÏÆ÷Æ®·Î¼­ µå¶óÀ̹ö¸¦ ¼öÇàÇØ¶ó.
  • ¡¤ Àü¿ª°ú °øÀ¯µÈ µ¥ÀÌÅÍ Á¢±ÙÀ» °¨¼Ò½Ã۱â À§Çؼ­ ÇÁ·Î¼¼¼­´ç µ¥ÀÌÅÍ ±¸Á¶Ã¼µéÀ» »ç¿ëÇØ¶ó. À̰ÍÀº µ¿±âÈ­ ¾øÀÌ Åë°è Ä«¿îÅ͵éÀ» À¯ÁöÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. À̰ÍÀº ÄÚµå °æ·Î ±æÀ̸¦ °¨¼Ò½ÃŰ°í ¼º´ÉÀ» Áõ°¡½ÃŲ´Ù. ÇʼöÀûÀÎ Åë°èµé¿¡ ´ëÇØ¼­, ÁúÀÇ ½Ã°£¿¡¼­ ÇÔ²² Ãß°¡µÇ´Â ÇÁ·Î¼¼¼­´ç Ä«¿îÅ͵éÀ» °¡Áø´Ù. ¸¸¾à Àü¿ª Ä«¿îÅ͸¦ °¡Á®¾ß ÇÑ´Ù¸é, Ä«¿îÅ͸¦ ´Ù·ç±â À§Çؼ­ ½ºÇɶô ´ë½Å¿¡ interlocked¿¬»êµéÀ» »ç¿ëÇØ¶ó. ¶ô ¸ÞŰ´ÏÁòµéÀº(½ºÇɶôÀ» ÇÇÇØ¶ó) µÚÀÇ ½ºÇɶôÀ» »ç¿ëÇÏ´Â °ÍÀ» ÇÇÇÏ´Â ¹ý¿¡ ´ëÇÑ ±â»ç¸¦ º¸¾Æ¶ó.

    À̰ÍÀ» ÆíÇÏ°Ô ÇϱâÀ§Çؼ­, KeGetCurrentProcessorNumber´Â ÇöÀç ÇÁ·Î¼¼¼­¸¦ °áÁ¤Çϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÇÁ·Î¼¼¼­´ç µ¥ÀÌÅÍ ±¸Á¶Ã¼µéÀ» ÇÒ´çÇÒ ¶§, ÇÁ·Î¼¼¼­ÀÇ ¼ö¸¦ °áÁ¤ÇϱâÀ§Çؼ­, KeQueryActiveProcessorsÇÔ¼ö´Â »ç¿ëµÈ´Ù. ÀÌ API´Â DDKÀÇ ¹Ì·¡ ¹ßÇ¥¿¡¼­ Æ÷ÇÔ¿¡ ´ëÇØ °èȹµÈ´Ù. ±×·¯³ª ´ÙÀ½À¸·Î¼­ Á¤ÀǵȴÙ.:

    KeQueryActiveProcessors´Â ½Ã½ºÅÛ¿¡¼­ Ȱ¼ºÈ­ÇÑ ÇÁ·Î¼¼¼­µéÀ» ¼³¸íÇÏ´Â À¯»çÇÑ ¸Å½ºÅ©¸¦ ¸®ÅÏÇÑ´Ù.

    KAFFINITY
    
      KeQueryActiveProcessors (
    
        );
    
    Include
    
    ntddk.h

    Comments
    À¯»çÇÑ ¸Å½ºÅ©¿¡¼­ Àüü ºñÆ® ¼ÂÀº ½Ã½ºÅÛ¿¡¼­ Ȱ¼ºÈ­ÇÑ ÇÁ·Î¼¼¼­ÀÇ ¼ö¸¦ Áö½ÃÇÑ´Ù. µå¶óÀ̹öµéÀº ¸Å½ºÅ©¾È¿¡ ÀÖ´Â ¸ðµç ¼Â ºñÆ®µéÀÌ ¿¬¼ÓÀûÀÏ °ÍÀ̶ó°í °¡Á¤Çؼ± ¾ÈµÈ´Ù. ÀÌÀ¯´Â ÇÁ·Î¼¼¼­µéÀº ¿î¿µ üÁ¦ÀÇ ¹Ì·¡ ¹ßÇ¥¿¡¼­ ¿¬¼ÓÀûÀÎ ¼ö¶ó´Â º¸ÀåÀÌ ¾ø´Ù. SMP ¸Ó½Å ¾È¿¡¼­ ÇÁ·Î¼¼¼­µéÀÇ ¼ö´Â 0±â¹ÝÀÇ °ªÀÌ´Ù.
    ¸¸¾à ij½¬-¶óÀÎ °æÀïÀ» °¨¼Ò½ÃŰ´Â ½Ãµµ¿¡¼­ ÇÁ·Î¼¼¼­´ç µ¥ÀÌÅ͸¦ À¯ÁöÇß´Ù¸é, À©µµ¿ì XP/À©µµ¿ì 2000 µå¶óÀ̹ö´Â KeQueryActiveProcessors¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

    KeQueryActiveProcessorsÀº ¾î¶² IRQL¿¡¼­µµ È£ÃâµÉ ¼ö ÀÖ´Ù.

    See also: KeGetCurrentProcessorNumber

False Sharing
False sharing´Â ÇÁ·Î¼¼¼­µéÀÌ ¼­·Î·ÎºÎÅÍ µ¶¸³ÇÏ´Â °øÀ¯µÈ º¯¼ö¸¦ ¿ä±¸ÇÑ´Ù. ±×·¯³ª, º¯¼öµéÀÌ °°Àº ij½¬¶óÀο¡ Àֱ⠶§¹®¿¡, ÇÁ·Î¼¼¼­µé »çÀÌ¿¡¼­ °øÀ¯µÈ´Ù. ±×·± »óȲ¿¡¼­, ij½¬ ¶óÀÎÀº ¾î¶² º¯¼öµéÀÇ ¸ðµç Á¢±Ù¿¡ ´ëÇØ¼­ ÇÁ·Î¼¼¼­µé »çÀÌ¿¡¼­ ¾ÕµÚ·Î ¿òÁ÷ÀÏ °ÍÀÌ´Ù. ±×°ÍÀº ij½¬ Ç÷¯½¬¿Í ¸®·ÎµåÀÇ Áõ°¡¸¦ ÀÏÀ¸Å²´Ù. À̰ÍÀº ½Ã½ºÅÛ ¹ö½º ÀÌ¿ë·üÀ» Áõ°¡½Ã۰í Àü¹ÝÀûÀÎ ½Ã½ºÅÛ ¼º´ÉÀ» °¨¼Ò½ÃŲ´Ù.

False sharing¸¦ ÇÇÇϱâ À§Çؼ­, Áß¿äÇÑ µ¥ÀÌÅÍ ±¸Á¶Ã¼µéÀº(½ºÇɶô, ¹öÆÛ Å¥Çì´õ, SList µî) NdisGetSharedDataAlignment¸¦ »ç¿ëÇϹǷμ­ ij½¬ ¶óÀÎ ¹Ù¿î´õ¸®µé·Î Á¤·Ä½ÃÄѶó..

Locking Mechanisms (Avoiding Spinlocks)
½ºÇɶôÀÇ »ç¿ëÀº Àû´çÈ÷ »ç¿ëµÇÁö ¾Ê´Â´Ù¸é ¼º´É¿¡¼­ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù. µå¶óÀ̹öµéÀº Àû´çÇÑ ÀÎÅͶôµå ¿¬»êÀ» »ç¿ëÇϹǷΠ°¡´ÉÇÑ ÇÑ ½ºÇɶôÀÇ »ç¿ëÀ» ÇÇÇØ¾ß ÇÑ´Ù. ±×·¯³ª ½ºÇɶôÀº ¾î¶² ¸ñÀû¿¡¼­´Â ÃÖ»óÀÇ ¼±ÅÃÀÌ´Ù. ¿¹¸¦ µé¸é, ¸¸¾à µå¶óÀ̹ö¿¡°Ô Áö½ÃµÇÁö ¾ÊÀº ÆÐŶ ¼ö¿¡ ´ëÇÑ ÂüÁ¶ Ä«¿îÅ͵éÀ» ´Ù·ç´Â µ¿¾È µå¶óÀ̹ö°¡ ½ºÇɶôÀ» ¿ä±¸ÇÑ´Ù¸é, ÀÎÅͶôµå ¿¬»êÀ» »ç¿ëÇÏ´Â °ÍÀº ºÒÇÊ¿äÇÏ´Ù.

¶ôÅ· ¸ÞÄ¿´ÏÁò¿¡ ´ëÇÑ ´Ù¸¥ Á¦¾ÈµéÀº ´ÙÀ½À» Æ÷ÇÔÇÑ´Ù.:

  • ¡¤ ÀÚ¿ø Ç®µé(¿¹¸¦ µé¸é, NdisInitializeSListHead, NdisInterlockedPushEntrySList, NdisInterlockedPopEntrySList, NdisQueryDepthSList)À» ´Ù·ç´Â °Í¿¡ ´ëÇØ¼­´Â Slists¿Í NDIS ´ÜÀÏ ¸µÅ©µå ¸®½ºÆ® ÇÔ¼öµéÀ» »ç¿ëÇØ¶ó.
  • ¡¤ ¸¸¾à ½ºÇɶôÀ» »ç¿ëÇÑ´Ù¸é, µ¥ÀÌÅÍ´Â º¸È£Çϰí ÄÚµå´Â º¸È£ÇÏÁö ¾Ê°Ô È®½ÇÈ÷ ÇØ¶ó. ÀϹÝÀûÀÎ °æ·Îµé¿¡¼­ »ç¿ëµÇ´Â ¸ðµç µ¥ÀÌÅ͸¦ º¸È£ÇϱâÀ§Çؼ­ ÇϳªÀÇ ¶ôÀ» »ç¿ëÇÏÁö ¸¶¶ó. ¿¹¸¦ µé¸é, º¸³»±â °æ·Î°¡ ±×°ÍÀÇ µ¥ÀÌÅ͸¦ ¶ôÇÒ Çʿ䰡 ÀÖÀ» ¶§ ¼ö½Å °æ·Î°¡ ¿µÇâÀ» ¹ÞÁö ¾Ê°Ô ÇϱâÀ§Çؼ­ µÎ°³ÀÇ µ¥ÀÌÅÍ ±¸Á¶Ã¼µé¿¡¼­ º¸³»±â¿Í ¹Þ±â °æ·Îµé¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅ͸¦ ºÐ¸®Çضó.
  • ¡¤ ¸¸¾à ½ºÇɶôÀ» »ç¿ëÇϰí ÀÌ¹Ì °æ·Î°¡ DPC ·¹º§¿¡ ÀÖ´Ù¸é, ¿©ºÐÀÇ Äڵ带 ÇÇÇϱâ À§Çؼ­ DPC ·¹º§¿¡¼­ ½ºÇɶô ¿ä±¸¿Í ÇØÁ¦¿¡ ´ëÇÑ ÇÔ¼öµéÀ» »ç¿ëÇØ¶ó.(¿¹¸¦ µé¸é, NdisDprAcquireSpinlock, NdisDprReleaseSpinlock)
  • ¡¤ ½ºÇɶô ¿ä±¸¿Í ÇØÁ¦ÀÇ ¼ö¸¦ ÃÖ¼ÒÈ­ÇÏ´Â °Í¿¡ ´ëÇÑ ³ë·Â¿¡¼­, NDIS ReadWriteLock ÇÔ¼öµé (NdisInitializeReadWriteLock, NdisAcquireReadWriteLock, NdisReleaseReadWriteLock)¸¦ »ç¿ëÇØ¶ó. ReadWriteLock ÇÔ¼öµéÀº ¿©·¯ °³¸¦ µ¿½Ã¿¡ Àд ÀÚ°Ô ÇϳªÀÇ ¶ôÀ» »ç¿ëÇÏ´Â °ÍÀ» Çã¿ëÇϰí ÇϳªÀÇ ¾²´Â ÀÚÀÇ ½º·¹µå¿¡°Ô ¾²±â Á¢±ÙÀ» Á¦ÇÑÇÑ´Ù. ¾²´Â Á¢±Ùµ¿¾È Àбâ Á¢±ÙÀÌ Çã¿ëµÇÁö ¾Ê´Â´Ù.

64-Bit DMA
¸¸¾à ³×Æ®¿öÅ© ¾î´ðÅͰ¡ 64ºñÆ® DMA¸¦ Áö¿øÇÑ´Ù¸é, stepsÀº 4±â°¡ ¹üÀ§º¸´Ù »óÀ§ÀÇ ÁÖ¼Ò¿¡ ´ëÇØ ¿©ºÐÀÇ º¹»ç¸¦ ÇÇÇØ¾ß ÇÑ´Ù. µå¶óÀ̹ö°¡ NdisMInitializeScatterGatherDmaÀ» È£ÃâÇÒ ¶§, Dma64Addresses´Â TRUE·Î ¼Â µÇ¾î¾ßÇÑ´Ù.

Mapping Sent User Data
Ç÷¡±×´Â ÃʱâÈ­µ¿¾È NdisMSetAttributesEx¿¡¼­ º¸³½ AttributeFlags ÀÎÀÚµéÀ» Ãß°¡ÇÑ´Ù. AttributeFlags¿¡¼­ NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS ºñÆ®´Â µå¶óÀ̹öµéÀÌ Àü¼ÛµÈ »ç¿ëÀÚ µ¥ÀÌÅ͸¦ ¸ÊÇÎÇÏ´Â °ÍÀ» ÇÇÇÏ°Ô ÇÑ´Ù. ±×¶§ µå¶óÀ̹ö´Â µ¥ÀÌÅͰ¡ º¸³»´Â ÁßÀÏ ¶§ NDIS·ÎºÎÅÍ º¸³»Áø ¹°¸® ÁÖ¼Ò¸¸À» ÇÊ¿ä·Î ÇØ¾ß ÇÑ´Ù. ÀÌ ºñÆ®´Â µå¶óÀ̹ö°¡ ¹°¸® ÁÖ¼Ò¸¸À» ÇÊ¿ä·Î ÇѴٰųª µå¶óÀ̹ö°¡ NdisXxxSafe API ¼Â(¹Ø¿¡ ÀÖ´Ù)À» »ç¿ëÇÒ °ÍÀÎÁö¸¦ NDIS¿¡°Ô Áö½ÃÇÑ´Ù. Safe API¸¦ »ç¿ëÇÒ ¶§, ¸¸¾à NdisQueryBufferSafe°¢ ¹öÆÛ ±æÀ̸¦ ¾ò±â À§Çؼ­ »ç¿ëµÈ´Ù¸é, °¡»ó ÁÖ¼Ò ÀÎÀÚ´Â NDIS¿¡ÀÇÇØ¼­ º¸³»Áø µ¥ÀÌÅÍ ¹öÆÛµéÀ» ¸ÅÇÎÇÏ´Â °ÍÀ» ÇÇÇϱâ À§Çؼ­ NULL·Î ¼Â µÇ¾î¾ß ÇÑ´Ù.

NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APISÀ» ¼ÂÆÃÇÏ´Â °ÍÀº °¡´ÉÇÒ ¶§¸¶´Ù ½Ã½ºÅÛ °¡»ó Áּҵ鿡 ¹öÆÛµéÀ» ¸ÊÇÎÇÏ´Â °ÍÀ» ÇÇÇϹǷμ­ ¼º´ÉÀ» °³¼±ÇÑ´Ù. ´ÙÀ½Àº NdisXxxSafe API ¼ÂÀÌ´Ù.:

NdisQueryBufferSafe
NdisGetFirstBufferFromPacketSafe
NdisCopyFromPacketToPacketSafe
NdisBufferVirtualAddressSafe

Alignment

ij½¬ ¶óÀÎ ¹Ù¿î´õ¸®¿¡¼­ ¹öÆÛ Á¤·ÄÀº ÇϳªÀÇ ¹öÆÛ¿¡¼­ ¶Ç ´Ù¸¥ ¹öÆÛ·Î µ¥ÀÌÅ͸¦ º¹»çÇÒ ¶§ ¼º´ÉÀ» °³¼±ÇÑ´Ù. ´ëºÎºÐÀÇ ³×Æ®¿öÅ© ¾î´ðÅÍ ¼ö½Å ¹öÆÛµéÀº óÀ½ ÇÒ´çµÉ ¶§ Àû´çÈ÷ Á¤·ÄµÈ´Ù ±×·¯³ª, ½ÇÁ¦ ÀÀ¿ëÇÁ·Î±×·¥ ¹öÆÛ¿¡¼­ À̺¥Æ®ÀûÀ¸·Î º¹»çµÉ »ç¿ëÀÚ µ¥ÀÌÅÍ´Â ¼ÒºñµÈ Çì´õ °ø°£¿¡ ÀÇÇØ¼­ Á¤·ÄÀÌ ¾ÈµÈ´Ù. TCP µ¥ÀÌÅÍ(°¡Àå ÀϹÝÀûÀÎ ½Ã³ª¸®¿À)¿¡¼­ TCP, IP,ÀÌ´õ³Ý Çì´õµé·Î ÀÎÇÑ ½¬ÇÁÆ®´Â 0x36¹ÙÀÌÆ®ÀÇ ½¬ÇÁÆ®ÀÇ °á°ú¸¦ ³º´Â´Ù. ÀϹÝÀûÀÌ °æ¿ì¿¡ ´ëÇÑ ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâÀ§Çؼ­, ¾à°£ ´õ Å« ¹öÆÛ°¡ ÇÒ´çµÇ°í ÆÐŶ µ¥ÀÌÅÍ´Â 0xa ¹ÙÀÌÆ® ¿ÀÇÁ¼Â¿¡ ³Ö¾î¾ß ÇÑ´Ù. À̰ÍÀº Çì´õ¿¡ ´ëÇÑ 0x36 ¹ÙÀÌÆ®¿¡ ÀÇÇÑ ¹öÆÛÀÇ ½¬ÇÁÆ® ÈÄ¿¡ »ç¿ëÀÚ µ¥ÀÌÅͰ¡ Àû´çÈ÷ Á¤·ÄµÉ °ÍÀ̶ó´Â °ÍÀ» º¸ÁõÇÒ °ÍÀÌ´Ù.

Scatter-Gather DMA
Back to Top

Scatter-Gather DMA ´Â Çϵå¿þ¾î¿¡¼­ ºÒ¿¬¼ÓÀûÀÎ ¹üÀ§ÀÇ ¹°¸® ¸Þ¸ð¸®¿ÍÀÇ µ¥ÀÌÅÍ ¼Û¼ö½ÅÀ» Áö¿øÇÑ´Ù. Scatter-Gather DMA ´Â SCATTER_GATHER_LIST ±¸Á¶Ã¼¸¦ »ç¿ëÇϰí ÀÌ ±¸Á¶Ã¼´Â SCATTER_GATHER_ELEMENTS ÀÇ ¹è¿­°ú ¹è¿­ ¾È¿¡ ¸¹Àº ¿¤¸®¸ÕÆ®µéÀ» Æ÷ÇÔÇÑ´Ù. ÀÌ ±¸Á¶Ã¼´Â µå¶óÀ̹öÀÇ º¸³»±â ÇÔ¼ö¿¡°Ô º¸³»Áø ÆÐŶ µð½ºÅ©¸³ÅͷκÎÅÍ È¸º¹µÈ´Ù. ¹è¿­ÀÇ °¢°¢ÀÇ ¿¤¸®¸ÕÆ®´Â ¹°¸®ÀûÀÌ°í ¿¬¼ÓÀûÀÎ Scatter-Gather ¿µ¿ªÀÇ ½ÃÀÛÇÏ´Â ¹°¸® ÁÖ¼Ò¿Í ±æÀ̸¦ Á¦°øÇÑ´Ù. µå¶óÀ̹ö´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ´Â °Í¿¡ ´ëÇÑ ÁÖ¼Ò¿Í ±æÀ̸¦ »ç¿ëÇÑ´Ù.

DMA ¿¬»ê¿¡ ´ëÇØ¼­ Scatter-Gather ·çƾÀ» »ç¿ëÇÏ´Â °ÍÀº ¸¸¾à ¸Ê ·¹Áö½ºÅ͵éÀÌ »ç¿ëµÈ´Ù¸é ¹ß»ýÇÏ´Â Á¤ÀûÀ¸·Î ÀÌ ÀÚ¿øµéÀ» ¶ôÅ·ÇÏ´Â °ÍÀ» ÇÏÁö ¾ÊÀ¸¹Ç·Î ½Ã½ºÅÛ ÀÚ¿øµéÀÇ ÀÌ¿ë·üÀ» °³¼±ÇÒ ¼ö ÀÖ´Ù.

¸¸¾à ³×Æ®¿öÅ© ¾î´ðÅͰ¡ TCP ¼¼±×¸ÕÅ×ÀÌ¼Ç ¿ÀÇÁ·Îµå(Å« º¸³»±â ¿ÀÇÁ·Îµå)À» Áö¿øÇÑ´Ù¸é, ±×¶§ µå¶óÀ̹ö´Â ÃÖ°í ¹öÆÛ Å©±â·Î º¸³¾ Çʿ䰡 ÀÖÀ» °ÍÀ̰í ÃÖ°í ¹öÆÛ Å©±â´Â NdisMInitializeScatterGatherDma ¾È¿¡ ÀÖ´Â MaximumPhysicalMapping ÀÎÀÚ ¾È¿¡ TCP/IP·ÎºÎÅÍ ¾òÀ» ¼ö ÀÖ´Ù. À̰ÍÀº Scatter Gather ¸ñ·ÏÀ» ¼³¸³ÇÏ°í °¡´ÉÇÑ ¹öÆÛ ÇÒ´ç°ú º¹»ç¸¦ ¾ø¾Ù ¼ö ÀÖ´Â ÃæºÐÇÑ ¸Ê ·¹Áö½ºÅ͵éÀ» °¡Áø´Ù´Â °ÍÀ» º¸ÁõÇÒ ¼ö ÀÖ´Ù.

Auto-tuning
Back to Top

Auto-tuning´Â µå¶óÀ̹ö ¶Ç´Â ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î¿¡¼­ ¼öÇàµÉ Çʿ䰡 ÀÖ°í Áß¿äÇÑ °³³äÀÌ´Ù. ¸ðµç ºÒÇÊ¿äÇÏ°í ºÒ¸íÈ®ÇÑ »ç¿ëÀÚ Á¦¾îµéÀ» Á¦°ÅÇÏ´Â µ¿¾È ÃÖÀûÀÇ ¼º´ÉÀ» À¯ÁöÇÏ´Â °ÍÀº Áß¿äÇÏ´Ù.

ÃÖÀûÀÇ ¼º´É ¿¬»ê Æ÷ÀÎÆ®¸¦ º¸ÁõÇϱâÀ§Çؼ­, ³×Æ®¿öÅ© ¾î´ðÅÍ µå¶óÀ̹ö´Â Auto-tuning ÀÎÀÚµéÀ» Áö¿øÇØ¾ß ÇÑ´Ù. µå¶óÀ̹ö´Â ÁÖ±âÀûÀ¸·Î µå¶óÀ̹ö ¸®¼Â¾øÀÌ Ã³¸®·®°ú ÀÀ´ä ½Ã°£À» ÃÖ°í·Î ÇϱâÀ§Çؼ­ Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î¸¦ Á¶Á¤ÇÑ´Ù. ¸ðµç ÀÎÀÚµéÀÌ Á¶Á¤µÇ´Â °ÍÀº ¾Æ´Ï°í Ưº°È÷ Çϵå¿þ¾î ÀÎÀڵ鸸 Á¶Á¤µÈ´Ù. Auto-tuning´Â Á¤ÀûÀÌ ÀÎÀÚÀÎ°Ô ´õ ÁÁ´Ù. ÀÌÀ¯´Â ÀÎÀÚµéÀÇ ÃÖÀûÀÇ °ªÀº ½Ã°£ ½Ã º¯È­ÇÒÁöµµ ¸ð¸£±â ¶§¹®À̰í Á¤ÀûÀÎ ÀÎÀÚµéÀº »ç¿ëÀÚ°¡ ÀÌÇØÇÏ°í ¿Ã¹Ù¸£°Ô Á¶Á¤ÇϱⰡ ¾î·Æ±â ¶§¹®ÀÌ´Ù.

Auto-tuning´Â ÇØ°áÇϱâÀ§ÇØ ¾î·Á¿î ¹®Á¦ÀÌ´Ù. ¸¹Àº ¿¬±¸¿Í °³¹ß ½Ã°£ÀÌ ÃÊÀûÀÇ Á¶Á¤ ¾Ë°í¸®ÁòÀ» ÀÌ·ç´Âµ¥ ¼ÒºñµÉ °ÍÀÌ´Ù. ±×·¯³ª, °í·ÁµÉ ¼ö ÀÖ´Â ¸¹Àº °£´ÜÇÑ ¾Ë°í¸®ÁòµéÀÌ ÀÖ°í auto-tuning°ú °¡±î¿î ÃÖÀûÀÇ ¿¬»ê Æ÷ÀÎÆ®À» ÇÕ´çÈ÷ ÀÌ·ç´Â °ÍÀ» Çã¿ëÇÑ´Ù.

µÎ Á¾·ùÀÇ auto-tuningÀÌ ÀÖ´Ù.: Á¤Àû, µ¿Àû. Á¤Àû auto-tuning¿¡¼­ µå¶óÀ̹ö¿Í ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î ÀÎÀÚµéÀº ¸Ó½Å ¿ªÇÒ(µ¥½ºÅ©Å¾¿¡ ´ëÇÑ ¼­¹ö)°ú ¸Ó½Å Çϵå¿þ¾î(CPU¿Í ¸Þ¸ð¸®) °°Àº ½Ã½ºÅÛ ±¸¼º°ú ³×Æ®¿öÅ© ¾î´ðÅÍ Çϵå¿þ¾î ´É·Âµé¿¡ ±â¹ÝÀÌ ÀÖ´Ù. µ¿Àû auto-tuning´Â ÀÚ¿ø ÀÌ¿ë·ü°ú ³×Æ®¿öÅ© ºÎÇÏ °°Àº ½Ã½ºÅÛ Á¶°Ç¿¡ ±â¹ÝÀÌ ÀÖ´Ù. µ¿Àû auto-tuning´Â ¼öÇàÇϴµ¥ ´õ ¾î·Æ´Ù. ±×·¯³ª, ±×°ÍÀº Á¤Àû auto-tuningº¸´Ù ´õ ÁÁÀº °á°ú¸¦ ³º´Â´Ù. ±×·¯³ª, Á¤Àû auto-tuning´Â high-end ¸Ó½Å¿¡¼­ ÀÚ¿øµéÀ» °ú´Ù ÀÌ¿ëÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ÀÌÀ¯´Â ÀÚ¿ø »ç¿ëÀ» ´Ùµë´Â ¸ÞÄ¿´ÏÁòÀÌ ¾ø±â ¶§¹®ÀÌ´Ù.

°¢°¢ÀÇ µå¶óÀ̹ö´Â µå¶óÀ̹ö ÃʱâÈ­¿¡¼­ ·¹Áö½ºÆ®·ÎºÎÅÍ ·ÎµåµÇ´Â Å×À̺íÀ» À¯ÁöÇÏ´Â Ç϶ó°í ÃßõÇÑ´Ù. ±× Å×À̺íÀº ³×Æ®¿öÅ© ÀÌ¿ë·üÀ» Æ÷ÇÔÇÏ´Â CPU ÀÌ¿ë·ü(NdisGetCurrentProcessorCounts)°ú ´Ù¸¥ ¿ä¼Òµé¿¡ ±â¹ÝµÈ ¿¬»ê ÀÎÀÚµéÀ» ¼±ÅÃÇÑ´Ù. µå¶óÀ̹ö´Â ŸÀ̸Ó(°¢°¢ 1Ãʳª 5Ãʸ¶´Ù)¿¡ ±â¹ÝµÇ°Å³ª ¿¹¸¦ µé¸é, ¾î¶² Ä«¿îÅ͵鿡 ±â¹ÝµÈ((ÃÊ´ç ÆÐŶ ¼ö °°Àº) CPU ÀÌ¿ë·üÀ» °è»êÇϹǷΠÀÌ ÀÎÀÚµéÀ» ¾÷µ¥ÀÌÆ® ÇÒ ¼ö ÀÖ´Ù.

auto-tuning¿¡ ´ëÇØ °í·ÁµÉ Çʿ䰡 ÀÖ´Â ÁÖ¿ä ÀÎÀÚµéÀº ´ÙÀ½ÀÇ ¾ÆÀÌÅÛµéÀ» Æ÷ÇÔÇÑ´Ù:

  • ¡¤ Interrupt Moderation: Off À̳ª On, ±×¸®°í ¼ö½Å°ú ¼Û½Å¿¡ ´ëÇÑ ÀÎÅÍ·´Æ® ºñÀ²
  • ¡¤ DPC´ç 󸮵Ǵ ÆÐŶÀ̳ª DPC¾È¿¡¼­ ¼ÒºñµÈ ½Ã°£
  • ¡¤ ¹öÆÛ ÇÒ´ç, ƯÈ÷ ¼ö½Å ¹öÆÛµé
  • ¡¤ ÇÕÃÄÁø°ÍÀ» ÀÛ°Ô Á¶°¢³»´Â °Í °°Àº ´Ù¸¥ ó¸®

´ÙÀ½ Å×À̺íÀº ¿¹Á¦·Î¼­ Á¦°øµÈ´Ù.:

CPU Utilization % Receive Packets/
Interrupt
Send Packets/
Interrupt
Packets processed at DPC Level
<=5 1 1 200
10 1 1 180
... ... ... ...
95 19 70 45
100 20 80 40

·¹Áö½ºÆ®¸®·ÎºÎÅÍ Å×À̺íÀ» ·ÎµåÇÏ´Â ÇϳªÀÇ ÀÌÀ¯´Â µå¶óÀ̹ö¿¡¼­ ¾î·Æ°Ô ÄÚµåµÈ °ªµéÀ» ÇÇÇÏ´Â °ÍÀÌ´Ù. À̰ÍÀº ¶ÇÇÑ ¸î¸î representative ÀÛ¾÷ ºÎÇÏ¿¡ ´ëÇØ¼­ ÃÖÀûÀÇ °ªµéÀ» ã±â À§Çؼ­ Å×ÀÌºí ¿£Æ®¸®·Î ½ÇÇèÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ½ÇÁ¦ Å×À̺íÀº »ç¿ëÀÚ °£¼·À» ÃÖ¼ÒÈ­ÇϱâÀ§Çؼ­ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿¡¼­ º¸´Ù ·¹Áö½ºÆ®¸®¿¡ º¸¿©¾ß ÇÑ´Ù. µå¶óÀ̹ö´Â Å×À̺íÀÌ Á¦°øµÈ´Ù¸é ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.

Ãß°¡ÀûÀ¸·Î, ³×Æ®¿öÅ© Æ®·¡ÇÈ¿¡ ±â¹Ý¿¡¼­, µå¶óÀ̹ö°¡ ³×Æ®¿öÅ© ¾î´ðÅÍÀÇ ÃÖ°í ºÎÇϸ¦ ´Ù·ê ¼ö ÀÖÀ» ¸¸Å­ ÃæºÐÇÑ ¹öÆÛµéÀ» °®´Â °ÍÀº ¸Å¿ì Áß¿äÇÑ´Ù. Á÷¸éÇÏ´Â °¡Àå Áß¿äÇÑ ¼º´É À̽´ÀÇ Çϳª´Â Ưº°ÇÑ ¼ö½Å ¹öÆÛ¿¡ ¼­ ÃæºÐÇÑ ¹öÆÛÀÇ ºÎÁ·ÀÌ´Ù. ¹öÆÛµéÀÇ ºÎÁ·Àº µå¶óÀ̹ö°¡ ÆÐŶµéÀ» µå¶øÇÏ°Ô ÇÑ´Ù. TCP°æ¿ì¿¡, À̰ÍÀº ÀçÀü¼ÛÀÌ ¹ß»ýÇÑ´Ù.(10% Á¤µµÀÇ ³ôÀº ÆÐ³ÎƼ°¡ ³×Æ®¿öÅ© Àμ¾Æ¼ºê ÀÛ¾÷ ºÎÇÏ¿¡ º¸¿©Áø´Ù.). ºäÀÇ ¼º´É Æ÷ÀÎÆ®·ÎºÎÅÍ, ±×°ÍÀº ±×°ÍµéÀ» ³·°Ô ÇÒ´çÇÏ´Â °Í º¸´Ù ¹öÆÛµéÀ» ³ô°Ô ÇÒ´çÇÏ´Â °ÍÀÌ ÀϹÝÀûÀ¸·Î ´õ ÁÁ´Ù. auto-tuningÀ¸·Î, µå¶óÀ̹ö´Â µ¿ÀûÀ¸·Î °ü·Ê¿¡ ±â¹ÝµÈ ¼ö½Å ¹öÆÛµéÀ» ÇÒ´çÇÒ ¼ö ÀÖ°í ÇØÁ¦ÇÒ ¼ö ÀÖ´Ù. µå¶óÀ̹ö´Â Ç×»ó ³×Æ®¿öÅ© Æ®·¡ÇÈÀÇ Æø¹ßÀ» ´Ù·ê ¼ö ÀÖ´Â ³Ë³ËÇÑ ¹öÆÛµéÀ» °¡Áú Çʿ䰡 ÀÖ´Ù.

¸¸¾à Çϵå¿þ¾î°¡ º¸³»±â¿Í ¼ö½Å ¹öÆÛµé¿¡ ÇÒ´çµÈ Çϵå¿þ¾î ¸Þ¸ð¸®¸¦ µ¿ÀûÀ¸·Î Á¶Á¤ÇÏ´Â °ÍÀ» Áö¿øÇÑ´Ù¸é, auto-tuning´Â º¸³»±â¿Í ¼ö½Å ÆÐŶ ·ü¿¡ ±â¹ÝµÈ º¸³»±â¿Í ¼ö½Å ¹öÆÛµéÀ» À§ÇØ ¿¹ºñ·Î ³²°ÜµÐ on-board ¸Þ¸ð¸®¸¦ Á¶Á¤ÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº on-boardÀÇ ´õ ÁÁÀº ÀÌ¿ë·üÀ» Çã¿ëÇÑ´Ù.

Call to Action
Back to Top

  • ¡¤ ³ÊÀÇ ³×Æ®¿öÅ© ¾î´ðÅÍ¿Í µå¶óÀ̹ö°¡ ÃÖÀûÀÇ ½Ã½ºÅÛ ¼º´É Æ÷ÀÎÅÍ¿¡¼­ µ¿ÀÛÇÏ´Â °ÍÀ» º¸ÁõÇϱâÀ§Çؼ­ ÀÌ ±â»ç¿¡ Á¦°øµÈ Á¤º¸¸¦ »ç¿ëÇØ¶ó.
  • ¡¤ ÇöÀç Windows DDK ´Â ÀÌ ±â»ç¿¡ ¼³¸íµÈ API¿Í ¸ÞÄ¿´ÏÁòµéÀ» »ç¿ëÇÏ´Â ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.
  • ¡¤ À©µµ¿ì XP¸¦ ½ÇÇàÇÏ´Â PC¿¡¼­ ºü¸¥ ½Ã½ºÅÛ ½ÃÀÛÀ» À§ÇÑ ÃÖÀûÈ­¿¡ ´ëÇÑ °ü°èµÈ Åø°ú Á¤º¸¿¡ ´ëÇØ¼­´Â OnNow and Power Management¸¦ º¸¾Æ¶ó.
  • ¡¤ Áú¹®¿¡ ´ëÇØ¼­, NDISFB@microsoft.com¿¡ À̸ÞÀÏÀ» º¸³»¶ó. ³ÊÀÇ À̸§,ŸÀÌÆ², ȸ»ç À̸§, ȸ»ç ŸÀÔ(IHV, ISV, ISP, or OEM)°ú ÀüÈ­ ¹øÈ£¸¦ Æ÷ÇÔÇÏ´Â °ÍÀ» È®½ÇÈ÷ ÇØ¶ó.