Implements cgroupsv2
Currently, Cinder only does cgroups v1. Let's use the cgroups v2 command line, when it's available in /sys. This avoids having to boot with compatibility kernel command line options: systemd.unified_cgroup_hierarchy=false systemd.legacy_systemd_cgroup_controller=false and just work as expected, provided cgroup-tools >= 2.0.0 is installed in the system. Change-Id: Ifdfcd480b72727ec182d5a6954c706f365247edc
This commit is contained in:
parent
962fe29e77
commit
d41586a115
@ -18,6 +18,8 @@
|
|||||||
Helpers for cgroup related routines.
|
Helpers for cgroup related routines.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
|
||||||
from oslo_concurrency import processutils
|
from oslo_concurrency import processutils
|
||||||
|
|
||||||
import cinder.privsep
|
import cinder.privsep
|
||||||
@ -25,11 +27,25 @@ import cinder.privsep
|
|||||||
|
|
||||||
@cinder.privsep.sys_admin_pctxt.entrypoint
|
@cinder.privsep.sys_admin_pctxt.entrypoint
|
||||||
def cgroup_create(name):
|
def cgroup_create(name):
|
||||||
processutils.execute('cgcreate', '-g', 'blkio:%s' % name)
|
# If this path exists, it means we have support for cgroups v2
|
||||||
|
if os.path.isfile('/sys/fs/cgroup/cgroup.controllers'):
|
||||||
|
# cgroups v2 doesn't support io, but blkio instead.
|
||||||
|
processutils.execute('cgcreate', '-g', 'io:%s' % name)
|
||||||
|
else:
|
||||||
|
processutils.execute('cgcreate', '-g', 'blkio:%s' % name)
|
||||||
|
|
||||||
|
|
||||||
@cinder.privsep.sys_admin_pctxt.entrypoint
|
@cinder.privsep.sys_admin_pctxt.entrypoint
|
||||||
def cgroup_limit(name, rw, dev, bps):
|
def cgroup_limit(name, rw, dev, bps):
|
||||||
processutils.execute('cgset', '-r',
|
if os.path.isfile('/sys/fs/cgroup/cgroup.controllers'):
|
||||||
'blkio.throttle.%s_bps_device=%s %d' % (rw, dev, bps),
|
if rw == 'read':
|
||||||
name)
|
cgset_arg = 'rbps'
|
||||||
|
else:
|
||||||
|
cgset_arg = 'wbps'
|
||||||
|
processutils.execute('cgset', '-r',
|
||||||
|
'io.max=%s %s=%s' % (dev, cgset_arg, bps), name)
|
||||||
|
else:
|
||||||
|
processutils.execute('cgset', '-r',
|
||||||
|
'blkio.throttle.%s_bps_device=%s %d' % (rw, dev,
|
||||||
|
bps),
|
||||||
|
name)
|
||||||
|
5
releasenotes/notes/cgroupsv2-75476a8e1ea88b5f.yaml
Normal file
5
releasenotes/notes/cgroupsv2-75476a8e1ea88b5f.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Cinder now supports setting-up cgroups with the cgroups v2 API, which is
|
||||||
|
used when doing migration of block device with the LVM backend.
|
Loading…
x
Reference in New Issue
Block a user