Giter VIP home page Giter VIP logo

Comments (3)

PhilippWendler avatar PhilippWendler commented on August 28, 2024 1

This is also a problem if several runs should be executed with few cores but much memory, such that for example the cores for all runs are taken from the first NUMA region, but not enough memory is available in that region.

from benchexec.

alohamora avatar alohamora commented on August 28, 2024 1

To handle multiple nodes per socket we can alter the cores_of_package to cores_of_region in resources.py.

physical_packages = [get_cpu_package_for_core(core) for core in allCpus]

Therefore instead of finding physical packages of core, we find memory regions for each core

memory_regions = []
for core in allCpus:
    coreDir = '/sys/devices/system/cpu/cpu{0}/'.format(core)
    memory_regions.append(_get_memory_banks_listed_in_dir(coreDir))

And correspondingly we build a cores_of_region mapping instead of cores_of_package

for core, package in zip(allCpus, physical_packages):
cores_of_package[package].append(core)

for core, region in zip(allCpus, memory_regions):
    cores_of_region[region].append(core)

Now using cores_of_region shall not affect the distribution for systems with single node per socket(or package) and for systems with multiple NUMA regions the algorithm shall split the socket into different groups each with their own different NUMA region.
This shall improve core assignment as runs shall be split accross memory regions instead of packages, thus ensuring that all the memory regions are used equally.

from benchexec.

PhilippWendler avatar PhilippWendler commented on August 28, 2024

Sounds good. Please make sure that the code would still work for systems that have multiple packages per NUMA node (we do not know such systems, but they could exist). In this case, actual packages should be used, of course (we will always use whatever is more fine granular: NUMA nodes or packages).

from benchexec.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.