IOCP
UserPreferences
serious-code.net
RecentChanges
±â¼úÀÚ·á
¸µÅ©
TitleIndex
ºí·Î±×
°³¿ä
¸ñ·Ï
ÁÖÀÇÇÒ Á¡
Locked page limit, Non-paged pool limit
Locked page limit
Non-paged pool limit
ÇØ°á ¹æ¾È
¸µÅ©
´Ù¿î·Îµå
1 °³¿ä
I/O Completion Port´Â »ç¿ëÇϱ⿡ ±×·¸°Ô º¹ÀâÇÑ ±¸Á¶´Â ¾Æ´Ï´Ù. (¹°·Ð ½ÇÁ¦ ³»ºÎ ±¸ÇöÀº ¾î¶³Áö ¸ð¸¥´Ù.)
Ä¿³Î ½º·¹µå¿Í »ç¿ëÀÚ(ÇÁ·Î±×·¡¸Ó)ÀÇ ¿öÄ¿ ½º·¹µå°¡ Á¸ÀçÇÑ´Ù. »ç¿ëÀÚ°¡ ¾îµò°¡¿¡¼
WSASend
,
WSARecv
,
PostQueuedCompletionStatus
ÇÔ¼ö Áß¿¡ Çϳª¸¦ ÀÌ¿ëÇØ IO ¿äûÀ» CP ÂÊÀ¸·Î ³Ñ±ä´Ù. ±×·¯¸é CP´Â Ä¿³Î ½º·¹µå¿¡°Ô ¹æ±Ý ¹ÞÀº IO¸¦ ½ÇÁ¦·Î ó¸®ÇÒ °ÍÀ» ¸í·ÉÇÑ´Ù. ¼º°øÇÏµç ½ÇÆÐÇÏµç ¾ðÁ¨°¡ IO°¡ ¿Ï·áµÉ °ÍÀÌ´Ù. ÀÌ °á°ú°ªÀº Ä¿³Î ³»ºÎ¿¡ Àִ ť¿¡ µé¾îÀÖ´Ù°¡, »ç¿ëÀÚ°¡
GetQueuedCompletionStatus
ÇÔ¼ö¸¦ È£ÃâÇϸé Å¥¿¡¼ ³ª¿À´Â °ÍÀÌ´Ù.
2 ¸ñ·Ï
Scrap/ScalableWinsockAppsUsingCompletionPorts
3 ÁÖÀÇÇÒ Á¡
3.1 Locked page limit, Non-paged pool limit
3.1.1 Locked page limit
µ¥ÀÌÅ͸¦ º¸³»°Å³ª ¹ÞÀ» ¶§, setsockopt ÇÔ¼ö¸¦ ÀÌ¿ëÇØ SO_SNDBUF¿Í SO_RCVBUF¸¦ 0À¸·Î ¼³Á¤ÇÑ °æ¿ì, ÇÔ¼ö(WSASend, WSARecv)¿¡ ³Ñ±â´Â ¹öÆÛµéÀÌ Æ÷ÇÔµÈ ÆäÀÌÁöµéÀº ·¥(RAM)¿¡¼ ÆäÀÌÁö ¾Æ¿ôµÇÁö¾Êµµ·Ï ¶ôÀÌ °É¸°´Ù. Ä¿³Î µå¶óÀ̹öµéÀÌ ÀÌ ¹öÆÛ¸¦ ¾×¼¼½ºÇؾßÇϱ⠶§¹®¿¡ ¶ôÀÌ °É¸± ¼ö ¹Û¿¡ ¾ø´Ù.
¹®Á¦´Â OS ÀÔÀå¿¡¼ º¸¸é, ÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ÀÌ·± ½ÄÀ¸·Î ·¥À» ¸ðµÎ Â÷ÁöÇØ ¹ö¸®¸é, ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǵéÀ» ½ÇÇàÇÒ ¼ö ¾øÀ¸¹Ç·Î °ï¶õÇÏ´Ù´Â Á¡ÀÌ´Ù. ±×·¡¼ Windows¿¡¼´Â ÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀÌ Â÷ÁöÇÒ ¼ö ÀÖ´Â ¶ôÀÌ °É¸° ÆäÀÌÁöÀÇ ¾çÀ» Á¦ÇÑÇϰí ÀÖ´Ù. ´ë·« ½ÇÁ¦ ·¥ÀÇ 8ºÐÀÇ 1 Á¤µµ¶ó°í ÇÑ´Ù. ÀÌ Á¦ÇÑ¿¡ ´Ù´Ù¸¥ °æ¿ì, Áï ÁøÇà ÁßÀÎ send/recv ÀÛ¾÷ÀÌ ³Ê¹« ¸¹À» ¶§, IOCP¸¦ »ç¿ëÇÑ ÀÛ¾÷µéÀº ERROR_INSUFFICIENT_RESOURCES ¿¡·¯°ªÀ» ³»¹ñÀ¸¸ç ½ÇÆÐÇÏ°Ô µÈ´Ù.
¶ôÀÇ ±âÁØÀÌ ÆäÀÌÁö ´ÜÀ§¶ó´Â °ÍÀ» À¯³äÇϱ⠹ٶõ´Ù. ÆäÀÌÁö Å©±âº¸´Ù ÀÛÀº ¹öÆÛ¸¦ »ç¿ëÇØµµ, ¶ôÀÌ °É¸®´Â °ÍÀº ÆäÀÌÁö ´ÜÀ§À̹ǷÎ, ÆäÀÌÁö Å©±â¿¡ ¹öÆÛ Å©±â¸¦ ¸ÂÃß´Â °ÍÀÌ ÆäÀÌÁö¸¦ ÃÖ´ë·Î Ȱ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù.
3.1.2 Non-paged pool limit
Windows NT/2000 µå¶óÀ̹öµéÀº non-paged poolÀ̶ó´Â Ưº°ÇÑ Àå¼Ò¿¡¼ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ÀÖ´Ù. ÀÌ Ç®¿¡´Ù ÇÒ´çÇÑ ¸Þ¸ð¸®´Â ÆäÀÌÁö ¾Æ¿ôµÇÁö ¾Ê´Â´Ù. ÀÌ Ç®Àº ´Ù¾çÇÑ Ä¿³Î ¸ðµå ÄÄÆ÷³ÍÆ®µé¿¡°Ô ÇÊ¿äÇÑ Á¤º¸¸¦ ÀúÀåÇØ µÎ±â À§ÇÑ °ÍÀÌ´Ù. ÄÄÆ÷³ÍÆ® Áß¿¡ ÆäÀÌÁö ¾Æ¿ôµÈ ¸Þ¸ð¸®´Â ¾×¼¼½ºÇÒ ¼ö ¾ø´Â °Íµéµµ Àֱ⠶§¹®ÀÌ´Ù.
¾ÖÇø®ÄÉÀ̼ǿ¡¼ ¼ÒÄÏÀ» »ý¼ºÇÒ ¶§ ÀÌ Ç®ÀÇ °ø°£À» ¾à°£ ¼Ò¸ðÇÑ´Ù. bind/connect/WSASend/WSARecv È£Ã⠽ÿ¡µµ ¾à°£¾¿ ¼Ò¸ðÇÑ´Ù. Á¢¼ÓÀÚ ¼ö°¡ ¸¹¾ÆÁö¸é, ¾ðÁ¨°¡´Â ¹®Á¦°¡ »ý±ä´Ù´Â °É ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. Ç®¿¡ ´õ ÀÌ»óÀÇ °ø°£ÀÌ ¾øÀ» °æ¿ì, Á¦´ë·Î ÀÛ¼ºµÇÁö ¾ÊÀº µå¶óÀ̹ö µî¿¡ ÀÇÇØ¼ ½Ã½ºÅÛ Å©·¡½Ã°¡ ÀϾ ¼öµµ ÀÖ´Ù.
3.1.3 ÇØ°á ¹æ¾È
¸®¼Ò½º Á¦ÇÑÀ» °ü¸®ÇÏ´Â °ÍÀº ½±Áö ¾Ê´Ù. ¸®¼Ò½º°¡ ¸ðÀÚ¶ö ¶§, Ưº°ÇÑ ¿¡·¯ Äڵ尡 ¹ÝȯµÇ°Å³ª, ¿¹¿Ü°¡ ¶ß´Â °ÍÀÌ ¾Æ´Ï¶ó, ´Ù¾çÇÑ ½Ã½ºÅÛ ÇÔ¼ö È£Ãâ¿¡¼, ÀϹÝÀûÀÎ WSAENOBUFS ¶Ç´Â ERROR_INSUFFICIENT_RESOURCES ¿¡·¯°¡ ¹ÝȯµÉ »ÓÀ̱⠶§¹®ÀÌ´Ù.
¾î·µç À̸¦ ÇØ°áÇϱâ À§Çؼ´Â ù¹øÂ°·Î ¿öÅ·¼Â(Working Set)ÀÇ Å©±â¸¦ ´Ã·Á¾ßÇÑ´Ù. µÎ¹øÂ°´Â ³×Æ®¿öÅ© ´ë¿ªÆøÀ» ÃʰúÇÏÁö ¾Ê¾Ò´ÂÁö Ã¼Å©ÇØ¾ß ÇÑ´Ù. ±× ´ÙÀ½¿¡´Â ³Ê¹« ¸¹Àº send/recv ¿äûÀ» µ¿½Ã¿¡ ÁøÇàÁßÀÌÁö´Â ¾ÊÀºÁö Ã¼Å©ÇØ¾ß ÇÑ´Ù. ±×·¡µµ ¾È µÈ´Ù¸é, Á¤»óÀûÀÎ ¿¬°áÀ» ²÷¾î¼, ¸Þ¸ð¸®¸¦ È®º¸ÇÏ´Â ¼ö ¹Û¿¡ ¾ø´Ù.
4 ¸µÅ©
Inside I/O Completion Ports
A reusable, high performance, socket server class - Part 1
A reusable, high performance, socket server class - Part 2
A reusable, high performance, socket server class - Part 3
Handling multiple pending socket read and write operations
MSKB > Design Issues When Using IOCP in a Winsock Server
MSKB > Socket Overlapped I/O Versus Blocking/Non-blocking Mode
5 ´Ù¿î·Îµå
KGDC2002 È¿À²ÀûÀÎ ICOP Ȱ¿ë°ú ¿¹¿Ü ó¸®, Àå¿ëÈ£ (PDF)
see also
NetworkIoStrategy
,
AlertableIo
CategoryNetworkProgramming
,
CategoryFileProgramming
FindPage
by browsing, title search
, text search
or an index
Or try one of these actions:
AttachFile
,
DeletePage
,
LikePages
,
LocalSiteMap
,
RenamePage
,
SpellCheck
SeriousMoin
v1 (
koMoinMoin
1.0a4 Modified)