From 973a1833b7c0fc61899e317a4a1c9c07d7fb2322 Mon Sep 17 00:00:00 2001 From: Madhuri Kumari Date: Mon, 6 May 2019 13:44:51 +0530 Subject: [PATCH] Follow up for Intel SST-PP spec This patch fixes the comments on https://review.opendev.org/#/c/651459/9 Change-Id: If06a019cf97aca48949054b331b526f4d9bf6cc1 --- specs/approved/support-intel-speed-select.rst | 95 +++++++++---------- 1 file changed, 47 insertions(+), 48 deletions(-) diff --git a/specs/approved/support-intel-speed-select.rst b/specs/approved/support-intel-speed-select.rst index ad9dbbd6..07227b39 100644 --- a/specs/approved/support-intel-speed-select.rst +++ b/specs/approved/support-intel-speed-select.rst @@ -10,19 +10,18 @@ Add IntelĀ® Speed Select Support https://storyboard.openstack.org/#!/story/2005390 -Multiple type of servers are needed to handle diverse workloads. Purchasing +Multiple types of servers are needed to handle diverse workloads. Purchasing and managing these servers introduces complexity and increases total cost of ownership(TCO). Intel Speed Select Technology(SST)[1] is a collection of features that improves -performance and optimize TCO by providing more control over CPU performance. -With Intel SST, one server can do more which means same server can be used to -run different workloads. One of the feature is Intel Speed Select -Technology-Performance Profile (SST-PP) allows configuring the CPU to run at -3 distinct operating points or profiles. +performance and optimizes TCO by providing more control over CPU performance. +With Intel SST, one server can do more which means the same server can be used +to run different workloads. One of the feature is Intel Speed Select +Technology-Performance Profile (SST-PP) which allows configuring the CPU to run +at 3 distinct operating points or profiles. With Intel SST-PP, one can set the desired core count and their base and turbo -frequency. It allows to set the number of cores and their frequencies which can -help to tune the server to specific workload performance. +frequencies which can help to tune the server to specific workload performance. Problem description =================== @@ -56,8 +55,8 @@ Proposed change =============== Intel SST-PP can be set over IPMI. Each configuration level has its -own hexa raw code that server understands. Ironic sends this code to the server -via IPMI to set the desired SST-PP level. +own hexa raw code that the server understands. Ironic sends this code to the +server via IPMI to set the desired SST-PP level. We will map these configurations to traits that Ironic understands. @@ -72,21 +71,21 @@ Scheduling The solution to support Intel SST-PP is first enable scheduling the request for baremetal instance deployment on the nodes that supports it. We set the -desired configuration as the trait in our flavor. +desired configuration as the trait in our flavor:: $ openstack flavor set --property \ trait:CUSTOM_INTEL_SPEED_SELECT_CONFIG_2=required baremetal Now, we also need to update the Ironic node's trait with the supported -configuration levels. +configuration levels:: - $ openstack --os-baremetal-api-version 1.37 baremetal node add trait node-0 \ + $ openstack baremetal node add trait node-0 \ CUSTOM_INTEL_SPEED_SELECT_CONFIG_BASE CUSTOM_INTEL_SPEED_SELECT_CONFIG_1 \ CUSTOM_INTEL_SPEED_SELECT_CONFIG_2 -Now, when user sends a request to boot a node with the ``baremetal`` flavor. -Placement API service will select the Ironic node that supports Intel SST-PP. +Now, when user sends a request to boot a node with the ``baremetal`` flavor, +placement API service will select the Ironic node that supports Intel SST-PP. Provisioning ------------ @@ -95,8 +94,8 @@ The Intel SST-PP needs to be set via IPMI before powering on the node in the process of provisioning. Ironic API service receives the desired configuration in ``node.instance_info.traits`` in the boot request. Ironic will then run the deploy template's step matching the trait. The deploy template -will specify the new ``configure_intel_speedselect`` step which configure -the Intel SST-PP configuration and then power on the node. +will specify the new ``configure_intel_speedselect`` step which configures +the Intel SST-PP configuration level and then powers on the node. Ironic will need below details to configure Intel SST-PP on the node: @@ -105,8 +104,8 @@ Ironic will need below details to configure Intel SST-PP on the node: is set by admins in the flavor's trait they want to boot the baremetal node with. Nova in turn updates the Ironic's node information with the trait. -* No. of socket: This is the no. of sockets per CPU. Setting Intel SST-PP needs - to be done for every socket. +* Number of sockets: This is the number of sockets per CPU. Setting Intel + SST-PP needs to be done for every socket. Both these information can be provided as an argument to the ``configure_intel_speedselect`` deploy step. @@ -156,40 +155,40 @@ Driver API impact ----------------- * Add a new hardware type ``IntelIPMIHardware`` to support Intel SST-PP - enabled hardwares. + enabled servers. - .. code-block:: python + .. code-block:: python - class IntelIPMIHardware(IPMIHardware): + class IntelIPMIHardware(IPMIHardware): -* Add a new management interface ``IntelIPMIManagement`` to manage configuring - Intel SST-PP on the servers. This class will have a new deploy step - ``configure_intel_speedselect`` to configure Intel SST-PP on the nodes. This - will also be enabled as a clean step so that it can be used to reset - configuration while node cleaning. +* Add a new management interface ``IntelIPMIManagement`` to manage the + configuration of Intel SST-PP on the servers. This class will have a new + deploy step ``configure_intel_speedselect`` to configure Intel SST-PP on + the nodes. This will also be enabled as a clean step so that it can be used + to reset the configuration while node cleaning. - .. code-block:: python + .. code-block:: python - class IntelIPMIManagement(ipmitool.IPMIManagement): - @base.deploy_step(priority=200, argsinfo={ - 'intel_speedselect_config': { - 'description': ( - "Intel SST-PP configuration." - ), - 'required': True - }, - 'socket_count': { - 'description': ( - "No. of sockets." - ) - } - }) - def configure_intel_speedselect(self, task, **kwargs): - return None + class IntelIPMIManagement(ipmitool.IPMIManagement): + @base.deploy_step(priority=200, argsinfo={ + 'intel_speedselect_config': { + 'description': ( + "Intel SST-PP configuration." + ), + 'required': True + }, + 'socket_count': { + 'description': ( + "No. of sockets." + ) + } + }) + def configure_intel_speedselect(self, task, **kwargs): + return None - Following is table for ``intel_speedselect_config`` value - corresponding each deploy template:: + The following table contains the ``intel_speedselect_config`` values + for the proposed deploy templates:: ----------------------------------------------------------------------- | Deploy Template | intel_speedselect_config | @@ -218,8 +217,8 @@ None Other end user impact --------------------- -Users will have to update the traits with required Intel SST-PP configuration -level in flavor. +Users will have to update the traits with the desired Intel SST-PP +configuration level in the corresponding flavors. Scalability impact ------------------