Linux£¬×÷Ϊ¿ªÔ´²Ù×÷ϵͳµÄٮٮÕߣ¬Æ¾½èÆäÇ¿´óµÄ¹¦ÄÜ¡¢¸ß¶ÈµÄÁé»îÐԺ͹㷺µÄÓ¦Óó¡¾°£¬ÔÚ·þÎñÆ÷¡¢Ç¶Èëʽϵͳ¡¢ÔƼÆËãµÈ¶à¸öÁìÓòÕ¼¾ÝÖ÷µ¼µØÎ»
È»¶ø£¬ÔÚLinux»·¾³Ï¿ª·¢Ó¦ÓóÌÐòʱ£¬¿ª·¢Õß³£³£»áÓöµ½Ò»¸ö²»¿ÉºöÊÓµÄÎÊÌ⡪¡ª³ÌÐò×èÈû
±¾ÎĽ«ÉîÈë̽ÌÖLinux³ÌÐò×èÈûµÄ³ÉÒò¡¢Ó°Ïì¼°Ó¦¶Ô²ßÂÔ£¬Ö¼ÔÚ°ïÖú¿ª·¢Õ߸üÓÐЧµØ¹ÜÀíºÍÓÅ»¯³ÌÐòÐÔÄÜ
Ò»¡¢Linux³ÌÐò×èÈûµÄ»ù±¾¸ÅÄî ³ÌÐò×èÈû£¬¼ò¶øÑÔÖ®£¬ÊÇÖ¸³ÌÐòÔÚÖ´Ðйý³ÌÖÐÒòµÈ´ýij¸öÌõ¼þ³ÉÁ¢»ò×ÊÔ´¿ÉÓöøÔÝÍ£Ö´ÐеÄ״̬
ÔÚLinuxϵͳÖУ¬ÕâÖֵȴý¿ÉÄÜÉæ¼°I/O²Ù×÷£¨ÈçÎļþ¶Áд¡¢ÍøÂçͨÐÅ£©¡¢½ø³Ìͬ²½£¨È绥³âËø¡¢Ìõ¼þ±äÁ¿£©¡¢ÏµÍ³µ÷Óã¨ÈçµÈ´ý×Ó½ø³Ì½áÊø£©µÈ¶àÖÖÇé¿ö
µ±³ÌÐò½øÈë×èÈû״̬£¬Ëü½«ÎÞ·¨¼ÌÐøÖ´ÐкóÐø´úÂ룬ֱµ½µÈ´ýµÄʼþ·¢Éú»ò×ÊÔ´±»ÊÍ·Å£¬´Ó¶ø±»²Ù×÷ÏµÍ³ÖØÐµ÷¶ÈÖ´ÐÐ
¶þ¡¢³ÌÐò×èÈûµÄ³ÉÒò·ÖÎö 1.I/O²Ù×÷×èÈû£º -´ÅÅÌI/O£º¶Áд´óÐÍÎļþ»òÊý¾Ý¿â²Ù×÷ʱ£¬Èô´ÅÅÌÏìÓ¦ËÙ¶ÈÂý£¬³ÌÐò½«³¤Ê±¼äµÈ´ýÊý¾Ý´«ÊäÍê³É
-ÍøÂçI/O£ºÍøÂçͨÐÅÖУ¬Êý¾Ý°üµÄ·¢ËͺͽÓÊÕÒÀÀµÓÚÍøÂç´ø¿íºÍÑÓ³Ù£¬¿ÉÄܵ¼Ö³ÌÐò³¤Ê±¼ä´¦Óڵȴý״̬
2.½ø³Ìͬ²½»úÖÆ£º -Ëø¾ºÕù£º¶àÏ̻߳·¾³Ï£¬¶à¸öÏ̳߳¢ÊÔͬʱ·ÃÎʹ²Ïí×ÊԴʱ£¬¿ÉÄÜ»áÒòÎªËøµÄ¾ºÕù¶ø×èÈû
-Ìõ¼þ±äÁ¿£ºÏß³ÌÔڵȴýij¸öÌõ¼þÂú×ãʱ£¨Èç¶ÓÁзǿգ©£¬»á½øÈë×èÈû״̬
3.ϵͳµ÷ÓÃ×èÈû£º -µÈ´ý×Ó½ø³Ì£º¸¸½ø³ÌʹÓÃwait»ò`waitpid`µÈ´ý×Ó½ø³Ì½áÊøÊ±£¬Èô×Ó½ø³ÌÉÐδ½áÊø£¬¸¸½ø³Ì½«×èÈû
-ÆäËûϵͳµ÷ÓãºÈçsleep¡¢pauseµÈÖ÷¶¯ÈóöCPU×ÊÔ´µÄϵͳµ÷Óã¬Ò²»áµ¼Ö³ÌÐò×èÈû
4.×ÊÔ´ÏÞÖÆ£º -ÎļþÃèÊö·ûºÄ¾¡£º´ò¿ªÎļþ¹ý¶à£¬³¬³öϵͳÏÞÖÆ£¬¿ÉÄܵ¼ÖºóÐø´ò¿ªÎļþ²Ù×÷×èÈû
-ÄÚ´æ²»×㣺ϵͳÄÚ´æ½ôÕÅʱ£¬ÉêÇëÄÚ´æ¿ÉÄܻᴥ·¢Ò³ÃæÖû»£¬µ¼Ö³ÌÐòÔÝÍ£µÈ´ýÄÚ´æ·ÖÅä
Èý¡¢³ÌÐò×èÈûµÄÓ°Ïì 1.ÏìÓ¦ÑÓ³Ù£º³ÌÐò×èÈûÖ±½Óµ¼ÖÂÓû§½çÃæ»òϵͳÏìÓ¦±äÂý£¬Ó°ÏìÓû§ÌåÑé
2.ÍÌÍÂÁ¿Ï½µ£º×èÈûµÄ³ÌÐòÎÞ·¨³ä·ÖÀûÓÃCPU×ÊÔ´£¬½µµÍÁËϵͳµÄÕûÌå´¦ÀíÄÜÁ¦
3.×ÊÔ´¾ºÕù¼Ó¾ç£º³¤Ê±¼äµÄ×èÈû¿ÉÄܼӾçCPU¡¢ÄÚ´æµÈ×ÊÔ´µÄ¾ºÕù£¬Ó°ÏìϵͳÎȶ¨ÐÔ
4.ËÀËøÓëÓÅÏȼ¶·´×ª£º¸´ÔÓµÄͬ²½»úÖÆÖУ¬×èÈû¿ÉÄܵ¼ÖÂËÀËøÎÊÌ⣬»òµÍÓÅÏȼ¶Ïß³ÌÒòµÈ´ý¸ßÓÅÏȼ¶Ïß³ÌÊÍ·Å×ÊÔ´¶øÒý·¢ÓÅÏȼ¶·´×ª
ËÄ¡¢Ó¦¶Ô²ßÂÔÓëÓÅ»¯·½·¨ 1.·Ç×èÈûI/O£º -ʹÓÃ`select`¡¢`poll`¡¢`epoll`µÈ»úÖÆÊµÏÖ¶à·¸´Óã¬ÔÊÐíµ¥¸öÏß³Ìͬʱ¼à¿Ø¶à¸öI/Oʼþ£¬¼õÉÙ×èÈûµÈ´ý
- ¶ÔÓÚÍøÂç±à³Ì£¬¿¼ÂÇʹÓÃÒì²½I/O¿â£¨Èç`libevent`¡¢`Boost.Asio`£©»òÒì²½±à³ÌÄ£ÐÍ£¨ÈçNode.js£©
2.ÓÅ»¯Ëø»úÖÆ£º - ¾¡Á¿¼õÉÙËøµÄÁ£¶È£¬Ê¹ÓöÁÐ´Ëø¡¢×ÔÐýËøµÈ¸ü¸ßЧµÄͬ²½»úÖÆ
- ±ÜÃâËøÇ¶Ì׺ÍËÀËø·çÏÕ£¬²ÉÓÃËø³¬Ê±»úÖÆ»ò³¢ÊÔËø²ßÂÔ
3.ʼþÇý¶¯±à³Ì£º - ½«³ÌÐòÂß¼Éè¼ÆÎª»ùÓÚʼþ´¥·¢£¬Í¨¹ýʼþÑ»·´¦ÀíÒ첽ʼþ£¬¼õÉÙ×èÈû
- ÀûÓûص÷º¯Êý»òPromise/Futureģʽ´¦ÀíÒì²½½á¹û
4.×ÊÔ´¹ÜÀíÓëÓÅ»¯£º - ¶¨ÆÚ¼à¿ØºÍÇåÀí²»ÔÙʹÓõÄÎļþÃèÊö·ûºÍÄÚ´æ×ÊÔ´
- ʹÓÃÄÚ´æ³Ø¡¢¶ÔÏó³ØµÈ¼¼Êõ¼õÉÙ×ÊÔ´·ÖÅäÓëÊͷŵĿªÏú
5.½ø³ÌÓëÏ̹߳ÜÀí£º - ºÏÀíÉè¼Æ½ø³ÌÓëÏ̵߳ÄÊýÁ¿ºÍÓÅÏȼ¶£¬±ÜÃâ×ÊÔ´¹ý¶È¾ºÕù
- ÀûÓÃÏ̳߳ػò½ø³Ì³Ø¼¼Êõ£¬Ìá¸ß×ÊÔ´ÀûÓÃÂʺÍÏìÓ¦ËÙ¶È
6.ÐÔÄÜ·ÖÎö¹¤¾ß£º -ʹÓÃ`strace`¡¢`ltrace`¡¢`perf`µÈ¹¤¾ß·ÖÎö³ÌÐòÐÐΪ£¬¶¨Î»×èÈûÆ¿¾±
-ͨ¹ý`top`¡¢`htop`¡¢`vmstat`µÈϵͳ¼à¿Ø¹¤¾ß£¬ÊµÊ±Á˽âϵͳ×ÊԴʹÓÃÇé¿ö
7.´úÂëÓÅ»¯ÓëÖØ¹¹£º - Éó²é´úÂ룬ÓÅ»¯Ëã·¨ºÍÊý¾Ý½á¹¹£¬¼õÉÙ²»±ØÒªµÄ¼ÆËãºÍ×ÊÔ´ÏûºÄ
- ¶ÔƵ·±µ÷Óõĺ¯Êý½øÐÐÐÔÄܵ÷ÓÅ£¬¿¼ÂÇʹÓûº´æ»òÔ¤¼ÆËã¼¼Êõ
Îå¡¢½áÂÛ Linux³ÌÐò×èÈûÊÇÒ»¸ö¸´ÔÓ¶øÆÕ±é´æÔÚµÄÎÊÌ⣬ËüÖ±½Ó¹ØÏµµ½Ó¦ÓóÌÐòµÄÐÔÄܺÍÓû§ÌåÑé
ͨ¹ýÉîÈëÀí½â×èÈûµÄ³ÉÒò£¬½áºÏ·Ç×èÈûI/O¡¢ÓÅ»¯Ëø»úÖÆ¡¢Ê¼þÇý¶¯±à³Ì¡¢×ÊÔ´¹ÜÀíÓÅ»¯¡¢½ø³ÌÓëÏ̹߳ÜÀí¡¢ÐÔÄÜ·ÖÎö¹¤¾ßÒÔ¼°´úÂëÓÅ»¯ÓëÖØ¹¹µÈ²ßÂÔ£¬¿ª·¢Õß¿ÉÒÔÓÐЧµØ¼õÉÙ³ÌÐò×èÈû£¬ÌáÉýϵͳÕûÌåµÄÔËÐÐЧÂʺÍÎȶ¨ÐÔ
ÔÚÕâ¸ö¹ý³ÌÖУ¬³ÖÐøµÄÐÔÄÜ¼à¿ØÓëµ÷ÓÅÊDZز»¿ÉÉٵĻ·½Ú£¬ËüÄܹ»°ïÖú¿ª·¢Õß¼°Ê±·¢ÏÖ²¢½â¾öDZÔÚµÄÐÔÄÜÆ¿¾±£¬È·±£Ó¦ÓóÌÐòÄܹ»Ôڸ߲¢·¢¡¢¸ß¸ºÔØ»·¾³ÏÂÎȶ¨ÔËÐÐ
×ÜÖ®£¬Ãæ¶ÔLinux³ÌÐò×èÈûµÄÌôÕ½£¬²ÉÈ¡×ۺϵÄÓ¦¶Ô²ßÂÔ£¬ÊÇʵÏÖ¸ßЧ¡¢¿É¿¿Ó¦ÓõĹؼüËùÔÚ