Skip to content

Commit 0a0da4e

Browse files
authored
CA-422187: fix NUMA on XS8 (#6824)
On XS8 we always raise an exception when attempting to claim from a single node. We wanted to only use soft affinity when the single node claim succeeded (which is the correct fix on XS9, where this API is available). However this meant that we've effectively completely disabled NUMA support on XS8, without any way to turn it on. Always use soft affinity when the single-node claim API is unavailable, this should keep NUMA working on XS8. On XS9 Xen itself would never raise ENOSYS (it has a `err = errno = 0` on ENOSYS). Fixes: fb66dfc ("CA-421847: set vcpu affinity if node claim succeeded") ---- tested with: * job 4526247 XS8: numaEnabledSerialStart on build toolstack-ci-watch/289611 containing fb66dfc: fails as expected * job 4526243 XS8: numaEnabledSerialStart on build ca-422187/289733 containing 677c539: succeeds as expected: ```(XEN) [ 868.165385] 'u' pressed -> dumping numa info (now = 868165350914) (XEN) [ 868.165388] NODE0 start->0 size->17301504 free->1491212 (XEN) [ 868.165391] NODE1 start->17301504 size->16777216 free->1238913 (XEN) [ 868.165393] CPU0...39 -> NODE0 (XEN) [ 868.165395] CPU40...79 -> NODE1 (XEN) [ 868.165396] Memory location of each domain: (XEN) [ 868.165400] Domain 0 (total: 1933312): (XEN) [ 868.173626] Node 0: 872292 (XEN) [ 868.173627] Node 1: 1061020 (XEN) [ 868.173633] Domain 7 (total: 14068987): (XEN) [ 868.232568] Node 0: 14068987 (XEN) [ 868.232569] Node 1: 0 (XEN) [ 868.232573] Domain 8 (total: 14068987): (XEN) [ 868.291207] Node 0: 0 (XEN) [ 868.291208] Node 1: 14068987 ```
2 parents 38ff2a7 + 677c539 commit 0a0da4e

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

ocaml/xenopsd/xc/domain.ml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,13 +1002,17 @@ let numa_placement domid ~vcpus ~cores ~memory affinity =
10021002
in
10031003
let nr_pages = Int64.div memory 4096L |> Int64.to_int in
10041004
try
1005+
D.debug "NUMAClaim domid %d: local claim on node %d: %d pages" domid
1006+
node nr_pages ;
10051007
Xenctrlext.domain_claim_pages xcext domid ~numa_node nr_pages ;
10061008
set_vcpu_affinity cpu_affinity ;
10071009
Some (node, memory)
10081010
with
10091011
| Xenctrlext.Not_available ->
10101012
(* Xen does not provide the interface to claim pages from a single NUMA
10111013
node, ignore the error and continue. *)
1014+
D.debug "NUMAClaim domid %d: local claim not available" domid ;
1015+
set_vcpu_affinity cpu_affinity ;
10121016
None
10131017
| Xenctrlext.Unix_error (errno, _) ->
10141018
D.info

0 commit comments

Comments
 (0)