[RFE] Retrieve NUMA node information during introspection

Bug #1635253 reported by Karthik S
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ironic Inspector
Invalid
Wishlist
Karthik S
ironic-python-agent
Fix Released
Wishlist
Jaganathan Palanisamy

Bug Description

In order to obtain better performance in using DPDK, node has to be configured by considering the numa node information. DPDK PMD should be associated with logical CPUs from the specific numa node, where the DPDK interface is associated. Also, in case of hyper threaded nodes, providing the siblings of a core will be useful in deciding the logical CPUs list for PMD.

For achieving this configuration, we already have handful of information in the introspected data. Additionally with below set of information, we can make better decisions in configuring the DPDK parameters of the nodes:

* List of logical CPU numbers associated with the numa node - Today during the introspection, most of the data provided by “lscpu” is logged, but the NUMA node and CPU list is not added.
The modified data structure shall be
{
  "inventory": {
    "cpu_topology": {
      "numa_nodes": {
        "numa_node_0": [<list of CPUs in NUMA node 0>],
        "numa_node_1": [<list of CPUs in NUMA node 1>]
      },
      ...
    }
  }
}

Example:
{
  "inventory": {
    "cpu_topology": {
      "numa_nodes": {
        "numa_node_0": [0,1,2,3],
        "numa_node_1": [4,5,6,7]
      },
      ...
    }
  }
}

* Siblings list for logical CPUs - Extract the siblings details from /sys/devices/system/cpu/cpu<n>/topology/thread_siblings_list for all logical CPUs
The modified data structure shall be
{
  "inventory": {
    "cpu_topology": {
      "sibling": [
        [ <first set of sibling threads>],
        [ <2nd set of siblings> ],
        ...
      ],
      ...
    }
  }
}

Example:
{
  "inventory": {
    "cpu_topology": {
      "sibling": [
        [0,1],
        [2,3],
        [4,5],
        [6,7]
      ],
      ...
    }
  }
}

* Numa node number for all PCI device (Network Interfaces) - Extract the numa node for the PCI devices from /sys/bus/pci/devices/<PCI address>/numa_node

This change is being addressed by https://review.openstack.org/#/c/369245

Tags: rfe-approved
Karthik S (ksundara)
Changed in ironic-inspector:
assignee: nobody → Karthik S (ksundara)
Karthik S (ksundara)
description: updated
Karthik S (ksundara)
description: updated
Karthik S (ksundara)
description: updated
Karthik S (ksundara)
affects: ironic-inspector → ironic-python-agent
Revision history for this message
Annie Lezil (annie-lezil) wrote :

Hi Karthik

I think a similarity with this patch "https://review.openstack.org/#/c/369245/"

Please take a look.

Revision history for this message
Karthik S (ksundara) wrote :

Yes Annie, it overlaps with the 3rd part ( NUMA node number for PCI device) of the RFE. I'll remove it from the RFE.

description: updated
Changed in ironic-inspector:
importance: Undecided → Wishlist
Changed in ironic-python-agent:
importance: Undecided → Wishlist
Changed in ironic-inspector:
assignee: nobody → Karthik S (ksundara)
status: New → In Progress
Changed in ironic-python-agent:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic-python-agent (master)

Fix proposed to branch: master
Review: https://review.openstack.org/424729

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic-inspector-specs (master)

Reviewed: https://review.openstack.org/396147
Committed: https://git.openstack.org/cgit/openstack/ironic-inspector-specs/commit/?id=da809c2100c50ecc918297a182f7d6d185bf1b8c
Submitter: Jenkins
Branch: master

commit da809c2100c50ecc918297a182f7d6d185bf1b8c
Author: karthik s <email address hidden>
Date: Thu Nov 10 17:26:55 2016 +0530

    Spec for retrieving NUMA node information

    Proposing a spec for retrieving NUMA node information during introspection.

    Partial-Bug: #1635253

    Co-Authored-By: Saravanan KR <email address hidden>

    Change-Id: I99aa9f0462f45a1cccec72801fbd14d1395b6386
    Signed-off-by: karthik s <email address hidden>

Changed in ironic-python-agent:
assignee: Karthik S (ksundara) → Jaganathan Palanisamy (jaganathanp)
Changed in ironic-python-agent:
assignee: Jaganathan Palanisamy (jaganathanp) → Karthik S (ksundara)
Changed in ironic-python-agent:
assignee: Karthik S (ksundara) → Jaganathan Palanisamy (jaganathanp)
Sam Betts (sambetts)
tags: added: rfe-approved
removed: rfe
Revision history for this message
Ruby Loo (rloo) wrote :

The spec was approved [1], so I am approving this RFE.

[1] http://specs.openstack.org/openstack/ironic-inspector-specs/specs/NUMA_node_info.html

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic-python-agent (master)

Reviewed: https://review.openstack.org/424729
Committed: https://git.openstack.org/cgit/openstack/ironic-python-agent/commit/?id=cc9e05da504693af6ceafff64527200bcbe4bb7d
Submitter: Jenkins
Branch: master

commit cc9e05da504693af6ceafff64527200bcbe4bb7d
Author: Jaganathan Palanisamy <email address hidden>
Date: Thu Feb 9 07:04:33 2017 -0500

    NUMA-topology collector

    Implement the optional collector for fetching the NUMA topology
    details.
    Collects RAM, CPU Cores, thread siblings and NICS data for
    each NUMA node and stored under "numa_topology" key.

    Closes-bug: #1635253

    Co-Authored-By: Jaganathan Palanisamy <email address hidden>

    Change-Id: I5a546c009d95f39b7af4d89cf785be8acb8ebc67
    Signed-off-by: karthik s <email address hidden>

Changed in ironic-python-agent:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/ironic-python-agent 2.1.0

This issue was fixed in the openstack/ironic-python-agent 2.1.0 release.

Revision history for this message
Iury Gregory Melo Ferreira (iurygregory) wrote :

marking inspector as invalid

Changed in ironic-inspector:
status: In Progress → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.