ÀÚÅõ¸®|ºí·Î±×|¹æ¸í·Ï   JAEN 
::: _ÄÄÇ»ÅÍ computer











Linux HighPerformance Network Server
¹®¼­»óÅ ÀÛ¼º: ÀÌÈ«±â(orinmir _at_ chonga _dot_ pe _dot_ kr)
ÀÛ¼ºÀÏ: 2001³â 6¿ù 10ÀÏ
¹®¼­¹öÀü: 0.1.2
ÀúÀÛ±Ç: GPL

¼öÁ¤ÀÏ:
   v0.1.0 ; 2001-06-10; ¹®¼­ ÃÊ¾È ¿Ï¼º
   v0.1.1 ; 2001-06-12; RT signal concurrent echo server example
   v0.1.2 ; 2004-06-06; ÀϺΠ¿ÀÀÚ ¼öÁ¤

Æ÷±â°¢¼­: ÀÌ ¹®¼­´Â °³ÀÎÀûÀÎ ÀÚ·á Á¤¸®ÀÇ ¿ëµµ·Î ÀÛ¼ºµÇ¾úÀ¸¸ç, ÀÌ ¹®¼­ÀÇ ³»¿ë¿¡ ´ëÇÑ ¸ðµç ±Ç¸®¸¦ Æ÷±âÇÔ. ¶ÇÇÑ ÀúÀ۱ǿ¡ ´ëÇÑ ºÐÀï ¹ß»ý½Ã, ÇØ´ç ³»¿ëÀº »èÁ¦Åä·Ï ÇÑ´Ù.

TODO: ÀÌ ¹®¼­´Â ¾ÆÁ÷ draft»óÅ¿¡ ÀÖÀ¸¸ç, ´ëºÎºÐÀÇ ÀúÀÛÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ linkÇÏ·Á°í ÇÑ´Ù. ¹°·Ð ºüÁø ºÎºÐÀº º¸°­ÇØ ³ª°¡°íÀÚÇÑ´Ù. Á»´õ À¯¿ëÇÑ ¿¹Á¦µéÀ» À§ÁÖ·Î °»½ÅÇÒ ¿¹Á¤ÀÌ´Ù.

°³¿ä   Linux¿¡¼­ÀÇ TCP/IP Socket ±â¹Ý °í¼º´É ¼­¹ö¸¦ Á¦ÀÛÇÏ´Â ¹æ¹ý¿¡´Â °íÀüÀûÀÎ multiplexing io(select, poll)¸¦ °¡Àå ¸¹ÀÌ »ç¿ëÇϴµ¥, ÀÌ´Â ¸Å¹ø kernel·ÎºÎÅÍ Àüü file descriptor ¸¦ Á¶»çÇÏ¿© setÀ» ¸¸µé¾î ¸®ÅÏÇϵµ·Ï ÇÏ´Â ¹æ½ÄÀ¸·Î high load Àϼö·Ï CPUÁ¡À¯À²°ú ÀÀ´ä½Ã°£ÀÌ ±æ¾îÁö´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ¹°·Ð À̸¦ »ç¿ëÇÏ¿© ¼­¹öÇÁ·Î±×·¥À» Á¦ÀÛÇÏ¿©µµ 1000-3000¸í ¸¹°Ô´Â 5000°³ÀÇ Å¬¶óÀÌ¾ðÆ® Á¢¼ÓÀ» ó¸®ÇÒ ¼ö´Â ÀÖ´Ù°í º¸°íµÇ°í ÀÖ´Ù.
  ¿À´Ã³¯¿¡ ¿Í¼­´Â ¿©·¯°¡Áö ¼º´ÉÇâ»óÀ» À§ÇÑ ½Ãµµ°¡ ÀÌ·ç¾îÁö°í Àִµ¥, ±âÁ¸ÀÇ poll¿¡ ´ëÇÑ ¼º´ÉÇâ»óÀ» ²ÒÇÏ¿© /dev/poll¾Æ °°ÀÌ ÀåÄ¡ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â ¹æ¹ý(solaris 8¿¡ µµÀԵǾú´Ù)°ú ±âÁ¸ÀÇ SIGIO¸¦ ÀÌ¿ëÇÑ °íÀüÀûÀÎ ¹æ¹ýÀ̿ܿ¡µµ Realtime(RT) signalÀ» ÀÌ¿ëÇÑ IO Completion signal ¹æ½ÄÀ¸·Î high load¿¡¼­ÀÇ ³·Àº CPU Á¡À¯À²°ú ºü¸¥ ÀÀ´ä½Ã°£, inactive client Á¢¼ÓÀÌ ¸¹¾ÆÁö´õ¶óµµ 󸮿¡ ¹®Á¦°¡ ¾øµµ·Ï Çϱâ À§ÇÑ ¹æ½ÄµéÀÌ ¿¬±¸µÇ°í ±¸ÇöµÇ°í ÀÖ´Ù.
  Ÿ ¿î¿µÃ¼Á¦¿¡¼­´Â FreeBSDÀÇ kqueue/kevent¿Í Windows°è¿­ÀÇ IOCP(IO Completion Port) µîÀÌ ÀÖÀ¸¸ç OS kernel³»¿¡ °ü½ÉÀÖ´Â ¼ÒÄϵ鿡 ´ëÇØ À̺¥Æ®¸¦ µî·ÏÇØ³õ°í kernel·ÎºÎÅÍ signalÀ» ±â´Ù¸®´Â ¹æ¹ýÀ¸·Î ±× ³»¿ëÀº °ÅÀÇ ´ëµ¿¼ÒÀÌÇÏ´Ù.

  º» ¹®¼­¿¡¼­´Â ¸®´ª½º¿¡¼­ÀÇ Linux(kernel 2.2.x ÀÌ»ó)¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â RT signal°ú ±âÁ¸ÀÇ pollÀ» °³¼±ÇÑ /dev/poll¿¡ ´ëÇØ À̾߱âÇØº¸°í ½ÇÁ¦ °í¼º´É ¼­¹öÀÇ ¼ÒÄÏ ¸ðµ¨¿¡ ´ëÇØ¼­µµ »ìÆìº¸±â·ÎÇÑ´Ù.

select vs. poll   °íÀüÀûÀÎ bsd socketÀÇ multiplex io ó¸® ¹æ½ÄÀº select()¿Í poll()¿¡ ´ëÇÑ À̾߱â·Î´Â poll()¹æ½ÄÀÌ select()¿¡ ºñÇØ Á»´õ ³·Àº CPUÁ¡À¯À²°ú ºü¸¥ ÀÀ´ä¼Óµµ·Î °í¼º´ÉÀÇ ¼­¹öÇÁ·Î±×·¥¿¡¼­ »ç¿ëµÇ°í ÀÖ´Ù´Â À̾߱âµéÀÌ ÀϹÝÀûÀÌ´Ù.
linuxÀÇ °æ¿ì 2.0Àü¿¡´Â poll()ÀÌ ±¸ÇöµÇ¾î ÀÖÁö ¾Ê¾Æ select() system callÀ» ¸ÅÇÎÇÏ¿© poll()À» ±¸ÇöÇÏ¿´À¸¸ç, 2.0ÀÌÈÄ¿¡´Â poll()ÀÌ ±¸ÇöµÇ¾î ¹Ý´ë·Î select()°¡ poll()ÀÇ ¸ÅÇÎ system call·Î ¹Ù²î¾ú´Ù.

  ±×·¸´Ù¸é ¿Ö? poll()¹æ½ÄÀÌ ´õ select()º¸´Ù È¿À²ÀûÀΰ¡? ½±°Ô »ý°¢Çϸé poll()ÀÌ Á»´õ low levelÀÇ Ã³¸®·Î system callÀÇ È£ÃâÀÌ select()º¸´Ù Àû±â ¶§¹®ÀÌ´Ù. selectÀÇ °æ¿ì´Â ó¸®ÇϰíÀÚ ÇÏ´Â socket¸¸À» °¨½ÃÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, max filedescriptor¸¸Å­À» Ç×»ó loop¸¦ µ¹¸ç ó¸®ÇؾßÇϰí pollÀº ÀÌ¿¡ ºñÇØ ¿øÇÏ´Â ¸¸Å­¸¸ max·Î ÁöÁ¤Çؼ­ ´Ã¾î³ª´Â ¸¸Å­ loop¸¦ µ·´Ù. ÇÏÁö¸¸ select()°¡ poll() º¸´Ù »ç¿ëÇϱⰡ Á¶±Ý´õ ½±°í poll()À» ÀÌ¿ëÇÏ¿© select()¸¦ ±¸ÇöÇϱ⵵ ÇÑ´Ù. pollÀÌ selectº¸´Ù È¿À²ÀûÀÌÁö¸¸ Á¢¼Ó¼ö°¡ ´Ã¾î³ª¸é ¿ÀÈ÷·Á fd´ç üũ ¸¶½ºÅ©ÀÇ Å©±â°¡ select´Â 3bitÀε¥ ºñÇØ, pollÀº 6Byte(À̺κРȮ½ÇÇÏÁø ¾ÊÀ½)Á¤µµÀ̹ǷΠ¾çÀÌ ¸¹¾ÆÁö¸é ¿ÀÈ÷·Á selectº¸´Ù ´õ ¸¹Àº overhead°¡ Á¸ÀçÇÏ¿© ¼º´ÉÀÌ ´õ ¶³¾îÁø´Ù´Â ÀÌ¿¡ ´ëÇÑ º¥Ä¡¸¶Å·µµ Á¸ÀçÇÑ´Ù. ƯÈ÷ ¸®´ª½º¿¡¼­´Â ±×·¸´Ù´Â ¾ê±äµ¥, ÀÌ·Î ÀÎÇØ ±×¸® ÁÁÀº ¼Ò¸®´Â µè°í ÀÖÁö ¸øÇϱäÇÏ´Ù.

  °íÀüÀûÀÎ select/poll¿¡¼­ÀÇ ¼º´É Çâ»ó ¹æ¹ýÀ¸·Î´Â multiple accept°¡ ÀÖ´Ù. ÀÌ ¹æ¹ýÀº process fork¹æ½Ä¿¡¼­ ¿¹¸¦ µéÀÚ¸é child¸¦ spawning½ÃÄÑ(listen poolÇü¼º), accept¸¦ ¹Þ¾Æ recv/send¸¦ ÇØÁÖ°í ²÷¾îÁÖ´Â ÀϹÝÀûÀÎ request-response-close·Î À̾îÁö´Â webserver styleÀÇ ±¸Çö ¹æ½ÄÀ̸ç, À̸¦ ÀÌ¿ëÇÑ º¥Ä¡¸¶Å·¿¡¼­ ÁÁÀº È¿À²À» º¸À̰í ÀÖ´Ù.
  ¶ÇÇÑ °íÀüÀûÀÎ select, poll ÀÚü¿¡ ´ëÇÑ ¼º´É Çâ»ó ÆÐÄ¡µµ ¹°·Ð Á¸ÀçÇϰí ÀÖ´Ù.

examples: Unix Network Programming 2eÀÇ poll°ú select ±¸Çö¿¹Á¦, multiple accept, multiple accept2
articles: Select() vs. Poll(),

/dev/poll   /dev/pollÀº poll()ÀÇ Ã³¸® ¹æ½ÄÀÌ kernel³»ÀÇ file descriptor ¸¦ ¸ðµÎ µÚÁ®¼­ ÀÀ´ä setÀ» ±¸¼ºÇÏ´Â ¹æ½ÄÀÇ ºñÈ¿À²¼ºÀ» ±Øº¹Çϱâ À§ÇØ ³ª¿Â ¹æ½ÄÀ¸·Î ±âº»ÀûÀ¸·Î event driven¹æ½ÄÀ¸·Î ÀÌ·ç¾îÁø pollÀÇ ¼º´É °³¼±¹æ½ÄÀÌ´Ù. pollÀ» ÀåÄ¡ ÀÔÃâ·Â ¹æ½ÄÀ¸·Î ¹Ù²Ù¾î³õÀº °ÍÀ̶ó°í º¼ ¼ö ÀÖ´Ù. º¥Ä¡¸¶Å·¿¡¼­ linux /dev/pollÀÌ ¼º´ÉÀÌ Á¦´ë·Î ³ª¿ÀÁö ¾Ê´Â ÀÌÀ¯´Â, /dev/pollÀÇ ±¸Çö¿¡ ¹ö±×°¡ ÀÖ´Ù´Â À̾߱⵵ ÀÖ´Ù.

patches: dev_poll kernel patch(kernel 2.2.14,/ kernel 2.4.3) from here

RT Signal   Ä¿³Î 2.2¿¡¼­ºÎÅÍ RealTime Signal(Posix RealTime Signal)À» Áö¿øÇϱ⠽ÃÀÛÇß´Ù. ±âÁ¸¿¡ signalÀ» ÀÌ¿ëÇÑ ³»¿ëÀ¸·Î sigio¸¦ ÀÌ¿ëÇÑ async io(Ÿ ¿î¿µÃ¼Á¦¿¡¼­´Â aio_* function calls·Î µÈ °Íµµ ÀÖÀ½) ¿¡¼­ ¾²¿´°í 2.2°¡ ³ª¿À±âÀü±îÁö´Â ÆÐÄ¡¸¦ ÅëÇØ ºñµ¿±â io¸¦ »ç¿ëÇÒ ¼ö´Â ÀÖ¾ú´Ù. sigio¸¦ ÀÌ¿ëÇÑ signal ±â¹Ý ¼ÒÄÏ ¼­¹öÀÇ ¿¹Á¦µµ stevensÀÇ Unix Network Programming°°Àº ¼­ÀûÀ» ÅëÇØ¼­µµ ¼Ò°³µÈ ¹ÙÀÖ´Ù. LinuxÀÇ RT signal¹æ½ÄÀº ±âÁ¸ signal ±â¹Ý ÇÁ·Î±×·¥µéº¸´Ù´Â Á»´õ Á¢±ÙÇϱ⠽¬¿î ¹æ¹ýÀ¸·Î PollÀ» ´ëüÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ´Ù. (poll()¿¡¼­ »ç¿ëÇÏ´Â POLL_IN, POLL_OUT, POLL_ERR µîÀ» ±×´ë·Î »ç¿ëÇÑ´Ù.) RT SignalÀÇ ÀåÁ¡(ȤÀº sigio·Î ¸¸µé¾îÁø °ÍµéÀÇ ÀåÁ¡Àϼöµµ ÀÖ´Ù.)À̶ó¸é, signalÀ» µî·ÏÇØ³õ°í ÇØ´çÇÏ´Â À̺¥Æ®°¡ ¹ß»ýÇϱâ Àü±îÁö´Â µÇ°í sigwaitinfo system callÀ» ÅëÇØ ´ë±âÇϰí ÀÖ´Ù°¡, À̺¥Æ®°¡ ¹ß»ýÇϸé, Á¤ÇصРsignal handler¸¦ ÅëÇØ 󸮸¦ ÇÏ´Â ¹æ½ÄÀÌ´Ù.(¶ÇÇÑ timeoutµµ Áö¿øÇÑ´Ù.) ¹°·Ð ±âÁ¸ÀÇ ±¸Çö ¹æ½Ä¿¡ ºñÇØ ³·Àº CPUÁ¡À¯À²°ú ºü¸¥ ÀÀ´ä ¼Óµµ, high load¿¡¼­µµ ¾ÈÁ¤µÇ°í ÀϰüµÈ ¼º´ÉÀ» À¯ÁöÇϰí ÀÖ´Ù.
 5000°³ÀÇ ¼ÒÄÏ Á¢¼Ó°ú high load¿¡¼­µµ ±²ÀåÈ÷ ÁÁÀº ¼º´ÉÀ» ³»°í ÀÖ´Ù´Â º¸°í°¡ ÀÖ´Ù. ÇÏÁö¸¸ RT SignalÀÇ ´ÜÁ¡Àº Á¦ÇÑµÈ signal resource·Î ÀÎÇØ, signal overflow°¡ µÇ¸é ´õÀÌ»ó »õ·Î¿î Á¢¼ÓÀ» ó¸®ÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ ¶§¿¡´Â ±âÁ¸ÀÇ poll()ÂÊÀ¸·Î 󸮸¦ µ¹·Á ÇØ°áÇϴ ȥÇÕµÈ ±¸Çö ¹æ¹ýÀ» ¾²±âµµ ÇÑ´Ù.

 À̸¦ ÇØ°áÇϱâÀ§ÇØ Vitaly¶ó´Â »ç¶÷ÀÌ Signal-per-fd¶ó´Â kernel patch¸¦ ³»³õ¾ÒÀ¸¸ç ±âÁ¸ÀÇ kernelÀÇ signal queue°¡ fdº°·Î multiple event¸¦ ¹Þ¾Æ³»¾î¾ß ÇϹǷÎ, high load½Ã¿¡ overflow°¡ ÀϾ ¼ö ÀÖ´Ù´Â ´ÜÁ¡¿¡ Âø¾È, fdº°·Î ´Ü ÇϳªÀÇ signal event¸¸À» °¡Áú ¼ö ÀÖµµ·Ï °íÃÆ´Ù°í ÇÑ´Ù. À̸¦ ÀÌ¿ëÇÏ¿© ±âÁ¸ÀÇ ¹æ½Äµé°úÀÇ ¼º´É ºÐ¼®À» ÇÑ paper´Â ¾Æ·¡¿¡ ÀÖ´Ù.
 ÇÑÆí, Linux RT Signal·Î ±¸ÇöµÈ °ÍÀ¸·Î´Â phhttpd°¡ ÀÖ´Ù.

 ÃÖ±Ù ÇÊÀÚ°¡ Linux RT Signal(signal-per-fd´Â ¾ÆÁ÷ Ãß°¡ ±¸ÇöÁß)·Î ¸¸µç, ¿Ïº®ÇÑ(???) Concurrent Echo Server ¿¹Á¦¸¦ ¾Æ·¡(rtsig_echoserver.cpp)¿¡ ¸µÅ©Çسõ¾Ò´Ù.

examples: rtsig_echoserver.cpp, sigio_example
articles: Signal-per-fd release document,
patches: Signal-per-fd kernel 2.4.4 patch, dynhash kernel patch
papers:
 A scalable and explicit event delivery mechanism for UNIX [usenix99],
 Scalability of Linux Event-Dispatch Mecanism [Signal-per-fd],
 Linux Kernel Hash Table Behavior [ring buffer],
 Scalable Network IO in Linux.pdf [RTsig]
 Analyzing_the_Overload_Behavior_of_a_Simple_Web_Server[sigwaitinfo4]

Server Frameworks  ½ÇÁ¦·Î Socket ¼­¹ö¸¦ Á¦ÀÛÇÒ ¶§¿¡´Â UNIX Network ProgrammingÃ¥À» º¸¸é, ¿©·¯°¡Áö ¼­¹ö ¸ðµ¨ÀÌ ³ª¿À´Âµ¥, ±×Áß¿¡¼­µµ °¡Àå ¸¹ÀÌ Âü°íÇÏ´Â ÂÊÀº concurrent socket serverÀÏ °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ±¸Çö ¹æ½ÄÀº ¼­¹öÀÇ ¼º°Ý°ú ÆÐŶÀÇ ¼Û¼ö½Å ÇüÅ µî¿¡ µû¶ó, ±× ±¸Á¶¸¦ ¾î¶»°Ô °¡Á®°¡´À³Ä¿¡ ¸¹Àº °ü½ÉÀÌ ÀÖÀ» °ÍÀÌ´Ù.
usenet newsgroupÀÇ comp.programing.threads³ª comp.unix.programmer µîÀ» °Ë»öÀ» ÇØº¸°Å³ª Áú¹®À» ¿Ã·Áº¸¸é, ´ëºÎºÐÀÇ ´äº¯Àº ´ÙÀ½°ú °°ÀÌ Á¤¸®µÉ ¼ö ÀÖ´Ù°í º»´Ù.

1. linux¿¡¼­´Â 1000+ÀÇ Å¬¶óÀÌ¾ðÆ® Ã³¸®¿¡µµ ¹®Á¦°¡ ¾øÀ¸¸ç, ´ÜÁö ¹®Á¦°¡ µÈ´Ù¸é, RAMÀÇ Å©±âÀÌ´Ù.
2. linuxÀÇ ¼ÒÄÏ ¸ðµ¨Àº ÀϹÝÀûÀ¸·Î multiplexing io¸¦ »ç¿ëÇÏ¿©, select()º¸´Ù´Â poll()ÀÌ ´Ù¼Ò 󸮰¡ ¸Å²ô·´°í ºü¸£´Ù. 3000°³ µ¿½Ã Á¢¼Ó Ŭ¶óÀ̾ðÆ®À̳»¶ó¸é ÀÌ ±¸Á¶¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¸¸¾à 8000+Á¤µµ¸¦ ó¸®ÇؾßÇÑ´Ù¸é sigio¸¦ °í·ÁÇØº¼¸¸ ÇÏ´Ù.
3. ó¸® ¹æ½Ä¿¡ ÀÖ¾î, readÀü¿ë multiplexing io 1thread¿Í ´Ù¼ö°³ÀÇ writeÀü¿ë thread°¡ Á»´õ È¿À²ÀÌ ÁÁ´Ù.
4. sigio³ª ¼º´É °³¼±µÈ poll()À» ¾²´Â °ÍÀÌ CPU »ç¿ëÀ²À̶ó´øÁö È¿À²ÀûÀÎ ¸®¼Ò½º »ç¿ëÀ» À§Çؼ­´Â ÁÁÀ» ¼öµµ ÀÖ´Ù. ÇÏÁö¸¸ linuxÀÇ /dev/poll ±¸Çö¿¡¼­ ¹ö±×°¡ ÀÖ´Ù.

articles: 1000+ Client¿¡¼­ °í·ÁÇÒÁ¡, Which_is_more_faster_socket_model, How can I multiple read() with threads
papers: Design Framework For highly Concurrent Systems, ACE frameworks

Other Tuning Points   Linux¿¡¼­´Â Beowulf Super Clustering Server ¿¡¼­ »ç¿ëµÈ channel bondingÀ» kernel 2.4ºÎÅÍ´Â Á¤½ÄÀ¸·Î Æ÷ÇÔ½ÃÄ×´Ù. channel bondingÀº ÇѸ¶µð·Î 2°³ÀÇ NICÀ» ÇϳªÀÇ NICó·³ »ç¿ëÇϵµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í 2°³ÀÌ»óÀÇ NIC¸¦ »ç¿ëÇÏ´Â °æ¿ì, °­Á¦·Î IRQ¸¦ sharingÀ» Çϵµ·Ï ÇÏ¸é ¼º´ÉÀÌ ³ª¾ÆÁø´Ù´Â ¼³ÀÌ Àִµ¥, ÀÌ¿¡ ´ëÇÑ ¹®ÇåÀº Á»´õ ã¾Æº¼ ¿¹Á¤ÀÌ´Ù. ¾Æ·¡´Â ÀÌ ¹®¼­³»¿¡¼­ ´Ù·çÁö ¾ÊÀº ¶Ç´Ù¸¥ Æ©´×¿¡ °ü·ÃµÈ »çÇ×À» ´Ù·ç°íÀÚÇÑ´Ù.

patches: fast socket close kernel 2.2.x patch, improved malloc patch
tunning: zeus server os tunning guide
articles: How many thread can I use with Linux

Patched Packages KERNEL 2.4.5 with /dev/poll and signal-per-fd patched
: û¾Æ¿¡¼­ »ç¿ëµÈ kernel 2.4.5 tarballÀÌ´Ù.

  tarball: linux-2.4.5-chonga1.tar.gz

GLIBC v2.2.2 with pthread mysql tunning
: MAX_PTHREAD_NUM=4096, rpm4.0
: mysql siteÀÇ linux glibc-2.2.2 patch Àû¿ëÇØ¼­ ´Ù½Ã ÆÐŰ¡Çß´Ù.

  srpms: glibc-2.2.2-10.src.rpm
  rpms: glibc-2.2.2-10.i386.rpm, glibc-common-2.2.2-10.i386.rpm, glibc-profile-2.2.2-10.i386.rpm, glibc-devel-2.2.2-10.i386.rpm, nscd-2.2.2-10.i386.rpm

Other Links Chuck Lever's Linux Scalability March/Aprial 2000 Status Report
Usenix symposium
Client 10000 project
linux¿¡¼­ÀÇ dummy client socket Á¢¼Ó Å×½ºÆ®


1995-2012 ¾î¸°¹Ì¸£(email¡ã) ¡¤ ¹ýÀû¾Ë¸² | MW 2367Àϰ, WR 2110Àϰ