A service for managing and provisioning Bare Metal servers.
Go to file
Julia Kreger d9913370de Guard conductor from consuming all of the ram
One of the biggest frustrations larger operators have is when they
trigger a massive number of concurrent deployments. As one would
expect, the memory utilization of the conductor goes up. Except,
even with the default number of worker threads, if we're requested
to convert 80 images at the same time, or to perform the write-out
to the remote node at the same time, we will consume a large amount
of system RAM. Or more specifically, qemu-img will consume a large
amount of memory.

If the amount of memory goes too low, the system can trigger
OOMKiller which will slay processes using ram. Ideally, we do not
want this to happen to our conductor process, much less the work
that is being performed, so we need to add some guard rails to help
keep us from entering into situations where we may compromise the
conductor by taking on too much work.

Adds a guard in the conductor to prevent multiple parallel
deployment operations from running the conductor out of memory.

With the defaults, the conductor will attempt to throttle back
automatically and hold worker threads which will slow down the
amount of work also proceeding through the conductor, as we are
in a memory condition where we should be careful about the work.

The defaults allow this to occur for a total of 15 seconds between
re-check of available RAM, for a total number of six retries.
The minimum default is 1024 (MB), as this is the amount of memory
qemu-img allocates when trying to write images. This quite literally
means no additional qemu-img process can spawn until the default
memory situation has resolved itself.

Change-Id: I69db0169c564c5b22abd0cb1b890f409c13b0ac2
2021-01-29 14:33:57 -08:00
api-ref Complete the REST API POST documentation 2020-12-16 11:14:37 +13:00
devstack Guard conductor from consuming all of the ram 2021-01-29 14:33:57 -08:00
doc Guard conductor from consuming all of the ram 2021-01-29 14:33:57 -08:00
etc Remove qemu-img rootwrap filter 2020-08-18 16:12:57 +02:00
ironic Guard conductor from consuming all of the ram 2021-01-29 14:33:57 -08:00
playbooks/ci-workarounds Native zuulv3 grenade multinode multitenant 2020-09-16 23:33:42 +02:00
releasenotes Guard conductor from consuming all of the ram 2021-01-29 14:33:57 -08:00
tools Update checking reno script to use python3 2020-10-11 22:13:21 +08:00
zuul.d add openstack-python3-wallaby-jobs-arm64 job 2020-12-31 09:06:10 +08:00
.gitignore Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:40:53 +00:00
.mailmap Add my new address to .mailmap 2020-04-13 07:29:37 -07:00
.stestr.conf Migrate to stestr as unit tests runner 2017-09-22 08:56:34 +00:00
bindep.txt add openstack-python3-wallaby-jobs-arm64 job 2020-12-31 09:06:10 +08:00
CONTRIBUTING.rst Project Contributing updates for Goal 2020-02-20 02:01:21 +00:00
driver-requirements.txt Add GPU reporting to idrac-wsman inspect interface 2020-09-30 18:33:53 -04:00
LICENSE Added project infrastructure needs. 2013-05-02 14:55:43 -04:00
README.rst Add ironic-specs link to readme.rst 2019-08-30 17:16:09 +08:00
reno.yaml tell reno to ignore the kilo branch 2020-02-07 16:42:15 -05:00
requirements.txt Bump oslo.log requirement to 4.3.0 2021-01-19 10:59:48 -08:00
setup.cfg Add vendor_passthru method for virtual media 2020-11-24 09:25:44 -05:00
setup.py Cleanup Python 2.7 support 2020-04-03 17:49:23 +02:00
test-requirements.txt Fix lower-constraints with the new pip resolver 2020-12-11 13:34:24 -08:00
tox.ini Update minversion of tox 2021-01-21 14:57:07 +01:00

Ironic

Team and repository tags

image

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

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