1. 11 7月, 2012 1 次提交
    • P
      nodeinfo: Fix gathering of nodeinfo data structure · 80533ca2
      Peter Krempa 提交于
      This patch changes the way data to fill the nodeinfo structure are
      gathered. We've gathere the test data by iterating processors an sockets
      separately from nodes. The reported data was based solely on information
      about core id. Problems arise when eg cores in mulit-processor machines
      don't have same id's on both processors or maybe one physical processor
      contains more NUMA nodes.
      
      This patch changes the approach how we detect processors and nodes. Now
      we start at enumerating nodes and for each node processors, sockets and
      threads are enumerated separately. This approach provides acurate data
      that comply to docs about the nodeinfo structure. This also enables to
      get rid of hacks: see commits 10d9038b,
      ac9dd4a6. (Those changes in nodeinfo.c
      are efectively reverted by this patch).
      
      This patch also changes output of one of the tests, as the processor
      topology is now acquired more precisely.
      80533ca2
  2. 17 5月, 2012 1 次提交
    • E
      nodeinfo: test more details · 5a8262a0
      Eric Blake 提交于
      Make it obvious why we need Osier's patch in commit 10d9038b
      to fix NUMA parsing of an AMD machine with two cores sharing
      a socket id.
      
      * tests/nodeinfotest.c (linuxTestCompareFiles): Enhance the test.
      * tests/nodeinfodata/linux-nodeinfo-sysfs-test-*-output.txt: Update.
      5a8262a0
  3. 15 5月, 2012 2 次提交
    • O
      nodeinfo: Get the correct CPU number on AMD Magny Cours platform · 10d9038b
      Osier Yang 提交于
      "Instead of developing one CPU with 12 cores, the Magny Cours is
      actually two 6 core “Bulldozer” CPUs combined in to one package"
      
      I.e, each package has two NUMA nodes, and the two numa nodes share
      the same core ID set (0-6), which means parsing the cores number
      from sysfs doesn't work in this case.
      
      And the wrong CPU number could cause three problems for libvirt:
      
      1) performance lost
      
        A domain without "cpuset" or "placement='auto'" (to drive numad)
      specified will be only pinned to part of the CPUs.
      
      2) domain can be started
      
        If a domain uses numad, and the advisory nodeset returned from
      numad contains node which exceeds the range of wrong total CPU
      number. The domain will fail to start, as the bitmask passed to
      sched_setaffinity could be fully filled with zero.
      
      3) wrong CPU number affects lots of stuffs.
      
        E.g. for command "virsh vcpuinfo", "virsh vcpupin", it will always
      output with the truncated CPU list.
      
      For more details:
      
      https://www.redhat.com/archives/libvir-list/2012-May/msg00607.html
      
      This patch is to fix the problem by parsing /proc/cpuinfo to get
      the value of field "cpu cores", and use it as nodeinfo->cores if
      it's greater than the cores number from sysfs.
      10d9038b
    • E
      nodeinfo: add some more tests · 891a7f9e
      Eric Blake 提交于
      Test 2 data grabbed from a 2-core 1-node laptop.
      Test 3 data grabbed from a 48-cpu AMD Magny Cours box.
      
      * tests/nodeinfodata/linux-nodeinfo-sysfs-test-2*: New test data.
      * tests/nodeinfodata/linux-nodeinfo-sysfs-test-3*: Likewise.
      * tests/nodeinfotest.c (mymain): Run them.
      * cfg.mk
      (exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF): Exempt
      new test files.
      891a7f9e