
摘要:OpenStack社区在Ussuri版本完成了nova-cyborg interaction功能的开发, 该功能加强了nova和cyborg的联系, 解耦了nova的PCI加速设备管理功能, 通过cyborg和placement可以让加速器资源的管理更加灵活。
概念
PR
resource provider, placement中的概念, 资源提供者。
Device Profile
Device profile是Cyborg中的概念, 它用于描述单个或多个加速设备,可以将之看作加速设备的flavor. 广义上, 它包括了两点:
- 特定资源类的数量(resource class)
- RP需要满足的要求(trait)
一个device profile的结构如下:
``` json
{
'name': 'gpu-nvidia-t4',
'description': 'Nvidia tesla t4',
'groups': [
{'resources:PGPU': '1',
'CUSTOM_GPU_PRODUCT_ID_1EB8': 'required'
},
{'resources:PGPU': '2',
'CUSTOM_GPU_PRODUCT_ID_1E04': 'required'
}
]
'uuid': 'd6cd5b94-f95c-4148-85c5-2ce22a38a796'
}
```
目前仅允许管理员创建/更新/删除device profiles。
ARQ
ARQ即accelerator request, 它是一个对象, 用于描述实例请求分配加速设备的状态,ARQ的创建和管理由cyborg完成, 并且数据存储在cyborg数据库中。
一个ARQ只能表示单个加速设备分配请求. `device_profile`可以有N个group, 每个group请求M个加速设备, 此时将会创建N*M个ARQ。
Cyborg初始化一个ARQ后, 该ARQ并不会和特定的计算节点主机名或RP id关联, 此时我们可以认为该ARQ处于未绑定状态(unbound). 之后, nova调用cyborg将ARQ绑定到一个计算节点主机名和一个加速设备的RP id和一个实例 id上. 如果实例孵化失败, nova不会删除这个ARQ, 而是取消绑定. nova会在删除实例时解绑和删除ARQ。
在绑定ARQ前, 每个ARQ都需要与nova选择的allocation candidate匹配。当前nova会建立RequestGroup到RPs的映射, nova中的cyborg客户端模块据此将ARQ匹配到RequestGroup上。匹配是使用RequestGroup对象中的requester_id字段进行的, 规则如下:
- device profile中的group的顺序并不重要, 但是cyborg保留了这个顺序. 因此每个RequestGroup都有一个唯一的索引;
- 当cyborg返回的device profile groups添加到request spec中时, 对于第N个RequestGroup, requester_id将

本文详细阐述了OpenStack Ussuri版本中Nova与Cyborg组件的深度整合过程,重点介绍了加速设备管理功能的增强,以及如何通过Cyborg和Placement实现更灵活的资源管理。文中深入分析了DeviceProfile、ARQ等核心概念,以及虚拟机创建流程中各组件的交互细节。
最低0.47元/天 解锁文章
793

被折叠的 条评论
为什么被折叠?



