cinder feature volume_copy_bps_limit needs package libcgroup

Bug #1870855 reported by Benjamin
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
kolla-ansible
Triaged
Undecided
Unassigned

Bug Description

kolla version: 9.0.1
Node OS: CentOS 7
kolla_base_distro: CentOS
openstack_release: train
kolla_install_type: source

To limit the bandwith/disk pressure of volume migrations you can make use of cinder's rate limiting feature. It is described here: https://docs.openstack.org/cinder/latest/admin/blockstorage-ratelimit-volume-copy-bandwidth.html

The documentation also says that you need to have a package installed whose name is dependent on the OS:
> This feature requires libcgroup to set up blkio cgroup for disk I/O bandwidth limit. The libcgroup is provided by the cgroup-bin package in Debian and Ubuntu, or by the libcgroup-tools package in Fedora, Red Hat Enterprise Linux, CentOS, openSUSE, and SUSE Linux Enterprise.

Is there a generic way to make kolla-ansible add packages to certain containers or is there a deploy/reconfigure hook that I could use as workaround to add such customizations?

When I activate this config flag without having this package installed, volume scheduling breaks and the following stacktrace appears in the cinder-volume.log:

Traceback (most recent call last):
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/oslo_service/service.py", line 810, in run_service
    service.start()
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/cinder/service.py", line 229, in start
    service_id=Service.service_id)
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/cinder/volume/manager.py", line 444, in init_host
    self._init_host(added_to_cluster, **kwargs)
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/cinder/volume/manager.py", line 558, in _init_host
    self.driver.set_throttle()
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/cinder/volume/driver.py", line 551, in set_throttle
    cgroup_name)
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/cinder/volume/throttling.py", line 69, in __init__
    cinder.privsep.cgroup.cgroup_create(self.cgroup)
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/oslo_privsep/priv_context.py", line 245, in _wrap
    return self.channel.remote_call(name, args, kwargs)
  File "/var/lib/kolla/venv/lib/python2.7/site-packages/oslo_privsep/daemon.py", line 204, in remote_call
    raise exc_type(*result[2])
OSError: [Errno 2] No such file or directory

Revision history for this message
Radosław Piliszek (yoctozepto) wrote :

You might want to rebuild the relevant image: https://docs.openstack.org/kolla/train/admin/image-building.html

and then propose the change upstream.

I believe this might need more handling at Kolla Ansible side as well to be able to handle cgroups from container.

What bothers me even more is that bare cgroup tooling is considered deprecated as cgroups should be managed via systemd in systemd-based systems. Otherwise cgroups behave weirdly due to separate hierarchies - I guess it does not matter much if the limit is absolute rather than proportional but still...

Also, do note this feature seems limited regarding used backend. I would suspect running it with e.g. ceph would not have any effect, as it seems to affect locally-controlled bandwidth.

Please let me know if I can help you further.

Changed in kolla-ansible:
status: New → Triaged
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.