¿ù°£ Àα⠰Խù°

°Ô½Ã¹° 1,358°Ç
   
Multiqueue
±Û¾´ÀÌ : ÃÖ°í°ü¸®ÀÚ ³¯Â¥ : 2009-12-12 (Åä) 19:47 Á¶È¸ : 12476
±ÛÁÖ¼Ò :
                                

¿¹Àü¿¡ Å×½ºÆ® Çß´ø ³»¿ëÀ» Á¤¸®Çؼ­ Àû¾îº»´Ù.

ÀϹÝÀûÀÎ ½Ã½ºÅÛ¿¡¼­´Â 1°³ÀÇ ÀåÄ¡¿¡¼­ 1°³ÀÇ queue ¸¦ °¡Áö°í 󸮸¦ ÇÑ´Ù.
CPU ¿¡ °¹¼ö°¡ ¹°¸®ÀûÀ¸·Î 2°³ÀÌ»óÀ̰ųª ¿©·¯°³ÀÇ Äھ °¡Áö°í ÀÖ´Ù¸é ±× °¹¼ö¸¸Å­ CPU¿¡ ÀÛ¾÷À» ÇÒ´çÇÏ¿© 󸮸¦ ÇÏ¸é º¸´Ù È¿À²ÀûÀÎ ÁøÇàÀÌ °¡´ÉÇϳª  ¸®´ª½º¿¡¼­´Â ÇϳªÀÇ queue ¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î 1°³ÀÇ cpu ÄھÀ» »ç¿ëÇÑ´Ù.


ÀϹÝÀûÀÎ intel ·£Ä«µå Ĩ¼Â(e1000)

[root@elcap-G1-A ~]# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
225: 4186925883          0          0          0         PCI-MSI  eth1
233: 1048493217          0          0          0         PCI-MSI  eth2

CPU  Äھ 4°³°¡ Á¸ÀçÇÏÁö¸¸ ³×Æ®¿öÅ© ÀÛ¾÷À» Çϴ°ÍÀº CPU0 ¸¸À» ÀÌ¿ëÇÏ°í ÀÖ´Ù.
ÀÌ¿¡ CPU Äھ¼ö¸¸Å­ QUEUE °¹¼ö¸¦ ´Ã·Á¼­ º´·Ä·Î ÀÛ¾÷À» ó¸®ÇÒ¼ö ÀÖ°ÔÇÏ´Â°Ô Multiqueue ÀÌ´Ù.


multiqueue
  ----------
  In this mode, a separate MSI-X vector is allocated for each queue and one
  for "other" interrupts such as link status change and errors.  All
  interrupts are throttled via interrupt moderation.  Interrupt moderation
  must be used to avoid interrupt storms while the driver is processing one
  interrupt.  The moderation value should be at least as large as the expected
  time for the driver to process an interrupt. multiqueue is off by default.
 
  MSI-X support is required for multiqueue. If MSI-X is not found, the system
  will fallback to MSI or to Legacy interrupts.

  REQUIREMENTS: MSI-X support is required for multiqueue. If MSI-X is not
  found, the system will fallback to MSI or to Legacy interrupts.
  This driver supports multiqueue in kernel versions 2.6.24 and
  greater.

  This driver supports receive multiqueue on all kernels that support MSI-X,
  with the driver in non-NAPI mode.
  NOTE: Do not use MSI-X with the 2.6.19 or 2.6.20 kernels.
  To enable a separate vector for TX, use:
  # make CFLAGS_EXTRA=-DCONFIG_IGB_SEPARATE_TX_HANDLER

  This will allocate a separate handler for tx cleanups. This might be useful
  if you have a lot of CPU cores under heavy load and want to spread the
  processing load around.

  With this option, you would get three MSI-X vectors: one for TX, one for RX,
  and one for link.

CONFIG_INET_LRO=y
igb: eth0: igb_probe: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)


Multiqueue (82575 ±â¹Ý ³×Æ®¿öÅ© ¿¬°á Àü¿ë)

ÀÌ ¸ðµå¿¡¼­´Â °¢ ´ë±â¿­ ¹× ¸µÅ© »óÅ º¯°æ ¹× ¿À·ù¿Í °°Àº "´Ù¸¥" ÀÎÅÍ·´Æ®¿¡ ´ëÇØ º°µµÀÇ MSI-X º¤ÅÍ°¡ ÇÑ °³¾¿ ÇÒ´çµË´Ï´Ù.
¸ðµç ÀÎÅÍ·´Æ®´Â ÀÎÅÍ·´Æ® Á¶ÀýÀ» ÅëÇØ ÃßÁøµË´Ï´Ù.
ÀÎÅÍ·´Æ® Á¶ÀýÀº µå¶óÀ̹ö°¡ ÇϳªÀÇ ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µ¿¾È ÀÎÅÍ·´Æ® ½ºÅèÀ» ¹æÁöÇϴµ¥ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
Á¶Àý °ªÀº Àû¾îµµ ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÏ´Â µå¶óÀ̹ö¿¡ ´ëÇØ ¿¹»óÇÑ ½Ã°£¸¸Å­ Ä¿¾ß ÇÕ´Ï´Ù.
MultiqueueÀÇ ±âº»°ªÀº OffÀÔ´Ï´Ù.

Multiqueue¿¡´Â MSI-X Áö¿øÀÌ ÇÊ¿äÇÕ´Ï´Ù.
MSI-X°¡ ¾ø´Â °æ¿ì ½Ã½ºÅÛÀº MSI ¶Ç´Â ·¹°Å½Ã ÀÎÅÍ·´Æ®·Î Æú¹éÇÕ´Ï´Ù. Âü°í: 2.6.19 ¶Ç´Â 2.6.20 Ä¿³ÎÀ» »ç¿ëÇÏ´Â MSI-X¸¦ »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À.

Multiqueue´Â ´ÙÀ½°ú °°Àº ÄÄÆÄÀÏ Ç÷¡±×¸¦ »ç¿ëÇÏ¿© È°¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù.
# make CFLAGS_EXTRA=-DCONFIG_IGB_MQ_RX

µ¿Àû ÀÎÅÍ·´Æ® Á¶Àý¿¡ ´Ü¼ø ÀûÀÀ¼º ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© AIM ¾øÀÌ ÃÖ´ë ³× °³ÀÇ ¼ö½Å ´ë±â¿­À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼ö¿ë °¡´ÉÇÑ Ã³¸®·®À» Á¦°øÇÏÁö¸¸ Ãß°¡ ÀÎÅÍ·´Æ®·Î ÀÎÇØ ´ÜÀÏ ´ë±â¿­ ¸ðµå º¸´Ù CPU »ç¿ë·üÀÌ ³ô½À´Ï´Ù.
¿©·¯ ¼ÒÇü ÆÐŶÀ» »ç¿ëÇÏ¿© ´ÙÁß ¿¬°áÀ» ó¸®ÇÏ´Â °æ¿ì ¹× CPU »ç¿ë·ü°ú ¹«°üÇÑ °æ¿ì ÀÌ ¸ðµå°¡ À¯¿ëÇÕ´Ï´Ù. Âü°í: Àü¼Û Ŭ¸°¾÷Àº ¼ö½Å °úÁ¤ Áß¿¡ 󸮵˴ϴÙ.

ÀÌ ¿É¼ÇÀ» »ç¿ëÇϸé ÃÖ´ë ´Ù¼¸ °³ÀÇ MSI-X º¤Å͸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
³× °³ÀÇ ¼ö½Å ´ë±â¿­ ´ç Çϳª ¸µÅ© ´ç Çϳª
º¸À¯ÇÒ ¼ö ÀÖ´Â ¼ö½Å ´ë±â¿­ÀÇ ¼ö´Â ½Ã½ºÅÛÀÇ CPU ¼ö¿Í Á÷Á¢ °ü·ÃÀÌ ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î µà¾ó ÇÁ·Î¼¼¼­ ½Ã½ºÅÛÀÇ °æ¿ì µÎ °³ÀÇ ¼ö½Å ´ë±â¿­À» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

TX¿¡ º°µµÀÇ º¤Å͸¦ È°¼ºÈ­ÇÏ·Á¸é ´ÙÀ½À» »ç¿ëÇÕ´Ï´Ù.
# make CFLAGS_EXTRA=-DCONFIG_IGB_SEPARATE_TX_HANDLER

Àü¼Û Ŭ¸°¾÷ ½Ã º°µµÀÇ Çڵ鷯¸¦ ÇÒ´çÇÕ´Ï´Ù.
·Îµå ¹× CPU Äھ ¸¹Àº »óȲ¿¡¼­ CPU ÄÚ¾î °£¿¡ ·Îµå 󸮸¦ ¹èÆ÷ÇÏ·Á´Â °æ¿ì À¯¿ëÇÕ´Ï´Ù.
ÀÌ ¿É¼ÇÀ» »ç¿ëÇϸé 3°³ÀÇ MSI-X º¤Å͸¦ ¾ò°Ô µË´Ï´Ù.

TX ´ç Çϳª RX ´ç Çϳª
¸µÅ© ´ç Çϳª ÀÌÀü µÎ °³ÀÇ ¿É¼ÇÀÌ °áÇÕµÉ ¼ö ÀÖ½À´Ï´Ù.
# make CFLAGS_EXTRA="-DCONFIG_IGB_RX_MQ -DCONFIG_IGB_SEPARATE_TX_HANDLER"

AIMÀ» ºñÈ°¼ºÈ­ÇÏ°í ÃÖ´ë 6°³ÀÇ MSI-X º¤Å͸¦ Á¦°øÇÕ´Ï´Ù.
°¢ ¼ö½Å ´ë±â¿­(ÃÖ´ë 4°³) ´ç Çϳª
Àü¼Û Ŭ¸°¾÷ ½Ã Çϳª ¸µÅ© ´ç Çϳª
ÇöÀç ¿©·¯ Àü¼Û ´ë±â¿­¿¡ Áö¿øµÇ´Â Ä¿³ÎÀÌ ¾ø½À´Ï´Ù.
 


µÎ¼­¾øÀÌ Àû¾úÁö¸¸.... intel 82575, 82576 À̻󿡼­´Â Áö¿øÀÌ µÇ´Â ºÎºÐÀ̸砠e1000 ·£Ä«µå¿¡¼­´Â IntterruptThrottleRate ¿É¼ÇÀ» ÅëÇؼ­ Áö¿øÀÌ °¡´ÉÇÕ´Ï´Ù.

/etc/modprobe.conf

alias eth1 igb
alias eth2 igb
options igb IntMode=3,3 InterruptThrottleRate=0,0


           CPU0       CPU1       CPU2       CPU3
 212:          0          0          1          0   PCI-MSI-edge      eth1
213:    8817173   11665252    9292331      28324   PCI-MSI-edge      eth1-TxRx-3
214:    8974070   11896347    9238982      38707   PCI-MSI-edge      eth1-TxRx-2
215:    8848535   12015568    8922508      37493   PCI-MSI-edge      eth1-TxRx-1
216:          9     409695         13      144210439   PCI-MSI-edge      eth1-TxRx-0
217:          0          0          1          0   PCI-MSI-edge      eth0


multiqueue Áö¿ø¿©ºÎ¿¡ µû¶ó¼­  ³×Æ®¿öÅ©Ä«µå ÆÛÆ÷¸Õ½º Â÷ÀÌ°¡ È®½ÇÈ÷ ´À²¸Áø´Ù.
Çѹø Å×½ºÆ®Çؼ­ Àû¿ëÇغ¸½Ã±æ......


À̸§ Æнº¿öµå
ºñ¹Ð±Û (üũÇÏ¸é ±Û¾´À̸¸ ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.)
¿ÞÂÊÀÇ ±ÛÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä.
   

 



 
»çÀÌÆ®¸í : ¸ðÁö¸®³× | ´ëÇ¥ : ÀÌ°æÇö | °³ÀÎÄ¿¹Â´ÏƼ : ·©Å°´åÄÄ ¿î¿µÃ¼Á¦(OS) | °æ±âµµ ¼º³²½Ã ºÐ´ç±¸ | ÀüÀÚ¿ìÆí : mojily°ñ¹ðÀÌchonnom.com Copyright ¨Ï www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.