18ef09fdcSJuraj Linkeš#!/usr/bin/env python3 28ef09fdcSJuraj Linkeš# SPDX-License-Identifier: BSD-3-Clause 38ef09fdcSJuraj Linkeš# Copyright (c) 2021 PANTHEON.tech s.r.o. 48ef09fdcSJuraj Linkeš 58ef09fdcSJuraj Linkešimport ctypes 68ef09fdcSJuraj Linkešimport glob 78ef09fdcSJuraj Linkešimport os 88ef09fdcSJuraj Linkešimport subprocess 9*9d4efc5cSPeng Zhangimport re 108ef09fdcSJuraj Linkeš 118ef09fdcSJuraj Linkešif os.name == 'posix': 128ef09fdcSJuraj Linkeš if os.path.isdir('/sys/devices/system/node'): 138ef09fdcSJuraj Linkeš numa_nodes = glob.glob('/sys/devices/system/node/node*') 14*9d4efc5cSPeng Zhang numa_nodes.sort(key=lambda l: int(re.findall('\d+', l)[0])) 158ef09fdcSJuraj Linkeš print(int(os.path.basename(numa_nodes[-1])[4:]) + 1) 168ef09fdcSJuraj Linkeš else: 178ef09fdcSJuraj Linkeš subprocess.run(['sysctl', '-n', 'vm.ndomains'], check=False) 188ef09fdcSJuraj Linkeš 198ef09fdcSJuraj Linkešelif os.name == 'nt': 208ef09fdcSJuraj Linkeš libkernel32 = ctypes.windll.kernel32 218ef09fdcSJuraj Linkeš 228ef09fdcSJuraj Linkeš numa_count = ctypes.c_ulong() 238ef09fdcSJuraj Linkeš 248ef09fdcSJuraj Linkeš libkernel32.GetNumaHighestNodeNumber(ctypes.pointer(numa_count)) 258ef09fdcSJuraj Linkeš print(numa_count.value + 1) 26