Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«2.Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Windows (Π³Π». 5-7)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 23

Автор ΠœΠ°Ρ€ΠΊ Руссинович

Для большСй ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ диспСтчСризации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² многопроцСссорных систСмах Windows Server 2003 ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² диспСтчСра ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 6-23. Благодаря этому Π² Windows Server 2003 ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСссор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ свои ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π½Π΅ блокируя Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ общСсистСмныС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ сводки готовности, ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ структуры PRCB (processor control block). (Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ поля этой структуры, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ dt nt!_prcb Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ ядра.) ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² многопроцСссорной систСмС ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· процСссоров ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ…, связанныС с ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСссора (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ процСссорС), доступ ΠΊ этим структурам синхронизируСтся с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ спин-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ с очСрСдями, ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ PRCB; ΠΎΠ½Π° захватываСтся ΠΏΡ€ΠΈ IRQL SYNCH_LEVEL. (Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния SYNCH_LEVEL см. Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6-18.) Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΡ€ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ PRCB лишь ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСссора β€” Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Windows 2000 ΠΈ Windows XP, Π³Π΄Π΅ с этой Ρ†Π΅Π»ΡŒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ спин-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ диспСтчСра ядра.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора создаСтся ΠΈ список ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌ, Π½ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ состоянии (deferred ready state). Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ, Π½ΠΎ опСрация, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‰Π°Ρ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ± ΠΈΡ… готовности, ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π° Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ подходящСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСссор ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ своим списком ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², доступ ΠΊ этому списку Π½Π΅ синхронизируСтся ΠΏΠΎ спин-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ PRCB. Бписок ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² обрабатываСтся Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· диспСтчСра ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ контСкста ΠΈ послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ DPC ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π² этом спискС Π»ΠΈΠ±ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (Π² зависимости ΠΎΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°).

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ общСсистСмная спин-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° диспСтчСра ядра ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ сущСствуСт ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Windows Server 2003, Π½ΠΎ ΠΎΠ½Π° захватываСтся лишь Π½Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ общСсистСмного состояния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ. НапримСр, измСнСния Π² ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… (ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠ°Ρ…, событиях ΠΈ сСмафорах) ΠΈ ΠΈΡ… очСрСдях оТидания Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π·Π°Ρ…Π²Π°Ρ‚Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ диспСтчСра ядра, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² состояниС готовности ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ) Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ процСссором. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ β€” ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°, срабатываниС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈ ΠΎΠ±ΠΌΠ΅Π½ содСрТимого стСков ядра для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

НаконСц, Π² Windows Server 2003 ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° сихронизация ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ контСкста ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΎ синхронизируСтся с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ спин-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π° Π² Windows 2000 ΠΈ Windows XP ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ контСкста ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠΌ общСсистСмной спин-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° контСкста.


БистСмы с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Hyperthreading

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «БиммСтричная многопроцСссорная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Β» Π³Π»Π°Π²Ρ‹ 2, Windows XP ΠΈ Windows Server 2003 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ многопроцСссорныС систСмы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Hyperthreading (аппаратная рСализация логичСских процСссоров Π½Π° ΠΎΠ΄Π½ΠΎΠΌ физичСском).

1. Π›ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ процСссоры Π½Π΅ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ ограничСния Π½Π° число физичСских процСссоров. Π’Π°ΠΊ, Windows XP Home Edition, которая ΠΏΠΎ условиям Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ процСссор, задСйствуСт ΠΎΠ±Π° логичСских процСссора Π² однопроцСссорной систСмС с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Hyperthreading.

2. Π•сли всС логичСскиС процСссоры ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ физичСского процСссора ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‚, для выполнСния ΠΏΠΎΡ‚ΠΎΠΊΠ° выбираСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· логичСских процСссоров этого физичСского процСссора, Π° Π½Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· логичСских процСссоров ΡƒΠΆΠ΅ выполняСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ.


Π­ΠšΠ‘ΠŸΠ•Π Π˜ΠœΠ•ΠΠ’: просмотр ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, связанной с Hyperthreading

Π˜Π·ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ позволяСт ΠΊΠΎΠΌΠ°Π½Π΄Π° !smt ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π² систСмС с двумя процСссорами Xeon с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Hyperthreading (Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ логичСских процСссора):

ЛогичСскиС процСссоры 0 ΠΈ 1 находятся Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… физичСских процСссорах (Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«MasterΒ»).


БистСмы NUMA

Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ многопроцСссорных систСм, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Windows XP ΠΈ Windows Server 2003, β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ памяти с Π½Π΅ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ доступом (nonuniform memory access, NUMA). B NUMA-систСмС процСссоры Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΡƒΠ·Π»Ρ‹. B ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ свои процСссоры ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈ ΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ систСмС ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ шиной с ΠΊΠΎΠ³Π΅Ρ€Π΅Π½Ρ‚Π½Ρ‹ΠΌ кэшСм (cache-coherent interconnect bus). Доступ ΠΊ памяти Π² Ρ‚Π°ΠΊΠΈΡ… систСмах называСтся Π½Π΅ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Π΅ΡΡ‚ΡŒ локальная высокоскоростная ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π₯отя любой процСссор Π² любом ΡƒΠ·Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠΎ всСй памяти, доступ ΠΊ локальной для ΡƒΠ·Π»Π° памяти происходит Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС.

Π―Π΄Ρ€ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅ Π² NUMA-систСмС Π² структурах Π΄Π°Π½Π½Ρ‹Ρ… KNODE. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ядра KeNodeBlock содСрТит массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° структуры KNODE для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°. Π€ΠΎΡ€ΠΌΠ°Ρ‚ структуры KNODE ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ dt ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра:


Π­ΠšΠ‘ΠŸΠ•Π Π˜ΠœΠ•ΠΠ’: просмотр ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, относящСйся ΠΊ NUMA

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Windows для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Π² NUMA-систСмС, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ !numa ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² 32-процСссорной NUMA-систСмС производства NEC с 4 процСссорами Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅:


21: kdβ€Ί!numa NUMA Summary:

β€”

Number of NUMA nodes: 8 Number of Processors: 32


A это Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² 64-процСссорной NUMA-систСмС производства Hewlett Packard с 4 процСссорами Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅:

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ максимум ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· NUMA-систСм, ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ маски привязки процСсса ΠΊ процСссорам Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡƒΠ·Π»Π΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, пСрСчислСнныС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6-19. (Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ привязку ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΊ процСссорам, Π±Ρ‹Π»ΠΈ пСрСчислСны Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6-14.)


O Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ планирования ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ особСнности NUMA-систСм, см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Алгоритмы планирования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² многопроцСссорных систСмах» Π΄Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅ (Π° ΠΎΠ± оптимизациях Π² диспСтчСрС памяти для использования прСимущСств локальной для ΡƒΠ·Π»Π° памяти см. Π² Π³Π»Π°Π²Π΅ 7).


ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ процСссорам

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΅ΡΡ‚ΡŒ маска привязки ΠΊ процСссорам (affinity mask), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ, Π½Π° ΠΊΠ°ΠΊΠΈΡ… процСссорах ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ маску привязки процСсса. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ маска для всСх процСссов (Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈ для всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²) Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ вСсь Π½Π°Π±ΠΎΡ€ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… процСссоров Π² систСмС, Ρ‚. Π΅. любой ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° любом процСссорС.

Однако для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ пропускной способности ΠΈ/ΠΈΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ процСссоров прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ маску привязки ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΊ процСссорам. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… уровнях.


β€’ Π’Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetThreadAffintiyMask, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ маску привязки ΠΊ процСссорам для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°;

β€’ Π’Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetProcessAffinityMask, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ маску привязки ΠΊ процСссорам для всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² процСссС. ДиспСтчСр Π·Π°Π΄Π°Ρ‡ ΠΈ Process Explorer ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ GUI-интСрфСйс ΠΊ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ процСсс ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Set Affinity (Π—Π°Π΄Π°Ρ‚ΡŒ соотвСтствиС). Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° Psexec (с сайта sysinternals.com) прСдоставляСт ΠΊ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (см. ΠΊΠ»ΡŽΡ‡ β€” a).

β€’ Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ процСсса Π² Π·Π°Π΄Π°Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ дСйствуСт глобальная для задания маска привязки ΠΊ процСссорам, установлСнная Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SetInformationJobObject (ΠΎ заданиях см. Ρ€Π°Π·Π΄Π΅Π» Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-задания» Π΄Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅.)

β€’ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ маски привязки ΠΊ процСссорам Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΎΠ±Ρ€Π°Π·Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Imagecfg ΠΈΠ· Windows 2000 Server Resource Kit Supplement 1. (O Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π² Windows см. ΡΡ‚Π°Ρ‚ΡŒΡŽ Β«Portable Executable and Common Object File Format Specification Π² MSDN Library.)


B ΠΎΠ±Ρ€Π°Π·Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ «однопроцСссорный» Ρ„Π»Π°Π³ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² Imagecfg ΠΊΠ»ΡŽΡ‡ β€” u). Если этот Ρ„Π»Π°Π³ установлСн, систСма Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ процСссор Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания процСсса ΠΈ закрСпляСт Π΅Π³ΠΎ Π·Π° этим процСссом; ΠΏΡ€ΠΈ этом процСссоры ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ Π΄ΠΎ послСднСго ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ карусСли. НапримСр, Π² двухпроцСссорной систСмС ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС ΠΎΠ±Ρ€Π°Π·Π°, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ однопроцСссорный, ΠΎΠ½ закрСпляСтся Π·Π° процСссором 0, ΠΏΡ€ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” Π·Π° процСссором 1, ΠΏΡ€ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ β€” Π·Π° процСссором 0, ΠΏΡ€ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ β€” Π·Π° процСссором 1 ΠΈ Ρ‚. Π΄. Π­Ρ‚ΠΎΡ‚ Ρ„Π»Π°Π³ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ синхронизациСй ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π½ΠΎ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰ΡƒΡŽΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² многопроцСссорных систСмах.