¸ÅÀÀ:
- ÄÚ´æ¹ÜÀíºÍ SMB 2.0
- NTFS ×ÔÐÞ¸´¹¦ÄÜ¡¢Windows Ó²¼þ´íÎ󱨸æÌåϵºÍÇý¶¯³ÌÐòÑéÖ¤³ÌÐò
- I/O Íê³É¶Ë¿Ú¡¢Ïß³Ì³ØºÍ NUMA µÄ¿ÉÉìËõÐÔ
- Hyper-V ÐéÄ⻯
Windows Server 2008 ÊÇ×îа汾µÄ Microsoft ·þÎñÆ÷ƽ̨£¬Ëü°üº¬Ðí¶àϵͳ¼¶¸ü¸Ä£¬ÕâЩ¸ü¸ÄÉæ¼°²Ù×÷ϵͳµÄËùÓй¦ÄÜÁìÓò£º´ÓÄÚ´æ¹ÜÀí
µ½Ï̵߳÷¶È£¬´ÓÍøÂçÁ¬½Óµ½°²È«£¨ÕâÀïÖ»ÁгöÁËÉÙÊý¼¸¸ö£©¡£
ÓÉÓÚ Windows Server® 2008 ºÍ Windows Vista® SP1 µÄÄÚºËÏàͬ£¬Òò´ËËü°üº¬Ðí¶àÎÒÔø¾ÔÚ֮ǰµÄ¡¶TechNet ÔÓÖ¾¡·ÎÄÕ£º¡°ÉîÈëÁ˽â Windows Vista Äںˡ±µÚ 1-3 ²¿·Ö£¨2007 Äê 2 Ô¡¢3 ÔÂºÍ 4 Ô£©ºÍ¡°ÉîÈëÁ˽â Windows Vista Óû§ÕÊ»§¿ØÖÆ¡±£¨2007 Äê 6 Ô£©ÖнéÉܹýµÄÔöÇ¿¹¦ÄÜ¡£Ö»ÓÐÆäÖеÄÉÙÊý¹¦ÄܽöÌØ¶¨ÓÚ¿Í»§¶ËÇÒ²¢Î´°üº¬ÔÚ Windows Server 2008 ÖУ¬Èç SuperFetch¡¢ReadyBoost¡¢ReadyDrive¡¢ReadyBoot ºÍ¶àýÌåÀà¼Æ»®³ÌÐò·þÎñ (MMCSS)¡£
Òò´Ë£¬ÎÒ½«²»ÔÙÖØ¸´½éÉÜ Windows Vista ÖÐÒѽéÉܹýÇÒ Windows Server 2008 ÖÐͬÑù°üº¬µÄÖØÒªÄں˱仯£¬Èç I/O ÓÅÏȼ¶ÅÅÁС¢ÐµÄÒýµ¼Ìåϵ½á¹¹ BitLockerTM¡¢´úÂëÍêÕûÐÔºÍÇ¿ÖÆÍêÕûÐÔ¼¶±ð¡£ÎÒ½«Öصã½éÉÜ֮ǰÕâЩÎÄÕÂÖÐÎ´Éæ¼°µ½µÄ¹Ø¼ü±ä»¯£¬°üÀ¨Óë¿É¿¿ÐÔ¡¢ÐÔÄÜ¡¢¿ÉÉìËõÐÔÒÔ¼°Ð嵀 Microsoft ¹ÜÀí³ÌÐò¼ÆËã»úÐéÄ⻯¼¼Êõ Hyper-VTM Ïà¹ØµÄ±ä»¯¡£
ͬÑù£¬Óë֮ǰµÄÎÄÕÂÒ»Ñù£¬±¾Îĵķ¶Î§½öÏÞÓÚ²Ù×÷ϵͳÄÚºË Ntoskrnl.exe ÒÔ¼°ÓëÆä½ôÃܹØÁªµÄϵͳ×é¼þµÄ±ä»¯¡£ÀýÈ磬±¾ÎIJ»»á½éÉܰ²×°£¨WIM »ò Windows® Ó³Ïñ¸ñʽºÍ»ùÓÚ×é¼þµÄ·þÎñ£©¡¢¹ÜÀí£¨×é²ßÂÔºÍ Active Directory® ¸Ä½ø£©¡¢³£¹æÕï¶ÏºÍ¼à¿Ø£¨Windows Õï¶Ï»ù´¡½á¹¹£©¡¢ºËÐÄÍøÂ磨еķÀ»ðǽºÍ TCP/IP ʵÏÖ£©¡¢Server Core »ò·þÎñÆ÷½ÇÉ«µÄ±ä»¯¡£
ÓÃÓÚ¶à´¦ÀíÆ÷ϵͳ
ϵͳµÄÆäÖÐÒ»Ïîµ×²ã±ä»¯ÊÇ Windows Server 2008 ½öÌṩÉè¼ÆÓÃÓÚ¶à´¦ÀíÆ÷ϵͳµÄÄں˰汾¡£¹ýÈ¥£¬Windows ÓµÓÐרÃÅÕë¶Ôµ¥ CPU ¼ÆËã»úÉϵĵ¥´¦ÀíÆ÷µÄ°æ±¾£¬ÒòΪ¸Ã°æ±¾¿Éͨ¹ýºöÂÔ½öÔÚ¶à´¦ÀíÆ÷»·¾³ÏÂÐèÒªµÄͬ²½´úÂëÀ´»ñµÃÉÔºÃÒ»µãµÄÐÔÄÜ¡£Ëæ×ÅÓ²¼þËٶȱäµÃÔ½À´Ô½¿ì£¬ÓÉÓÅ»¯´øÀ´µÄÐÔÄÜÌá¸ß¼¸ºõ¿ÉºöÂÔ²»¼Æ£¬²¢ÇÒÈç½ñµÄ´ó¶àÊý·þÎñÆ÷ϵͳ¶¼°üº¬¶à¸ö´¦ÀíÆ÷£¬ËùÒÔÒѲ»ÔÙÐèÒªµ¥´¦ÀíÆ÷µÄÄں˰汾¡£
ͼ 1 ÏÔʾÁË Windows Server 2008 Äں˵ĸ÷¸ö°æ±¾£¬ÏµÍ³ÖоßÌåʹÓÃÄĸö°æ±¾È¡¾öÓÚ²Ù×÷ϵͳÊǵ÷ÊÔ°æ±¾£¨Checked °æ±¾£©»¹ÊÇÁãÊÛ°æ±¾¡¢°²×°Îª 32 λ»¹ÊÇ 64 루Itanium¡¢Intel 64 »ò AMD64£©£¬ÒÔ¼°Èç¹ûÊÇ 32 λ°²×°£¬ÏµÍ³µÄÎïÀíÄÚ´æÊÇ·ñ³¬¹ý 4GB »òÖ§³ÖÊý¾ÝÖ´Ðб£»¤ (DEP)¡£Windows Server 2008 »¹¿ÉÄÜÊÇ×îºóÒ»¸öÌṩ 32 λ°æ±¾µÄ Windows Server ²Ù×÷ϵͳ¡£

Figure 1 Windows Server 2008 Äں˰汾
| ÄÚºË | 32 λ | 64 λ |
| ¶à´¦ÀíÆ÷ | ÊÇ | ÊÇ |
| ¶à´¦ÀíÆ÷ Checked °æ±¾ | ÊÇ | ÊÇ |
| ¶à´¦ÀíÆ÷ÎïÀíµØÖ·À©Õ¹ (PAE) | ÊÇ | ·ñ |
| ¶à´¦ÀíÆ÷ PAE Checked °æ±¾ | ÊÇ | ·ñ |
Windows Server µÄÿ¸ö°æ±¾¾ù×¢ÖØ¸ÄÉÆ·þÎñÆ÷Ö÷ÒªÓ¦Óó¡ºÏ£¨ÈçÎļþ·þÎñ¡¢ÍøÂç I/O ºÍÄÚ´æ¹ÜÀí£©µÄÐÔÄÜ¡£´ËÍ⣬Windows Server 2008 »¹°üº¬Ðí¶à±ä»¯ºÍй¦ÄÜ£¬ÒÔʹ Windows ÄܸüºÃµØÀûÓÃеÄÓ²¼þÌåϵ½á¹¹£¬ÊÊÓ¦¸ßÑÓ³ÙÍøÂç²¢Ïû³ý֮ǰµÄ Windows °æ±¾ÖÐÏÞÖÆÐÔÄܵį¿¾±¡£±¾²¿·Ö½«»Ø¹ËÄÚ´æ¹ÜÀíÆ÷¡¢I/O ϵͳ·½ÃæµÄÔöÇ¿¹¦ÄÜ£¬²¢½éÉÜеÄÍøÂçÎļþϵͳ SMB 2.0¡£
ÄÚ´æ¹ÜÀí
Windows Server 2008 ÖеÄÄÚ´æ¹ÜÀíÆ÷°üº¬¶àÏîÐÔÄÜÔöÇ¿¹¦ÄÜ¡£ÀýÈ磬Óë Windows Server 2003 Ïà±È£¬´Ó·ÖÒ³ÎļþÌáÈ¡Êý¾Ý»ò¶ÔÓ³ÉäÎļþÖ´ÐÐÔ¤¶Á I/O ʱ£¬Ëü½«Ê¹ÓÃÊýÁ¿¸üÉÙµ«¹æÄ£¸ü´óµÄ´ÅÅÌ I/O¡£I/O ϵͳÖеı仯ÊǴٳɸü´ó¹æÄ£µÄÎļþ I/O µÄǰÌᣬËüÈ¥³ýÁË×Ô Windows NT® µÄµÚÒ»¸ö°æ±¾ÒÔÀ´Ò»Ö±´æÔÚµÄ 64KB µÄ I/O ´óСÏÞÖÆ¡£
²¢ÇÒ£¬±ØÐë×¢Ò⣺Óë Windows Server 2003 Ïà±È£¬Ê¹Óà Windows Server 2008 ʱ£¬Cache Manager ´ÓÓ³ÉäÎļþ½øÐÐÔ¤¶Á£¨²Â²âÐÔ¶ÁÈ¡£©µÄÊý¾Ý¶Áȡͨ³£Òª´óÁ½±¶£¬²¢ÇÒ½«Ö±½Ó½øÈë´ý»úÁÐ±í£¨ÏµÍ³µÄ´úÂëºÍÊý¾Ý»º´æ£©¡£ÕâÖÖÐÐΪȡ´úÁË Cache Manager Ó³ÉäÐéÄâÄÚ´æ²¢½«Êý¾Ý¶ÁÈëϵͳ¹¤×÷¼¯£¨ÓÉÄÚ´æ¹ÜÀíÆ÷Ϊϵͳ·ÖÅäµÄÄڴ棩µÄÐèÒª£¬¶øÕâÖÖÐèÒª¿ÉÄܵ¼ÖÂÆäËûʹÓÃÖеĴúÂë»òÊý¾Ý±»²»±ØÒªµØÇý³ö¹¤×÷¼¯¡£
µ±°ÑÊý¾ÝдÈë·ÖÒ³Îļþʱ£¬ÄÚ´æ¹ÜÀíÆ÷Ò²»áÖ´Ðиü´ó¹æÄ£µÄ I/O¡£¾¡¹Ü Windows Server 2003 ³£³£Ö´ÐÐ±È 64KB »¹Ð¡µÄдÈë²Ù×÷£¬µ«ÔÚ Windows Server 2008 ÖУ¬ÄÚ´æ¹ÜÀíÆ÷ͨ³£Ê¹Óà 1MB µÄдÈë²Ù×÷¡£
³ýͨ¹ý¼õÉÙдÈë·ÖÒ³ÎļþµÄ´ÎÊýÀ´Ìá¸ßÐÔÄÜÍ⣬½Ï´ó¹æÄ£µÄдÈë²Ù×÷»¹¿É¼õÉÙ·ÖÒ³ÎļþÖеÄË鯬¡£¶øËüÓÖ·´¹ýÀ´¼õÉÙÁ˶Á»Ø¶à¸öÒ³ÃæËùÐèµÄ¶ÁÈ¡´ÎÊýºÍ´ÅÅÌѰµÀ´ÎÊý£¬ÒòΪÈç¹û²»ÏàÁÚ£¬¶ÁÈ¡ºÍѰµÀ´ÎÊý¶¼»á¶àµÃ¶à¡£
ÄÚ´æ¹ÜÀíÆ÷»¹»á³¢ÊÔд³öÆäËûÒÑÐÞ¸ÄÒ³Ãæ£¨ÕâÐ©Ò³ÃæÓ뽫Ҫд³öµ½ËùÓµÓнø³ÌµÄµØÖ·¿Õ¼äÖеÄÒ³ÃæÏàÁÚ£©£¬²¢ÇһὫ·ÖÒ³Îļþ·Åµ½ÒѰüº¬ÆäËûÏàÁÚÒ³ÃæµÄÇøÓòÖС£ÕâÖÖ·½·¨Ò²¿É¾¡Á¿¼õÉÙË鯬²¢Ìá¸ßÐÔÄÜ£¬ÒòΪÄÇЩ¿ÉÄÜ»á×îÖÕд³öµ½·ÖÒ³ÎļþÖеÄÒ³Ãæ¾ùÒѱ»Ð´Èë¡£´ËÍ⣬Ëü»¹¼õÉÙÁËÒýÈë´óÁ¿ÏàÁÚ½ø³ÌÒ³ÃæËùÐèµÄ·ÖÒ³¶ÁÈ¡´ÎÊý¡£²é¿´²àÀ¸¡°ÊÔÑ飺²é¿´´ó¹æÄ£µÄ´ÅÅÌ I/O ²Ù×÷¡±Á˽âÓйØÄÚ´æ¹ÜÀíÆ÷ʹÓôó¹æÄ£µÄ I/O ·½ÃæµÄ¸ü¶àÐÅÏ¢¡£
SMB 2.0
×Ô´ÓÎļþ·þÎñ¹¦Äܱ»ÒýÈëµ½ Windows ÖÐÒÔÀ´£¬·þÎñÆ÷ÏûÏ¢¿é (SMB) Ô¶³ÌÎļþϵͳÐÒ飨Ҳ³ÆÎªÍ¨Óà Internet Îļþϵͳ (CIFS)£©¾ÍÒѳÉΪ Windows Îļþ·þÎñµÄ»ù´¡¡£ÔÚ¹ýÈ¥µÄ¼¸ÄêÖУ¬SMB µÄÉè¼ÆÏÞÖÆÖÆÔ¼ÁË Windows Îļþ·þÎñµÄÐÔÄܺÍÀûÓÃеı¾µØÎļþϵͳ¹¦ÄܵÄÄÜÁ¦¡£ÀýÈ磬µ¥¸öÏûÏ¢ÄÜ´«ÊäµÄ×î´ó»º³åÇø´óСΪԼ 60KB£¬²¢ÇÒ SMB 1.0 ÎÞ·¨Ê¶±ð Windows Vista ºÍ Windows Server 2008 ÖÐÐÂÔöµÄ NTFS ¿Í»§¶Ë·ûºÅÁ´½Ó¡£
Windows Vista ºÍ Windows Server 2008 ÒýÈëÁË SMB 2.0£¬ËüÊǿͻ§¶ËºÍ·þÎñÆ÷¶¼Ö§³Öʱ Windows ËùʹÓõÄÒ»ÖÖÐÂÐÍÔ¶³ÌÎļþ·þÎñÐÒé¡£³ýÄÜÕýÈ·´¦Àí¿Í»§¶Ë·ûºÅÁ´½ÓºÍÆäËû NTFS ÔöÇ¿¹¦ÄÜÍ⣬SMB 2.0 »¹Ê¹ÓÃÅú´¦ÀíÀ´×îС»¯¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼äµÄÐÅÏ¢½»»»ÊýÁ¿¡£Åú´¦Àí¿ÉÌá¸ß¹ãÓòÍø (WAN) Ö®Àà¸ßÑÓ³ÙÍøÂçµÄÍÌÍÂÁ¿£¬ÒòΪËüÔÊÐíͬʱ´«Êä¸ü¶àÊý¾Ý¡£
SMB 1.0 Õë¶Ôµ¥¸öÎļþ°´Ë³ÐòÖ´ÐÐ I/O£¬¶ø SMB 2.0 ÔòʵÏÖÁË I/O ¹ÜµÀ£¬´Ó¶ø¿ÉÕë¶ÔͬһÎļþÖ´Ðжà¸ö²¢·¢ I/O¡£Ëüͨ¹ýºâÁ¿¿Í»§¶ËÓÃÓÚδÍê³É I/O µÄ·þÎñÆ÷ÄÚ´æÊýÁ¿À´¾ö¶¨¹ÜµÀµÄÉî¶È¡£
ÓÉÓÚ Windows I/O ÄÚ´æ¹ÜÀíÆ÷ºÍ I/O ϵͳÒÔ¼° TCP/IP ½ÓÊÕ´°¿Ú×Ô¶¯µ÷½Ú·½ÃæµÄ±ä»¯ºÍÎļþ¸´ÖÆÒýÇæµÄ¸Ä½ø£¬SMB 2.0 ÏÔÖøÌá¸ßÁËÍÌÍÂÁ¿²¢¼õÉÙÁË´óÐÍ´«ÊäµÄÎļþ¸´ÖÆÊ±¼ä¡£ÓÉÓÚÁ½ÖÖ²Ù×÷ϵͳ¶¼ÊµÏÖÁË SMB 2.0£¬ËùÒÔ²¿Êð Windows Server 2008 Îļþ·þÎñÆ÷ºÍ Windows Vista ¿Í»§¶Ë¼´¿ÉʹÓà SMB 2.0 ²¢ÊµÏÖÕâЩÐÔÄÜÓŵ㡣
ʹÓà NTFS ×ÔÐÞ¸´¹¦ÄÜÌá¸ß¿É¿¿ÐÔ
¿É¿¿ÐÔÊÇÒ»¸ö¹Ø¼ü·þÎñÆ÷ÊôÐÔ£¬Windows Server 2008 Ìṩ¸÷ÖָĽøÀ´°ïÖú¹ÜÀíԱ˳³©ÔËÐÐÆä·þÎñÆ÷£¨°üÀ¨ÔÚÏß NTFS Ò»ÖÂÐÔÐÞ¸´¡¢ÐµÄÓ²¼þ´íÎ󱨸æÌåϵÒÔ¼°¶ÔÇý¶¯³ÌÐòÑéÖ¤³ÌÐòµÄÀ©Õ¹£©¡£
ÓÉÓÚÏÖÔÚʹÓõĴ洢É豸һ°ã¶¼ÒÔ TB Ϊµ¥Î»£¬Òò´Ë¶Ôij¸ö¾í½øÐÐÍÑ»úÒ»ÖÂÐÔ¼ì²é¿ÉÄÜ»áʹ·þÎñÖжÏÊýСʱ¡£¼øÓÚÐí¶à´ÅÅÌË𻵶¼¾ÖÏÞÓÚµ¥¸öÎļþ»ò²¿·ÖÔªÊý¾Ý£¬Windows Server 2008 ʵÏÖÁËÐ嵀 NTFS ×ÔÐÞ¸´¹¦ÄÜ£¬¼´¿ÉÔÚ¾í±£³ÖÁª»úµÄÇé¿öÏÂÐÞ¸´Ë𻵡£
µ± NTFS ¼ì²âµ½Ëð»µÊ±£¬Ëü½«×èÖ¹·ÃÎÊÊÜËðµÄÎļþ²¢´´½¨Ò»¸öϵͳ¹¤×÷Ị̈߳¬¸ÃÏ߳̽«¶ÔÊÜËðÊý¾Ý½á¹¹Ö´ÐÐÀàËÆ Chkdsk µÄÐÞ¸´£¬Íê³ÉºóÔÙÔÊÐí·ÃÎÊÐÞ¸´ºóµÄÎļþ¡£Ôڴ˲Ù×÷ÆÚ¼äÈÔÈ»¿ÉÒÔÕý³£·ÃÎÊÆäËûÎļþ£¬Òò¶ø×îС»¯·þÎñÖжϡ£
WHEA »ù´¡½á¹¹
Windows Server 2008 Öаüº¬ÓÐ Windows Ó²¼þ´íÎ󱨸æÌåϵ (WHEA) »ù´¡½á¹¹£¬Ëü¿ÉÒÔ¼ò»¯Ó²¼þ¹ÊÕϹÜÀí²¢Ö÷¶¯ÏìÓ¦·ÇÖÂÃü´íÎó¡£·þÎñÆ÷ͨ³£¶¼ÓÐÑϸñµÄÕý³£¹¤×÷ʱ¼ä±£Ö¤£¬Òò´Ë¼°Ê±È·¶¨²¢ÏìÓ¦´ËÀàϵͳÖеĴíÎóÖÁ¹ØÖØÒª¡£
ͨ¹ý¶ÔÀûÓÃÔÚÏß±ÀÀ£·ÖÎö (OCA) Ìá½»µ½ Microsoft µÄ±ÀÀ£½øÐзÖÎö±íÃ÷£ºÔ¼ 10% µÄ²Ù×÷ϵͳ±ÀÀ£ÊÇÔ´ÓÚÓ²¼þ¹ÊÕÏ£¬µ«È·¶¨´ËÀà±ÀÀ£µÄ¸ù±¾ÔÒòÈ´·Ç³£À§ÄÑÉõÖÁÓÚ²»¿ÉÄÜ£¬ÒòΪ±ÀÀ£Ê±Ëù»ñÈ¡µÄÓ²¼þ´íÎóÐÅÏ¢·Ç³£ÉÙ¡£´ËÍ⣬ÔÚ Windows Server 2008 ֮ǰ£¬Windows ²¢²»ÄÚÖÃÖ§³Ö¼à¿ØÉ豸µÄÔËÐÐ×´¿ö£¬Ò²Î´ÊµÏÖ¹ÊÕÏǰµÄÐÞ¸´»ò֪ͨ¡£ÆäÔÒòÔÚÓÚÓ²¼þÉ豸²¢Î´Ê¹ÓÃÒ»ÖÖͨÓõĴíÎó¸ñʽ²¢ÇÒ²»Ö§³Ö´íÎó¹ÜÀíÈí¼þ¡£
WHEA Ϊ¸÷ÖÖÆ½Ì¨É豸£¨°üÀ¨´¦ÀíÆ÷¡¢ÄÚ´æ¡¢»º´æºÍÀàËÆ PCI ºÍ PCI Express Ö®ÀàµÄ×ÜÏߣ©ÌṩÁËͳһµÄ´íÎóÔ´·¢Ïֺͱ¨¸æ»úÖÆ¡£ÆäÔÀíÊÇʵÏÖͼ 2 ÖÐËùʾµÄÌåϵ½á¹¹£¬ÆäÖкËÐÄÊÇ´íÎóÔ´µ÷ÓÃÀ´±¨¸æ´íÎóµÄÄÚºË API¡£´Ë API ÒªÇóËùÓдíÎó¶¼ÒÔͬһ·½·¨½øÐиñʽ»¯£¬È»ºóʹÓà Windows ʼþ¸ú×Ù (ETW) ʼþÀ´¼Ç¼´íÎó£¨ÑÏÖØ´íÎóÔòÔÚÖØÆôºóÔټǼ£©¡£
ͼ 2 WHEA ´íÎ󱨸æ»ù´¡½á¹¹ (µ¥»÷¸ÃͼÏñ»ñµÃ½Ï´óÊÓͼ)
ETW ÔçÔÚ Windows 2000 ÖоÍÒÑÒýÈ룬¶øµ± ETW ʹÓà WHEA ºó£¬Ó²¼þÖÆÔìÉ̺ÍÈí¼þ¹©Ó¦É̾ͿÉÇáËɵؿª·¢ÀûÓà WHEA ʼþµÄÉ豸Õï¶Ï¹ÜÀíÓ¦ÓóÌÐò¡£Èç¹ûijʼþÒÑÑÏÖØµ½×ãÒÔµ¼ÖÂϵͳ±ÀÀ££¬WHEA »áÈ·±£½«¸ÃÖÂÃü´íÎó¼Ç¼´æ´¢µ½±ÀÀ£×ª´¢ÎļþÖУ¬ÕâÑù¹ÜÀíÔ±¾Í¿ÉÈ·¶¨±ÀÀ£µÄ¸ù±¾ÔÒò¡£
WHEA µÄÁíÒ»¹Ø¼ü²¿·ÖÊÇλÓÚ %Systemroot%\System32\Pshed.dll ÖÐµÄÆ½Ì¨Ìض¨µÄÓ²¼þ´íÎóÇý¶¯³ÌÐò (PSHED)¡£ÄÚºËÓë PSHED Á´½Ó£¬¶øËüÓëÆ½Ì¨ºÍ¹Ì¼þÓ²¼þÁ¬½Ó£¬ÊµÖÊÉÏÊÇÓÃ×÷´íÎó֪ͨºÍ WHEA ´íÎ󱨸æ API Ö®¼äµÄת»»²ã¡£Microsoft ΪÿÖÖÆ½Ì¨Ìåϵ½á¹¹£¨x86¡¢x64¡¢Itanium£©ÌṩÓÐÒ»ÖÖ PSHED ²¢ÇÒ PSHED ¹«¿ªÁ˲å¼þÄ£ÐÍ£¬ËùÒÔÓ²¼þ¹©Ó¦É̺ÍÖÆÔìÉÌ¿ÉʹÓÃÌØ¶¨ÓÚÆäÆ½Ì¨µÄÐÐΪÀ´¸²¸ÇĬÈÏÐÐΪ¡£
×îºó£¬ÓëÆäËû´íÎóÔ´ÏàÁ¬µÄϵͳ×é¼þ ¡ª °üÀ¨É豸Çý¶¯³ÌÐò¡¢Ó²¼þ³éÏó²ã (HAL) ºÍÄÚºË ¡ª ¿ÉʵÏֵײãÓ²¼þ´íÎó´¦Àí³ÌÐò (LLHEL)£¨Ëü½«Ê×ÏÈ´¦Àí´íÎó×´¿ö£©¡£LLHEL µÄ¹¤×÷ÊÇ´ÓÉ豸ÖÐÌáÈ¡´íÎóÐÅÏ¢£¬Í¨Öª PSHED ÔÊÐíÆäÊÕ¼¯ÆäËûƽ̨´íÎóÐÅÏ¢£¬È»ºóµ÷ÓÃÄÚºËµÄ WHEA ´íÎ󱨸æ API¡£
Çý¶¯³ÌÐòÑéÖ¤³ÌÐò
´Ó Windows 2000 Æð£¬Ã¿¸ö Windows ¸±±¾Öж¼°üº¬ÓÐÇý¶¯³ÌÐòÑéÖ¤³ÌÐò£¬ËüÊÇÒ»¸öÓÃÓÚ¸ú×Ù³ö´íµÄÉ豸Çý¶¯³ÌÐòºÍ¹ÊÕÏÓ²¼þµÄÇ¿´ó¹¤¾ß¡£¹ÜÀíԱͨ³£½«Çý¶¯³ÌÐòÑéÖ¤³ÌÐò(%Systemroot%\System32\Verifier.exe) ÅäÖÃΪÃÜÇÐ¼à¿Ø¿ÉÄܵ¼ÖÂϵͳ±ÀÀ£µÄ¿ÉÒÉÉ豸Çý¶¯³ÌÐòµÄÐÐΪ¡£Çý¶¯³ÌÐòÑéÖ¤³ÌÐò¿É²¶»ñ·Ç·¨Çý¶¯³ÌÐò²Ù×÷£¬ÕâÑù±ÀÀ£×ª´¢Îļþ¾Í¿ÉÒÔÖ±½ÓÖ¸³ö×ï¿ý»öÊס£
֮ǰÇý¶¯³ÌÐòÑéÖ¤³ÌÐòµÄȱÏÝÔÚÓÚ´ó¶àÊýÅäÖøü¸Ä¶¼ÐèÒªÖØÐÂÆô¶¯ÏµÍ³£¬¶øÉú²ú·þÎñÆ÷Ã÷ÏÔ²»Ô¸³öÏÖÕâÖÖÇéÐΡ£Windows Server 2008 ÖеÄÇý¶¯³ÌÐòÑéÖ¤³ÌÐòͨ¹ýÈ¡Ïû×îÓÐÓÃÑéÖ¤µÄÖØÆôÒªÇ󶸏ĽøÁËÕâÒ»¹ý³Ì£¬Òò´Ë¿ÉÔÚ²»ÖØÐÂÆô¶¯ÏµÍ³µÄÇé¿ö϶ԳöÏÖÎÊÌâµÄ·þÎñÆ÷½øÐйÊÕÏÅųý¡£
´ËÍ⣬Çý¶¯³ÌÐòÑéÖ¤³ÌÐò»¹ÒýÈëÁËÈýÖÖеÄÑéÖ¤£¨Èçͼ 3 Ëùʾ£©¡£°²È«¼ì²éÈ·±£É豸Çý¶¯³ÌÐòÔÚÓÃÓÚÓëÓ¦ÓóÌÐòÁ¬½ÓµÄ¶ÔÏóÉÏÉèÖÃÁ˰²È«È¨ÏÞ¡£Ç¿ÖÆ¹ÒÆð I/O ÇëÇó²âÊÔÁËÇý¶¯³ÌÐò¶ÔÓÚÐèÁ¢¼´Íê³É¶ø·ÇÒ»¶ÎÑÓ³ÙºóÔÙÍê³ÉµÄÒì²½ I/O ²Ù×÷µÄ»Ö¸´ÄÜÁ¦¡£ÔÓÏî¼ì²éÔòÈ·ÈÏÇý¶¯³ÌÐòÓÐÎÞ´íÎóÊÍ·ÅʹÓÃÖеÄ×ÊÔ´¡¢´íÎóʹÓà Windows ¹ÜÀí¹æ·¶ (WMI) ×¢²á API ÒÔ¼°Ð¹Â©×ÊÔ´´¦Àí³ÌÐò¡£
ͼ 3 Ñ¡ÖÐ Windows Server 2008 Ñ¡ÏîµÄÇý¶¯³ÌÐòÑéÖ¤³ÌÐò (µ¥»÷¸ÃͼÏñ»ñµÃ½Ï´óÊÓͼ)
¿ÉÉìËõÐÔ
¿ÉÉìËõÐÔÊÇÖ¸²Ù×÷ϵͳ»òÓ¦ÓóÌÐòÓÐЧÀûÓöà¸ö´¦ÀíÆ÷ºÍ´óÁ¿ÄÚ´æµÄÄÜÁ¦¡£Windows µÄÿ¸ö°æ±¾¶¼»áͨ¹ý¼õÉÙ»òÈ¡ÏûʹÓÃËø£¨ËüÃǻήµÍ¶à´¦ÀíÆ÷µÄƽÐÐÐÔ£©À´Ìá¸ß¿ÉÉìËõÐÔ£¬Windows Server 2008 Ò²²»ÀýÍâ¡£
Ö´ÐмÆÊ±Æ÷³¬Ê±µÄ´úÂëÖÐÓÐÒ»¸ö½ÏСµ«È´·Ç³£ÖØÒªµÄ¸Ä½ø£¬¼´²»ÔÙÐèÒªµ÷¶È³ÌÐòËø£¨ËùÓеײãͬ²½²Ù×÷¶¼»áʹÓõÄÒ»ÖÖϵͳ·¶Î§µ÷¶È³ÌÐòËø£©¡£´Ó¶ø½µµÍÁË CPU ͬ²½¿ªÏú£¬Ê¹µÃ Windows Server 2008 ÖÕ¶Ë·þÎñÆ÷ϵͳÄÜ±È Windows Server 2003 ¶àÖ§³ÖÔ¼ 30% µÄ²¢·¢Óû§¡£
Windows Server 2008 ÖÐµÄÆäËû¿ÉÉìËõÐԸĽø°üÀ¨Íê³É¶Ë¿ÚÔöÇ¿¹¦ÄÜ¡¢ÐµÄÏ̳߳ØÊµÏÖ¡¢¸ü¼ÓÓÐЧµØÊ¹Ó÷ÇÒ»ÖÂÄÚ´æ·ÃÎÊ (NUMA) Ó²¼þÒÔ¼°¶¯Ì¬ÏµÍ³·ÖÇø¡£
¸Ä½øÁË I/O Íê³É¶Ë¿Ú´¦Àí
´ó¶àÊý¿ÉÉìËõµÄ Windows ·þÎñÆ÷Ó¦ÓóÌÐò£¨°üÀ¨ IIS¡¢SQL Server® ºÍ Exchange Server£©¶¼ÒÀ¿¿³ÆÎªÍê³É¶Ë¿ÚµÄÒ»¸ö Windows ͬ²½ API À´×î´ó³Ì¶È¼õÉÙÖ´ÐÐ I/O ²Ù×÷ʱÔÚ¶à¸öÏß³ÌÖ®¼äµÄÇл»¡£¾ßÌå·½·¨ÊÇÊ×ÏȽ«Ðµ½ÇëÇó£¨Èç Web ·þÎñÆ÷¿Í»§¶ËÁ¬½Ó£©Í¨ÖªÓëÍê³É¶Ë¿Ú¹ØÁªÆðÀ´£¬²¢Ö¸¶¨Ò»¸öÏ̳߳ØÀ´×¨Ãŵȴý֪ͨ¡£µ±ÇëÇóµ½À´Ê±£¬Windows ½«µ÷¶ÈÒ»¸öỊ̈߳¬¸ÃÏß³Ìͨ³£Ö´ÐÐÆäËû I/O ²Ù×÷£¨Èç´Ó´ÅÅ̶Áȡһ¸öÍøÒ³²¢½«Æä·¢Ë͵½¿Í»§¶Ë£©À´Íê³É¸ÃÇëÇó¡£
Òò´Ë£¬ÏàͬÏ߳̿ɾ¡¿ìµØ·µ»ØÒԵȴý¸ü¶àµÄ¿Í»§¶ËÇëÇó£¬Ïß³ÌÒì²½Ö´ÐÐ I/O ²¢½« I/O Íê³ÉÓëÍê³É¶Ë¿Ú¹ØÁªÆðÀ´¡£Ïß³ÌËæºó·µ»ØµÈ´ýÍê³É¶Ë¿Ú£¬µ±ÐÂÇëÇóµ½À´»òij¸ö I/O Íê³Éʱ£¬Íê³É¶Ë¿Ú½«µ÷¶È¸ÃÏ̡߳£Í¨¹ýÕâÖÖ·½Ê½£¬Í¬Ò»Ïß³ÌÔÚ CPU ÉÏʼÖÕ´¦Óڻ״̬£º´¦Àí¿Í»§¶ËÇëÇó»òµÈ´ýÍê³É¶Ë¿Ú¡£
֮ǰ Windows °æ±¾ÖÐÍê³É¶Ë¿ÚµÄȱÏÝÔÚÓÚ£ºµ± I/O Íê³Éºó£¬I/O ϵͳ½«ÈÃÖ´Ðиà I/O µÄÏß³ÌÁ¢¼´Ö´ÐÐһС¶ÎÍê³É´¦Àí£¬¶ø²»¿¼ÂǸÃÏ̵߳±Ç°ÕýÔÚÖ´ÐÐµÄÆäËû¹¤×÷¡£Èç¹û»¹ÓÐÆäËûÏ̴߳¦Óڻ״̬£¬Ôò³£³£»áµ¼Öµ÷¶È³ÌÐòÇÀÕ¼»î¶¯Ị̈߳¬²¢ÉÏÏÂÎÄÇл»µ½ÁíÒ»¸öÖ´ÐÐÏ̵߳ÄÇé¿ö¡£
ͨ¹ý½«Íê³É´¦ÀíÑÓ³Ùµ½ÏÂÒ»Ïß³ÌÒԵȴýÓë¸Ã I/O ¹ØÁªµÄÍê³É¶Ë¿Ú£¬Windows Server 2008 ±ÜÃâÁË´ËÀàÉÏÏÂÎÄÇл»¡£Òò´Ë£¬¼´Ê¹»¹ÓÐÁíÒ»Ïß³ÌÕýÔڵȴýÍê³É¶Ë¿Ú£¬ËüÈÔ»áÔÚÖ´ÐÐÆäËû´úÂë֮ǰÏÈÖ´ÐÐÍê³É´¦Àí£¬¶øÇÒµ÷¶È³ÌÐò²»±ØÇл»µ½Ö´ÐÐÏ̡߳£ÕâÖÖ×îС»¯ÉÏÏÂÎÄÇл»µÄÄÜÁ¦¿ÉÏÔÖøµØ¸ÄÉÆ¸ß¸ºÔØ·þÎñÆ÷Ó¦ÓóÌÐòµÄ¿ÉÉìËõÐÔ¡£
Ï̳߳ظü¼ÓÓÐЧ
ÀûÓöà¸ö CPU À´Ð´ÈëÓ¦ÓóÌÐò·Ç³£À§ÄÑ£¬Òò´Ë Windows XP ÒýÈëÁ˹¤×÷Ï̳߳أ¬ËüÊÇÒ»ÖÖ»ù´¡½á¹¹ºÍÏà¹Ø API£¬ÓÃÓÚÌáÈ¡ÔÚ¶à¸ö CPU ¼äÖ´ÐÐС¶Î¹¤×÷µÄÏêϸÐÅÏ¢¡£ Ó¦ÓóÌÐò½«¹¤×÷ÏîĿָ¶¨¸øÏß³Ì³Ø API£¬È»ºó¸Ã API ÔÚËüΪϵͳÖеÄÿ¸ö CPU ´´½¨ºÍ¹ÜÀíµÄij¸öÏß³ÌÖÐÖ´ÐÐÕâЩ¹¤×÷ÏîÄ¿¡£
Ï̳߳صÄÄ¿µÄÊÇͨ¹ýʹÓÃÏàͬµÄÏß³ÌÁ¬ÐøÖ´Ðжà¸ö¹¤×÷ÏîÄ¿À´¾¡¿ÉÄܼõÉÙÉÏÏÂÎÄÇл»¡£µ±Ä³¸öÏß³ÌÒòΪæÓÚÖ´ÐÐÆäËû¹¤×÷¶øÎÞ·¨´ïµ½´ËÄ¿µÄʱ£¬Ëü½«Ê¹Óò»Í¬ CPU ÉϵÄÁíÒ»Ïß³ÌÀ´Ö´Ðиù¤×÷ÏîÄ¿¡£
Windows Server 2008 µÄÏ̳߳ØÊµÏֿɼä½ÓµØ£¨ÊÜÒæÓÚÍê³É¶Ë¿Ú¸Ä½ø£©ºÍÖ±½ÓµØ£¨Í¨¹ýÓÅ»¯Ï̹߳ÜÀí£©¸üºÃÀûÓà CPU£¬ÕâÑù¹¤×÷Ï߳̾ÍÄܸù¾ÝÐèÒª¶¯Ì¬Çл»ÒԱ㴦ÀíÓ¦ÓóÌÐòµÄ¸ººÉ¡£²¢ÇÒ£¬´Ë»ù´¡½á¹¹µÄºËÐÄÒÑ×ªÒÆµ½ÄÚºËģʽ£¬´Ó¶ø×îС»¯Ê¹Óøà API µÄÓ¦ÓóÌÐòËù²úÉúµÄϵͳµ÷ÓÃÊýÁ¿¡£×îºó£¬Ð API ʹӦÓóÌÐòÄܹ»¸üÇáËɵØÖ´ÐÐijЩ²Ù×÷£¬ÈçÔÚÓ¦ÓóÌÐò¹Ø±ÕÆÚ¼äÖÐÖ¹ÒÑÅŶӵŤ×÷µ¥Ôª¡£
NUMA ÓÅ»¯
Windows Server 2003 ÔÚÏ̵߳÷¶È³ÌÐòºÍÄÚ´æ¹ÜÀíÆ÷ÖÐÒýÈëÁË NUMA ÓÅ»¯£¬¶ø Windows Server 2008 ÔÚ I/O ¹ÜÀíÆ÷ÖÐÌí¼ÓÁË NUMA ÓÅ»¯Í¬Ê±À©Õ¹ÁËÄÚ´æ¹ÜÀíÆ÷µÄ NUMA ÓÅ»¯¡£
NUMA ϵͳͨ³£ÊǶദÀíÆ÷ϵͳ£¬ÆäÖеÄÄÚ´æÑÓ³ÙËæ·ÃÎÊËüµÄ´¦ÀíÆ÷²»Í¬¶øÓÐËù²»Í¬£¨Çë²Î¼ûͼ 4£©¡£ÄÚ´æ±»·Ö³É¶à¸ö½Úµã£¬CPU ºÍ½ÚµãÖ®¼äµÄÑÓ³Ù¿ÉÄܸ÷²»Ïàͬ£¬²¢ÇÒÿ¸ö CPU ¶¼±»ÊÓΪËü¿É×î¿ì·ÃÎʵÄÄǸö½ÚµãµÄÒ»²¿·Ö¡£
ͼ 4 ʾÀý NUMA ϵͳ (µ¥»÷¸ÃͼÏñ»ñµÃ½Ï´óÊÓͼ)
NUMA ϵͳ£¨ÓÈÆäÊǾßÓг¬¹ý°Ë¸ö CPU µÄϵͳ£©Í¨³£±ÈÒ»ÖÂÄÚ´æ·ÃÎÊϵͳ¸ü¼Ó¾¼ÃÇÒÐÔÄܸü¸ß¡£Ò»ÖÂÄÚ´æ·ÃÎÊϵͳ±ØÐëÆ½µÈµØÎªËùÓÐ CPU ÌṩÄڴ棬¶ø NUMA ϵͳÔòÄܹ»ÎªÖ±½ÓÁ¬½Óµ½ CPU µÄÄÚ´æÌṩ¸ßËÙ»¥Á¬£¬Í¬Ê±ÎªÓë CPU Ïà¸ô½ÏÔ¶µÄÄÚ´æÌṩ½ÏΪ±ãÒ˵«¸ü¸ßÑÓ³ÙµÄÁ¬½Ó¡£
ΪÄÜÔÚ NUMA ϵͳÖÐÓÐЧÀ©Õ¹£¬²Ù×÷ϵͳ»òÓ¦ÓóÌÐò±ØÐëÁ˽â½ÚµãÍØÆË½á¹¹£¬ÒÔ±ãʹ¼ÆËãÄܹ»ÔÚ°üº¬¼ÆËãÊý¾ÝºÍ´úÂëµÄÄڴ渽½üÖ´ÐС£ÀýÈ磬Windows µ÷¶È³ÌÐòΪÿ¸öÏ̷߳ÖÅäÒ»¸öËùνµÄÀíÏë´¦ÀíÆ÷£¬¸Ã´¦ÀíÆ÷Êǵ÷¶È³ÌÐòÊÔͼʼÖÕÔÚÆäÉÏÖ´ÐиÃÏß³ÌµÄ CPU¡£ÕâÑù×ö¿ÉÒÔʹÏß³ÌÖÃÓÚ CPU »º´æÖеÄÊý¾ÝÄܹ»¾¡¿ÉÄܵØÔÚÿ´Î¸ÃÏß³ÌÔËÐÐʱ¿ÉÓá£
ÔÚ Windows Server 2003 ÖУ¬µ÷¶È³ÌÐòÀ©Õ¹´Ë¸ÅÄîµÄ·½·¨ÊÇ£º½«°üº¬ÀíÏë´¦ÀíÆ÷µÄ½ÚµãÊÓΪ¸ÃÏ̵߳ÄÀíÏë½Úµã£¬²¢ÇÒµ±ÀíÏë´¦ÀíÆ÷ÕýæÓÚÖ´ÐÐÁíÒ»¸öÏß³Ìʱ£¬µ÷¶È³ÌÐò»á³¢ÊÔÔÚÀíÏë½ÚµãÖеÄÁíÒ»¸ö CPU Éϵ÷¶È¸ÃÏ̡߳£Windows Server 2003 ÄÚ´æ¹ÜÀíÆ÷Ò²Ö§³Ö NUMA£¬²¢ÇÒÔÚ¿ÉÄܵÄÇé¿öÏ£¬Ëü»á½«Ï̵߳ÄÄÚ´æ·ÖÅ䶨Ïòµ½ÕýÔÚÖ´ÐдËÏ̵߳ĽڵãµÄÄÚ´æÖС£
ÔÚ Windows Server 2008 ÖУ¬ÄÚ´æ¹ÜÀíÆ÷½«Äں˵ķǷÖÒ³Äڴ滺³åÇø£¨Äں˺ÍÉ豸Çý¶¯³ÌÐòÓÃÓÚ´æ´¢±ØÐè±£´æÔÚ RAM ÖеÄÊý¾ÝµÄÄڴ棩·Öµ½¸÷¸ö½Úµã£¬ÕâÑù¿ÉÒÔÔÚ²úÉú·ÖÅäµÄ½ÚµãÉÏΪÏ̷߳ÖÅäÄڴ档ϵͳҳ±íÏî (PTE) ÊÇ´Ó·¢Éú·ÖÅäµÄ½ÚµãÖзÖÅ䣬Èç¹ûÐèÒªÐÂÒ³±íÒ³À´Âú×ãÄÚ´æ·ÖÅ䣬Ôò»á°´ÕÕÔÚ Windows Server 2003 ÖÐËù²ÉÈ¡µÄ·½Ê½ÔÚÏàͬµÄ½ÚµãÄÚ´æÖзÖÅ䣬¶ø²»»á´ÓÈÎºÎÆäËû½ÚµãµÄÄÚ´æÖзÖÅä¡£
ÔÚ Windows Server 2003 ÖУ¬µ±Ï߳̽øÐÐÄÚ´æ·ÖÅäʱ£¬ÄÚ´æ¹ÜÀíÆ÷ÔÚ·ÖÅäÄÚ´æÊ±½«ÓÅÏÈ¿¼ÂÇÔÚÏ̵߳±Ç°Ö´ÐеĽڵãÖнøÐзÖÅä¡£Èç¹ûÏß³ÌÔÝʱµ÷¶Èµ½·ÇÀíÏë½Úµã£¬ÔòÔÚ´ËÆÚ¼äÖ´ÐеÄËùÓзÖÅä²Ù×÷¶¼½«ÔÚ·ÇÀíÏë½ÚµãÖÐÖ´ÐС£ËùÒÔ£¬µ±Ïß³Ì×îÖջص½ÆäÀíÏë½ÚµãÖÐÖ´ÐÐʱ£¬Ëü½«²»ÔÙÏñ×î³õÒ»Ñù½ô°¤×ÅËù·ÖÅäÄÚ´æÖд洢µÄÊý¾Ý»ò´úÂë¡£
Ϊ½â¾öÕâÒ»ÎÊÌ⣬ÔÚ Windows Server 2008 ÖУ¬ÄÚ´æ¹ÜÀíÆ÷ÔÚËùÓÐÏß³ÌÄÚ´æ·ÖÅäʱ¶¼½«ÓÅÏÈ¿¼ÂÇÏ̵߳ÄÀíÏë½Úµã£¬¼´Ê¹Ïß³ÌÕýÔÚÁíÒ»½Úµã¸½½üÖ´ÐС£ÄÚ´æ¹ÜÀíÆ÷»¹ÄÜ×Ô¶¯Á˽⴦ÀíÆ÷ºÍ½ÚµãÖ®¼äµÄÑÓ³Ù£¬ËùÒÔµ±ÀíÏë½ÚµãÖÐûÓÐ×ã¹»µÄ¿ÉÓÃÄÚ´æÊ±£¬Ëü»á¼ì²éÓëÀíÏë½Úµã×î½üµÄÁíÒ»½Úµã¡£´ËÍ⣬µ±Ïß³ÌÒýÓôúÂë»òÊý¾Ýʱ£¬ÄÚ´æ¹ÜÀíÆ÷½«°ÑÆä´ý»úÁбíÖеÄÒ³ÃæÇ¨ÒÆµ½Ï̵߳ÄÀíÏë½Úµã¡£
Ï£Íû¿ØÖÆ·ÖÅäλÖõÄÓ¦ÓóÌÐò¿ÉʹÓÃÐ嵀 NUMA ÄÚ´æ API£¬ËüʹÕâЩӦÓóÌÐòÄܹ»ÎªÄÚ´æ·ÖÅä¡¢ÎļþÓ³ÉäÊÓͼºÍÎļþÓ³Éä¶ÔÏóÖ¸¶¨Ê×Ñ¡½Úµã¡£¶ÔÓÚÓëÎļþÓ³ÉäÏà¹ØµÄ·ÖÅ䣬ÄÚ´æ¹ÜÀíÆ÷»á¼ì²éÓ³Éä²Ù×÷ÊÇ·ñÖ¸¶¨½Úµã£¬È»ºó¼ì²éÎļþÓ³Éä¶ÔÏóÊÇ·ñÖ¸¶¨½Úµã£¬Èç¹ûÁ½Õß¶¼Î´Ö¸¶¨£¬Ôò×îºóËü½«»ØÀ´¼ÌÐøÑ¡ÓÃÏ̵߳ÄÀíÏë½Úµã¡£
ÔÚ Windows Server 2008 ֮ǰ£¬ÓÃÓÚ´æ´¢»òÍøÂç I/O µÄÖжϼ°ÆäÏà¹ØµÄÑÓ»º½ø³Ìµ÷Óà (DPC) Äܹ»ÔÚÈÎÒâ CPU ÉÏÖ´ÐУ¬°üÀ¨ÔÚÓëÆô¶¯ I/O ²Ù×÷´¦ÓÚ²»Í¬½ÚµãµÄ CPU ÉÏÖ´ÐС£ÕâÓпÉÄܵ¼Ö I/O ²Ù×÷ÖеÄÊý¾Ý¶ÁÈ¡»òдÈëÔÚ·ÃÎÊÊý¾ÝµÄ½ÚµãÒÔÍâµÄÆäËû½ÚµãµÄÄÚ´æÖÐÖ´ÐС£
Ϊ±ÜÃâÕâÖÖÇé¿ö£¬Windows Server 2008 I/O ϵͳ½« DPC Ö´Ðж¨Ïòµ½Æô¶¯ I/O ²Ù×÷µÄ½ÚµãÖÐµÄ CPU£¬²¢ÇÒÓµÓÐÖ§³Ö PCI ×ÜÏß MSI-X£¨ÏûÏ¢ÐźÅÖжϱê×¼µÄÀ©Õ¹£©É豸µÄϵͳ»¹¿ÉÒÔͨ¹ýʹÓÃÉ豸Çý¶¯³ÌÐòÀ´½øÒ»²½Èà I/O ÔÚ±¾µØÍê³É£¬ÒòΪÕâЩÉ豸Çý¶¯³ÌÐò½«ÀûÓà Windows Server 2008 API ½« I/O Öж϶¨Ïòµ½Æô¶¯¸Ã I/O µÄ´¦ÀíÆ÷¡£
¶¯Ì¬·ÖÇø
ÈÃϵͳ¸ü¾ßÉìËõÐÔµÄÒ»ÖÖ·½·¨ÊÇÈÃÆäÖ§³Ö¶¯Ì¬Ôö¼ÓÓ²¼þ×ÊÔ´£¨Èç CPU ºÍÄڴ棩¡£Èç¹ûÕâЩ×ÊÔ´ÎÞÐèÖØÆôϵͳ¼´¿ÉʵÏÖ¸ü»»£¬Ôò´ËÖ§³Ö»¹ÄÜʹϵͳ¸ü¾ß¿ÉÓÃÐÔ¡£
Windows Server 2003 Ö§³Ö¶¯Ì¬ÄÚ´æÌí¼Ó¹¦ÄÜ£¬´Ó¶øÊ¹µÃ¾ßÓж¯Ì¬ÄÚ´æÖ§³ÖµÄ·þÎñÆ÷ÄÜÔÚ¹ÜÀíÔ±Ìí¼ÓµÄͬʱ¼´¿ÉʹÓÃÕâЩ RAM¡£Windows Server 2008 »¹À©Õ¹Á˶¯Ì¬ÄÚ´æÖ§³Ö£¬ÒòΪËü¿ÉʵÏÖÄÚ´æ¸ü»»¡£
RAM ÓÉÓÚÔ½À´Ô½ÒÀÀµ¾À´íÂë (ECC) УÕý¶ø·Ç³£ÈÝÒ×·¢Éú¹ÊÕÏ£¬Òò´ËÔÚÖ§³Ö¶¯Ì¬¸ü»»µÄ·þÎñÆ÷ÉÏ£¬Windows Server 2008 ¿É͸Ã÷µØ½«³öÏÖ¹ÊÕϵÄÄÚ´æÌõÖеÄÊý¾ÝÇ¨ÒÆµ½Ìæ»»ÄÚ´æÉÏ¡£¾ßÌå¹ý³ÌΪ£ºÊ×ÏÈÇ¨ÒÆ²Ù×÷ϵͳËù¿ØÖƵÄÊý¾Ý£¬È»ºó½«Ó²¼þÉ豸ÖÃÓڵ͹¦ºÄ״̬À´ÓÐЧ¹Ø±ÕËüÃÇ£¬Ç¨ÒÆÄÚ´æÖеÄÊ£ÓàÊý¾Ý£¬½Óׯָ´É豸µçÔ´¼ÌÐøÕý³£²Ù×÷¡£
Windows Server 2008 »¹Ö§³Ö´¦ÀíÆ÷µÄ¶¯Ì¬Ìí¼ÓºÍ¶¯Ì¬¸ü»»¡£¶ÔÓÚ¶¯Ì¬¸ü»»£¬Ó²¼þ±ØÐëÖ§³Ö±¸Óà CPU ¸ÅÄµ±ÏÖÓÐ CPU ²úÉú¹ÊÕÏָʾʱ£¬±¸Óà CPU ¿ÉÁª»ú»ò¶¯Ì¬Ìí¼Óµ½ÏµÍ³ÖУ¬Ä¿Ç°½ö¸ß¶Ëϵͳ֧³Ö´Ë¸ÅÄî¡£Windows Server 2008 µ÷¶È³ÌÐò¿É¼õ»º¹ÊÕÏ CPU ÉϻµÄËÙ¶È£¬²¢½«¹¤×÷×ªÒÆÖÁÌæ»»Ó²¼þÉÏ£¬Ëæºó¿ÉÈ¡³ö¹ÊÕÏ CPU ²¢½«Æä¸ü»»ÎªÐµı¸Óüþ¡£
Windows Server 2008 Ö§³Ö´¦ÀíÆ÷µÄ¶¯Ì¬Ìí¼Ó£¬Òò´Ë¹ÜÀíÔ±ÄÜÔÚ²»Í£»úµÄÇé¿öÏÂÉý¼¶·þÎñÆ÷µÄ´¦ÀíÄÜÁ¦¡£µ«ÊÇ£¬µ÷¶È³ÌÐòºÍ I/O ϵͳֻÄܽ«Ð CPU Ìṩ¸øÄÇЩͨ¹ýРAPI ÇëÇó CPU µ½´ï֪ͨµÄÉ豸Çý¶¯³ÌÐòºÍÓ¦ÓóÌÐò£¬ÒòΪijЩӦÓóÌÐòÄÚÖüٶ¨ CPU ÊýÁ¿¶ÔÓÚÒýµ¼»á»°¶øÑÔÊǹ̶¨µÄ¡£ÀýÈ磬ӦÓóÌÐò¿ÉÄÜΪÿ¸ö CPU ·ÖÅäÒ»¸ö¹¤×÷¶ÓÁУ¬Ïß³ÌÖ´ÐÐʱ½«Ê¹ÓÃÓë¸Ã CPU ¹ØÁªµÄ¶ÓÁС£Èç¹ûµ÷¶È³ÌÐò½«¸ÃÓ¦ÓóÌÐòµÄij¸öÏ̵߳÷¶Èµ½Ð嵀 CPU ÉÏ£¬Ëü¿ÉÄÜ»áÊÔͼÒýÓò¢²»´æÔڵĶÓÁУ¬Òò¶ø¿ÉÄܵ¼ÖÂËð»µÓ¦ÓóÌÐòµÄÊý¾Ý²¢ºÜÓпÉÄÜÖÂʹ¸ÃÓ¦ÓóÌÐò±ÀÀ£¡£
»ùÓÚ Microsoft ·þÎñÆ÷µÄÓ¦ÓóÌÐò£¨Èç SQL Server ºÍ Exchange Server£©ÄÜÖ§³Ö CPU ¶¯Ì¬Ìí¼Ó£¬Ò»Ð©ºËÐÄ Windows ½ø³ÌÒ²Ö§³Ö´Ë¹¦ÄÜ£¬°üÀ¨ System ½ø³Ì¡¢»á»°¹ÜÀíÆ÷½ø³Ì (%SystemRoot%\System32\Smss.exe) ºÍ Generic Service Hosting ½ø³Ì (%Systemroot%\System32\Svchost.exe)¡£ÆäËû½ø³ÌÒ²¿ÉʹÓà Windows API À´ÇëÇóРCPU µ½´ï֪ͨ¡£µ±Ð CPU µ½´ïʱ£¬Windows ½«ÏòÉ豸Çý¶¯³ÌÐò֪ͨÕâÒ»Çé¿ö¡¢Æô¶¯ CPU ²¢Ëæºó֪ͨËùдÈëµÄÉ豸Çý¶¯³ÌÐòºÍÓ¦ÓóÌÐòʹÓÃÐ嵀 CPU£¬ÕâÑùËüÃǾͿÉÒÔÔÚÐèҪʱ·ÖÅäÊý¾Ý½á¹¹ÒÔ¸ú×ÙРCPU ÉϵĻ¡£
¼ÆËã»úÐéÄ⻯
ÔÚ Windows Server 2008 ֮ǰ£¬Microsoft ¾ÍÒѾʹÓÃËÞÖ÷ÐéÄ⻯¼¼Êõ£¨Èçͼ 5 Ëùʾ£©ÊµÏÖÁ˰üÀ¨ Virtual Server 2005 ÔÚÄڵĸ÷ÖÖÐéÄ⻯²úÆ·¡£ÔÚËÞÖ÷ÐéÄ⻯ÖУ¬ÐéÄâ»úµÄʵÏÖ¼¼ÊõÊÇÔÚËÞÖ÷²Ù×÷ϵͳÉÏ£¨Í¨³£ÊÇ×÷ΪÉ豸Çý¶¯³ÌÐò£©ÔËÐеÄÐéÄâ»ú¼à¿ØÆ÷ (VMM)¡£VMM ÒÀÀµËÞÖ÷²Ù×÷ϵͳµÄ×ÊÔ´¹ÜÀíºÍÉ豸Çý¶¯³ÌÐò£¬²¢ÇÒµ±ËÞÖ÷²Ù×÷ϵͳµ÷¶ÈÆäÔËÐÐʱ£¬Ëü»áÔڻÐéÄâ»ú (VM) Ö®¼ä¶Ô CPU ÇзÖʱ¼äƬ¡£
ͼ 5 ËÞÖ÷¼ÆËã»úÐéÄ⻯ (µ¥»÷¸ÃͼÏñ»ñµÃ½Ï´óÊÓͼ)
Hyper-V£¨ÒÔǰµÄ´úºÅΪ¡°Viridian¡±£©ÊÇÀûÓùÜÀí³ÌÐòÐéÄ⻯µÃÒÔʵÏֵġ£¹ÜÀí³ÌÐòÍêÈ«¿ØÖÆ×ÅËùÓÐÓ²¼þ×ÊÔ´£¬ÉõÖÁÒýµ¼ÏµÍ³ºÍÓÃÓÚ¿ØÖÆ VM µÄ Windows Server 2008 ²Ù×÷ϵͳ±¾ÉíʵÖÊÉÏÒ²ÊÇÒÔÐéÄâ»úµÄ·½Ê½ÔËÐУ¨Èçͼ 6 Ëùʾ£©¡£
ͼ 6 Hyper-V Ìåϵ½á¹¹ (µ¥»÷¸ÃͼÏñ»ñµÃ½Ï´óÊÓͼ)
¹ÜÀí³ÌÐò¿É½«ÏµÍ³·Ö³É¶à¸ö VM£¬²¢½« Windows Server 2008 µÄÒýµ¼ÊµÀýµ±×÷Ö÷·ÖÇø£¨»ò¸ù·ÖÇø£©£¬ÒÔʹÆä¿ÉÖ±½Ó·ÃÎʸ÷ÖÖÓ²¼þÉ豸£¨Èç´ÅÅÌ¡¢ÍøÂçÊÊÅäÆ÷ºÍͼÐδ¦ÀíÆ÷£©¡£¹ÜÀí³ÌÐòÒªÇó¸ù·ÖÇøÖ´ÐеçÔ´¹ÜÀí²¢ÏìÓ¦Ó²¼þ¼´²å¼´ÓÃʼþ¡£Ëü½«½ØÈ¡×Ó·ÖÇøÖÐÆô¶¯µÄÓ²¼þÉ豸 I/O ²¢½«Æä·Óɵ½¸ù·ÖÇø£¬È»ºó¸ù·ÖÇøÊ¹Óñê×¼ Windows Server 2008 É豸Çý¶¯³ÌÐòÀ´Ö´ÐÐÓ²¼þ·ÃÎÊ¡£Í¨¹ýÕâÖÖ·½Ê½£¬ÔËÐÐ Hyper-V µÄ·þÎñÆ÷¿ÉÒÔ³ä·ÖÀûÓà Windows ¶ÔÓ²¼þÉ豸µÄÖ§³Ö¡£
µ±½« Windows Server 2008 ÅäÖÃΪ¾ßÓÐ Hyper-V ·þÎñÆ÷½Çɫʱ£¬Windows ½«°Ñ hypervisorimagelaunchtypeboot Òýµ¼ÅäÖÃÊý¾Ý¿â (BCD) ÉèÖÃÉèΪ auto£¬²¢½« Hvboot.sys É豸Çý¶¯³ÌÐòÅäÖÃΪÔÚÒýµ¼¹ý³ÌµÄǰÆÚÆô¶¯¡£Èç¹ûÅäÖÃÁ˸ÃÑ¡ÏHvboot.sys ½«Ê¹ÏµÍ³×öºÃÐéÄ⻯׼±¸£¬È»ºó½« %Systemroot%\System32\Hvax64.exe »ò %Systemroot%\System32\Hvix64.exe ¼ÓÔØµ½ÄÚ´æÖУ¬¾ßÌå¼ÓÔØÄĸö³ÌÐòÈ¡¾öÓÚϵͳÊÇʵÏÖ AMD-V ÐéÄ⻯À©Õ¹»¹ÊÇ Intel VT CPU ÐéÄ⻯À©Õ¹¡£
¼ÓÔØÍê³Éºó£¬¹ÜÀí³ÌÐòʹÓÃÐéÄ⻯À©Õ¹½«×ÔÉí²åÈëµ½ Windows Server 2008 ÖС£Óû§Ä£Ê½µÄÓ¦ÓóÌÐòʹÓà x64 ´¦ÀíÆ÷µÄ Ring 3 ȨÏÞ¼¶±ð£¬¶øÄÚºËģʽ´úÂëÔòÔÚ Ring 0 ÉÏÔËÐУ¬Òò´Ë¹ÜÀí³ÌÐòʵ¼ÊÊÇÔÚ¸ÅÄîȨÏÞ¼¶±ð Ring -1 ÉÏÔËÐУ¬ÒòΪËü¿É¿ØÖÆ Ring 0 ÉÏÔËÐеĴúÂëµÄÖ´Ðл·¾³¡£
µ±Ê¹Óà Hyper-V ¹ÜÀí¿ØÖÆÌ¨´´½¨»òÆô¶¯×Ó·ÖÇøÊ±£¬Ëü½«ÀûÓà %Systemroot%\System32\Drivers\Winhv.sys Çý¶¯³ÌÐòÀ´Óë¹ÜÀí³ÌÐòͨÐÅ£¬¸ÃÇý¶¯³ÌÐòʹÓù«¿ª¼Ç¼µÄ hypercall API À´Ö¸Ê¾¹ÜÀí³ÌÐò´´½¨Ö¸¶¨ÎïÀíÄÚ´æ´óСµÄзÖÇøºÍÖ´ÐÐÌØÕ÷¡£¸ù·ÖÇøÖÐµÄ VM ·þÎñ (%Systemroot%\System32\Vmms.exe) Ϊÿ¸ö×Ó·ÖÇø´´½¨Ò»¸ö VM ¹¤×÷½ø³Ì (%Systemroot%\System32\Vmwp.exe) ÒÔ¹ÜÀí×Ó·ÖÇøµÄ״̬¡£
Windows ¸ÄÉÆ×Ó VM ²Ù×÷ϵͳÐÔÄܵįäÖÐÒ»ÖÖ·½·¨ÊÇ Windows Server 2008 ºÍ Windows Vista ¶¼ÒÑʵÏֵįô·¢·½·¨£¨¼´½öµ±²Ù×÷ϵͳÔËÐÐʵÏÖ Microsoft hypercall API µÄ¹ÜÀí³ÌÐòʱ²Å»á¼¤»îµÄ´úÂëÐòÁУ©¡£Í¨¹ýÖ±½ÓÇëÇó¹ÜÀí³ÌÐòµÄ·þÎñ£¬×Ó VM ±ÜÃâÁËÔÚ¹ÜÀí³ÌÐò±ØÐë²Â²â×Ó²Ù×÷ϵͳµÄÒâͼʱËù²úÉúµÄÐéÄâ´úÂ뿪Ïú¡£
ÀýÈ磬δʵÏÖ×ÔÐýËø£¨Ö´Ðеײã¶à´¦ÀíÆ÷ͬ²½£©Æô·¢·½·¨µÄÀ´±ö²Ù×÷ϵͳ½«Í£ÔÚÒ»¸ö½ô´ÕÑ»·ÉÏÐýתÒԵȴýÆäËûÐéÄâ´¦ÀíÆ÷ÊÍ·Å×ÔÐýËø¡£´ËÐýת¿ÉÄÜ»á×èÈûÆäÖÐÒ»¸öÓ²¼þ CPU£¬Ö±µ½¹ÜÀí³ÌÐòµ÷¶ÈµÚ¶þ¸öÐéÄâ´¦ÀíÆ÷¡£ÔÚÆô·¢Ê½²Ù×÷ϵͳÖУ¬×ÔÐýËø´úÂë»áÔÚ½«Òª·¢ÉúÐýתʱͨ¹ý hypercall ֪ͨ¹ÜÀí³ÌÐò£¬ÕâÑù¹ÜÀí³ÌÐò¿ÉÒÔÁ¢¼´µ÷¶ÈÁíÒ»¸öÐéÄâ´¦ÀíÆ÷²¢½µµÍ²»±ØÒªµÄ CPU ʹÓá£
Windows Server 2008 ¸ÄÉÆ VM ÐÔÄܵÄÁíÒ»ÖÖ·½Ê½ÊǼÓËÙ VM ¶ÔÉ豸µÄ·ÃÎÊ¡£¿Éͨ¹ýÔÚ×Ó²Ù×÷ϵͳÖа²×°Í³³ÆÎª¡°VM ¼¯³É×é¼þ¡±µÄÒ»¸ö×é¼þ¼¯ºÏÀ´ÔöÇ¿ÐÔÄÜ¡£
Èç¹ûÔËÐÐδ°²×°¼¯³É×é¼þµÄ VM£¬Ôò×Ó²Ù×÷ϵͳ½«Îª¹ÜÀí³ÌÐòËùÌṩµÄÄ£ÄâÉ豸ÅäÖÃÓ²¼þÉ豸Çý¶¯³ÌÐò¡£µ±É豸Çý¶¯³ÌÐòÊÔͼʹÓÃÓ²¼þ×ÊԴʱ£¬¹ÜÀí³ÌÐò±ØÐë½øÐиÉÔ¤ÒÔ±ã֪ͨ¸ù·ÖÇø£¬¸ù·ÖÇø½«´ú±í×Ó VM ²Ù×÷ϵͳʹÓñê×¼ Windows É豸Çý¶¯³ÌÐòÖ´ÐÐÉ豸 I/O¡£ÓÉÓÚµ¥¶ÀµÄ¸ß¼¶ I/O ²Ù×÷£¨ÀýÈç¶Á´ÅÅÌ£©¿ÉÄܰüº¬¶à¸öÀëÉ¢µÄÓ²¼þ·ÃÎÊ£¬ËùÒÔËü¿ÉÄܵ¼Ö¹ÜÀí³ÌÐòºÍ¸ù·ÖÇøÖгöÏÖÐí¶à³ÆÎª¡°½ØÈ¡¡±µÄת»»¡£
Windows Server 2008 ʹÓÃÒÔÏÂÈýÖÖ×é¼þÀ´×îС»¯½ØÈ¡£ºÐéÄâ»ú×ÜÏßÇý¶¯³ÌÐò (%Systemroot%\System32\Drivers\Vmbus.sys)¡¢ÐéÄâ·þÎñ¿Í»§¶Ë (VSC) ºÍÐéÄâ·þÎñÌṩÉÌ (VSP)¡£µ±ÀûÓÃÊÜÖ§³Ö²Ù×÷ϵͳ½«¼¯³É×é¼þ°²×°µ½ VM ÖÐʱ£¬VSC ½«È¡´úÉ豸Çý¶¯³ÌÐòµÄ½ÇÉ«£¬²¢Ê¹ÓÃ×Ó VM ÖÐµÄ Vmbus.sys Çý¶¯³ÌÐò·þÎñ£¬Í¨¹ý¹ÜÀí³ÌÐòµÄ hypercall ºÍÄÚ´æ¹²Ïí·þÎñ½«¸ß¼¶ I/O ÇëÇó·¢Ë͵½¸ù·ÖÇøÖеÄÐéÄâ»ú×ÜÏßÇý¶¯³ÌÐò¡£ÔÚ¸ù·ÖÇøÖУ¬Vmbus.sys ½«ÇëÇóת·¢µ½ÏàÓ¦µÄ VSP£¬È»ºóËüͨ¹ý¸ù·ÖÇøµÄÉ豸Çý¶¯³ÌÐòÀ´Æô¶¯±ê×¼ Windows I/O ÇëÇó¡£
ÈçÄúËù¿´µ½µÄÄÇÑù£¬Í¨¹ýÒýÈë Hyper-V ÕâÖÖ»ùÓÚ¹ÜÀí³ÌÐòµÄÐéÄ⻯¼¼Êõ£¬Windows Server 2008 ÔÚ Microsoft ¼ÆËã»úÐéÄ⻯²ßÂÔÖаçÑÝ×ŷdz£¹Ø¼üµÄ½ÇÉ«¡£Äú¿ÉÒÔÔڼƻ®ÓÚ±¾ÄêÍíЩʱºò·¢ÐеÄÏÂÒ»°æ¡¶Windows Internals¡·ÖÐÁ˽âÓйØÕâЩ¹¦ÄÜºÍÆäËû¹¦ÄܵÄÏêϸÐÅÏ¢¡£
Mark Russinovich ÊÇ Microsoft ƽ̨ºÍ·þÎñ²¿ÃŵÄÒ»Ãû¼¼ÊõÈËÔ±¡£ËûÊÇ¡¶Microsoft Windows Internals¡·(Microsoft Press, 2004) µÄºÏÖøÕßÖ®Ò»£¬²¢¾³£ÔÚ IT ºÍ¿ª·¢ÈËÔ±»áÒéÉÏÑݽ²£¬°üÀ¨ Microsoft TechEd£¨Î¢Èí¼¼Êõ´ó»á£©ºÍ ΢Èí³ÌÐòÔ±´ó»á¡£ÔÚ Microsoft ÊÕ¹ºÁË Mark ÓëÆäËûÈË´´°ìµÄ Winternals Software Ö®ºó£¬ËûÒ²ËæÖ®¼ÓÈëÁË Microsoft¡£Ëû»¹´´½¨ÁË Sysinternals£¬ÔÚÕâÀïËû·¢²¼ÁËÐí¶àÁ÷ÐеÄʵÓù¤¾ß£¬°üÀ¨ Process Explorer¡¢Filemon ºÍ Regmon¡£