1 Reply Latest reply on Sep 17, 2020 6:25 AM by bluefirestorm

    What should GetNumaHighestNodeNumber return when called by an ESX guest?

    vorrade Lurker

      I have just written some software in C++ that is NUMA aware and am running it on an ESX guest with Windows 10.
      At the start I call GetNumaHighestNodeNumber(...) and receive a 1, indicating that there should be 2 nodes, 0 and 1.
      Later on I try to start two new processes, using CreateProcess, and include a PROC_THREAD_ATTRIBUTE_PREFERRED_NODE attribute.
      The first process is started on node 0 and this call succeeds.
      The second process is started on node 1 and this call fails with the error code ERROR_INVALID_PARAMETER.

       

      Is it possible that the call to GetNumaHighestNodeNumber(...) is returning the hosts capability, ignoring the fact that the guest VM is limited to using only Numa-node 0 ?

        • 1. Re: What should GetNumaHighestNodeNumber return when called by an ESX guest?
          bluefirestorm Master

          I suspect the Windows 10 guest does not see the NUMA architecture but just sees the two virtual sockets.

           

          What does the Task Manager - set affinity show in the Windows 10 guest show?

           

          On a dual socket CPU physical machine, Windows 10 Pro the set affinity from Task Manager shows this picture

          A Windows 10 Pro VM running inside VMware Workstation 16 beta on the same physical machine as above, configured with 2 virtual sockets with 4 cores each, the set affinity shows this picture

           

           

          The physical Windows 10 Pro shows the node 0 and node 1 while the Windows 10 Pro VM does not, although the Windows 10 Pro VM sees 2 sockets.