
A node object has many fields, and a huge opportunity for performance improvement is to reduce the amount of work performed at the lower layers when it is not necessary. In particular, the easiest case to identify and handle is when a list of fields to be fulfilled is explicitly supplied. This is particularlly noteworthy when we collecting a list of nodes for synconization with Nova, where only 9 columns are really needed to supply Nova with the information required, and thus numerous fields are discarded. This is all particularlly compounded when traits are used, which presently uses a joined load pattern from SQL. With this patch, we explicitly load and convert only the fields requested at the lowest level, and then perform a different style of loading node traits which requires less overhead by SQLAlchemy to de-duplicate the returned result set to the application. This turns out to be far more efficent as we're reducing the amount of data/object conversion work by 360%, even before we consider populating traits, which is performed as a separate query when traits are requested. Story: 2008885 Task: 42434 Change-Id: Iac703d2a9b7b240a47477be8a64c7c33e28f692f
Ironic
Team and repository tags
Overview
Ironic consists of an API and plug-ins for managing and provisioning physical machines in a security-aware and fault-tolerant manner. It can be used with nova as a hypervisor driver, or standalone service using bifrost. By default, it will use PXE and IPMI to interact with bare metal machines. Ironic also supports vendor-specific plug-ins which may implement additional functionality.
Ironic is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.
Project resources
- Documentation: https://docs.openstack.org/ironic/latest
- Source: https://opendev.org/openstack/ironic
- Bugs: https://storyboard.openstack.org/#!/project/943
- Wiki: https://wiki.openstack.org/wiki/Ironic
- APIs: https://docs.openstack.org/api-ref/baremetal/index.html
- Release Notes: https://docs.openstack.org/releasenotes/ironic/
- Design Specifications: https://specs.openstack.org/openstack/ironic-specs/
Project status, bugs, and requests for feature enhancements (RFEs) are tracked in StoryBoard: https://storyboard.openstack.org/#!/project/943
For information on how to contribute to ironic, see https://docs.openstack.org/ironic/latest/contributor