Add NUMA support for Windows
authorTamar Christina <tamar@zhox.com>
Sun, 25 Sep 2016 19:00:31 +0000 (20:00 +0100)
committerTamar Christina <tamar@zhox.com>
Sat, 1 Oct 2016 22:20:04 +0000 (23:20 +0100)
commitc93813d96b1da53a2ebd9c9ac5af6cc3e3443c43
treea28cbbec64a5f1c70515a28b6ae3f2f4eaac87c9
parent1e795a008da8ab2ae88cca04aca01c50967b4397
Add NUMA support for Windows

Summary:
NOTE: I have been able to do simple testing on emulated NUMA nodes.
           Real hardware would be needed for a proper test.

D2199 Added NUMA support for Linux, I have just filled in the missing pieces following
the description of the Linux APIs.

Test Plan:
Use `bcdedit.exe /set groupsize 2` to modify the kernel again (Similar to D2533).

This generates some NUMA nodes:

```
Logical Processor to NUMA Node Map:
NUMA Node 0:
**
--
NUMA Node 1:
--
**

Approximate Cross-NUMA Node Access Cost (relative to fastest):
     00  01
00: 1.1 1.1
01: 1.0 1.0
```

run ` ../test-numa.exe +RTS --numa -RTS`

and check PerfMon for NUMA allocations.

Reviewers: simonmar, erikd, bgamari, austin

Reviewed By: simonmar

Subscribers: thomie, #ghc_windows_task_force

Differential Revision: https://phabricator.haskell.org/D2534

GHC Trac Issues: #12602
docs/users_guide/8.2.1-notes.rst
rts/win32/OSMem.c
rts/win32/OSThreads.c