[转] Quality Of Service In OpenStack
http://tropicaldevel.wordpress.com/2013/07/15/quality-of-service-in-openstack/
In this post I will be exploring the current state of quality of service (QoS) in OpenStack. I will be looking at both what is possible now and what is on the horizon and targeted for the Havana release. Note that I am truly only intimately familiar with Glance and thus part of the intention of this post is to gather information from the community. Please let me know what I have missed, what I have gotten incorrect, and what else might be out there.
Introduction
The term quality of service traditionally refers to the users reservation, or guarantee of a certain amount of network bandwidth. Instead of letting current network traffic and TCP flow control and back off algorithms dictate the rate of a users transfer across a network, the user would request N bits/second over a period of time. If the request is granted the user could expect to have that amount of bandwidth at their disposal. It is quite similar to resource reservation.
When considering quality of service in OpenStack we really should look beyond networks and at all of the resources on which there is contention, the most important of which are:
- CPU
- Memory
- Disk IO
- Network IO
- System bus
Let us take a look at QoS in some of the prominent OpenStack components.
Keystone and Quotas
While quotas are quite different from QoS they do have some overlapping concepts and thus will be discussed here briefly. A quota is a set maximum amount of a resource that a user is allowed to use. This does not necessarily mean that the user is guaranteed that much of the given resource, it just means that is the most they can have. That said quotas can sometimes be manipulated to provide a type of QoS (ex: set a bandwidth quota to 50% of your network resources per user and then only allow two users at a time).
Currently there is an effort in the keystone community to add centralized quota management for all OpenStack components to keystone. Keystone will provide management interfaces to the quota information. When a user attempts to use a resource OpenStack components will query Keystone for the particular resource’s quota. Enforcement of the quota will be done by that OpenStack service, not by Keystone.
The design for quota management in keystone seems fairly complete and is described here. The implementation does not appear to be targeted for the Havana release but hopefully we will see it some time in the I cycle. Note that once this is in Keystone the other OpenStack components must be modified to use it so it will likely be some time before this is available across OpenStack.
Glance
Glance is the image registry and delivery component of OpenStack. The main resources that it uses is network bandwidth when uploading/downloading images and the storage capacity of backend storage systems (like swift and GlusterFS). A user of Glance may wish to get a guarantee from the server that when it starts uploading or downloading an image that server will deliver N bits/second. In order to achieve this Glance does not only have to reserve bandwidth on the workers NIC and the local network, but it also has to get a similar QoS guarantee from the storage system which houses its data (swift, GlusterFS, etc).
Current State
Glance provides no first class QoS features. There is no way at all for a client to negotiate or discover the amount of bandwidth which can be dedicated to them. Even using outside OS level services to work around this issue is unlikely. The main problem is reserving the end to end path (from the network all the way through to the storage system).
Looking forward
In my opinion the solution to adding QoS to Glance is to get Glance out of the Image delivery business. Efforts are well underway (and should be available in the Havana release) to expose the underlying physical locations of a given image (things like http:// and swift://). In this way the user can negotiate directly with the storage system for some level of QoS, or it can Staccato to handle the transfer for it.
Cinder
QoS for Cinder appears to be underway for the Havana release. Users of Cinder can ask for a specific volume type. Part of that volume type is a string that defines the QoS of the volume IO (fast, normal, or slow). Backends that can handle all of the demands of the volume type become candidates for scheduling.
More information about QoS in cinder can be found in the following links:
- https://etherpad.openstack.org/grizzly-cinder-volumetypes
- https://blueprints.launchpad.net/cinder/+spec/cinder-nfs-driver-qos
- https://blueprints.launchpad.net/cinder/+spec/3par-qos-support
- https://blueprints.launchpad.net/cinder/+spec/cinder-rbd-driver-qos
Quantum/Neutron
Neutron (formerly known as Quantum) provides network connectivity as a service. A blueprint for QoS in Neutron can be found here and additional information can be found here.
This effort is targeted for the Havana release. In the presence of Neutron plugins that support QoS (Cisco, Nicira, ?) this will allow users reservation of network bandwidth.
Nova
In nova all of the resources in the above list are used. User VMs necessarily use some amount of CPU, memory, IO, and network resources. Users truly interested in a guaranteed level of quality of service need a way to pin all of those resources. An effort for this in Nova is documented here with thisblueprint.
While this effort appear to be what is needed in Nova it is unfortunately quite old and currently marked as obsolete. However the effort seems to have new life recently as shown by this email exchange. A definition of work can be found here with the blueprint here.
This effort will operate similarly to how Cinder is proposing QoS. A set of string will be defined: High (1 vCPU per CPU), Normal (2 vCPUs per CPU), low (4 vCPUs per CPU). This type string would then be added as part of the instance type when requesting a new VM instance. Memory commitment is not addressed in this effort, nor is network and disk IO (however those are best handled by Neutron and
Cinder respectively).
Unfortunately nothing seems to be scheduled for Havana.
Current State
Currently in nova there is the following configuration option:
# cpu_allocation_ratio=16.0
This sets the ratio of virtual CPUs to physical CPUs. If this value is set to 1.0 then the user will know that the number of CPUs in its requested instance type maps to full system CPUs. Similarly there is:
# ram_allocation_ratio=1.5
which does the same thing for RAM. While these do give a notion of QoS to the user they are too coarsely grained and can be inefficient when considering users that do not need/want such QoS.
Swift
Swift does not have any explicit QoS options. However it does have a rate limiting middleware which provides a sort of quota on bandwidth for users. How to set these values can be found here.
[转] Quality Of Service In OpenStack的更多相关文章
- neutron qos Quality of Service
Quality of Service advanced service is designed as a service plugin. The service is decoupled from t ...
- Quality of Service 0, 1 & 2
来自:http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels Quality of Servi ...
- MQTT协议QoS服务质量 (Quality of Service 0, 1 & 2)概念学习
什么是 QoS ? QoS (Quality of Service) 是发送者和接收者之间,对于消息传递的可靠程度的协商. QoS 的设计是 MQTT 协议里的重点.作为专为物联网场景设计的协议,MQ ...
- Quality of service
w https://en.wikipedia.org/wiki/Quality_of_service Quality of service (QoS) is the overall performan ...
- Quality of Service (QoS) in LTE
Background: Why we need QoS ? There are premium subscribers who always want to have better user expe ...
- [译]Ocelot - Quality of Service
原文 可以针对每个ReRoute设置对下游服务的熔断器circuit breaker.这部分是通过Polly实现的. 将下面的配置添加到一个ReRoute下面去. "QoSOptions&q ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)
八.KVM 这一步,像virsh start命令一样,将虚拟机启动起来了.虚拟机启动之后,还有很多的步骤需要完成. 步骤38:从DHCP Server获取IP 有时候往往数据库里面,VM已经有了IP, ...
- OpenStack (1) - Keystone OpenStack Identity Service
echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main >> /etc ...
- openstack setup demo Compute service
本文包含以下部分 Compute service overview Install and configure controller node Prerequisites Install and co ...
随机推荐
- web文件下载
web页面实现文件下载的几种方法 今天碰到文件下载的一些问题,本着知其然也要知其所以然的精神,站在巨人的肩膀上深入学习和测试了一下,抛砖引玉,现在总结结论如下: 1)标准URL下载方式可以通过在web ...
- form表单老忘的
禁止拉伸 textarea{ resize:none; } 左侧 label 对齐注意事项 必须要和 label-width 共同使用,才会生效. 表单域标签的宽度,直接写入 Form, 子元素 fo ...
- eclipse导入maven时,html页面引入js的路径出现红色波浪线
用eclipse导入一个springboot项目时,html页面引入js以及css时出现如下图所示情况,html页面用了 thymeleaf模板引擎.另外js文件与css文件路径也是正确无误的. 原来 ...
- PHP删除目录及目录下所有文件
/** * 删除目录及目录下所有文件或删除指定文件 * @param str $path 待删除目录路径 * @param int $delDir 是否删除目录,1或true删除目录,0或false则 ...
- maya cmds pymel 选择 uv area(uv 面积) 为0 的面
maya cmds pymel 选择 uv area(uv 面积) 为0 的面 cmds.selectType( pf=True ) cmds.polySelectConstraint( m=3, t ...
- ImCash:第一个集多功能于一身的数字资产平台
Web2.0时代,去中心化开始被社会各界人士所知晓,随着网络时代的不断发展,去中心化概念慢慢得到了社会各界的追捧.行业巨头控制.算法运行干扰.大数据的不良利用.跨款平台支付的不便都在一定程度上对用户的 ...
- Codeforces 446A. DZY Loves Sequences (线性DP)
<题目链接> 题目大意: 给定一个长度为$n$的序列,现在最多能够改变其中的一个数字,使其变成任意值.问你这个序列的最长严格上升子段的长度是多少. #include <bits/st ...
- 我的 FPGA 学习历程(10)—— 实验:数码管驱动
根据黑金 AX301 手册,数码管位选信号命名为 SEL[5:0],其中 SEL[5] 对应最左边的数码管,而SEL[0] 对应最右边数码管:作为约定,在下面的描述中我们对应的称之为数码管 5 和数码 ...
- jquery固定表头和列头
1.对网上的开源方法稍作了些修改 <script type="text/javascript">// <![CDATA[ function FixTable(Ta ...
- NOIP2017感悟
Day1 第一次会做的题这么多却比以前靠的更差. 其实停课期间水平还是提升了很多,但是做题速度和心态问题一就是我最难克服的一个地方. 题目很简单,但是又很恶心,主要是我代码能力太差,第二题调不出来,第 ...