ubs-engine_2224.git

module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2026 License: MulanPSL-2.0

README

UBS-Engine

软件定义计算,资源按需组合与分配

ubs_engine

1.项目介绍 Introduction

UBSE(UB Service Core Engine,简称UBSE或UBS Engine)提供了ubse daemon程序及其相应的SDK开发库。开发者可以利用该SDK访问ubse daemon提供的服务,从而实现对MEM(内存)等资源的调度与管理,执行关键运维操作。

2.目录结构 Contents Structure

UBSEngine/
├── 3rdparty                    //第三方软件
├── conf                        //配置文件
├── doc                         //文档
├── scripts                     //脚本
├── src                         
│   ├── include                 //全局头文件
│   ├── apiserver               //北向接口暴露
│   ├── cli                     //cli代码
│   │   ├──ubse_cli_framework   //命令注册和结果回显辅助builder类
|   │   └──ubse_cert            //证书相关
│   │   
│   ├── controllers             //控制器
│   │   ├── include             //头文件  
│   │   ├── mem                 //内存池化控制器
│   │   |    ├── algorithm      //mem调度算法
│   │   │    ├── memcontroller  //内存池化控制器---文件
│   │   │    └── memscheduler   //内存池化调度器---文件
│   │   └── node                //内存池化控制器---节点的采集信息
│   │        └── nodecontroller //内存池化控制器---文件
│   │  
│   ├── framwork                //软件框架
│   │   ├── com                 //通信组件,与hcom对接,线程切换,回调
│   │   ├── config              //配置模块
│   │   ├── context             //上下文模块
│   │   ├── event               //事件中心
│   │   ├── ha                  //ha模块
│   │   ├── http                //http组件
│   │   ├── ipc                 //ipc
│   │   ├── log                 //日志组件
│   │   ├── misc                //杂项:智能指针、锁、环形队列、CRC
│   │   ├── plugin_mgr          //插件管理
│   │   ├── security            //安全组件,开源只需提权,商用版本支持使用KMC加解密
│   │   ├── serde               //序列化反序列化
│   │   ├── thread_pool         //线程池操作库,fram自身系统线程池
│   │   ├── timer               //定时器
│   │   └── xml                 //xml解析处理
│   │   
│   ├── message                 //消息
│   ├── node                    //创建数据链路
│   ├── ras                     //故障处理
│   ├── adapter_plugins
│   │   ├── syssentry           //syssentry对接
│   │   ├── mti                 //UBM对接
│   │   └── mmi                 //内存资源接口
│   │   
│   └── sdk                     //sdk模块
│       ├── include             //sdk的对外接口声明
│       └── example              //sdk示例
└── test
    ├── IT
    ├── PT
    └── UT

阅读各个目录下的 README.md 获取更详细的说明。

3.架构 Architecture

UBSE 架构详细介绍请查看:Architecture

4.功能 Function

提供了ubse daemon程序及其相应的SDK开发库。开发者可以利用该SDK访问ubse daemon提供的服务,从而实现对MEM(内存)等资源的调度与管理,执行关键运维操作。UBSE 功能介绍详见api介绍。

5.使用指南 Getting Started

  • 用法指南

  • 开发指南

  • 用户手册

  • 设计文档

详见产品文档

快速入门
1.开发前准备工作
1.1 环境安装

根据ubs_engine 运行的硬件要求、操作系统和软件要求进行环境安装。

1.2 源代码下载
git clone https://atomgit.com/openeuler/ubs-engine.git
2.构建项目

推荐:在 openEuler Linux (ARM64) 下执行项目构建

# 执行 Release 构建(没有调试信息,-O2 优化)
bash build.sh

# 执行 Debug 构建(附加调试信息)
bash build.sh -D

# 执行 RelWithDebInfo 构建(附加调试信息,-O2 优化)
bash build.sh -T RelWithDebInfo

# 执行 MinSizeRel 构建(没有调试信息,二进制文件最小构建,-Os 优化)
bash build.sh -T MinSizeRel

详见 构建指导

3.打包项目
# 构建项目,并打包成 rpm 文件输出到项目顶层目录的 output/ 下。
# 如果需要新增文件至rpm包中,参考:[RackManager项目如何增加新文件到rpm包中](http://3ms.huawei.com/km/blogs/details/17822996?l=zh-cn)
bash build.sh package
4.开发项目
4.1 开发常见问题
  1. 搞不懂构建类型,找不准构建产物

参考上节的《构建项目》,清楚不同构建类型的差别:

  • Release (默认构建类型,生产不可调试包,代码会被优化,不含调试信息)

  • Debug (调试包,代码不会应用任何优化,包含调试信息)

  • RelWithDebInfo (生产调试包,代码会被优化,同时包含调试信息)

  • MinSizeRel (最小生产包,生成最小的二进制,不含调试信息)

RelWithDebInfo 主要用于 Release 与 Debug 包存在差异导致无法调试时使用该构建调试优化后的代码。 MinSizeRel 主要用于特殊场景,如要求生产包足够小的时候考虑的构建类型。

  1. 测试代码都爆红,找不到头文件

项目默认构建不会包含测试代码,方便项目构建出包,推荐开发时自己打开构建选项 BUILD_TESTS。

image-20251013163754583

4.2 开发者测试

开发者测试包括 IT 和 UT,源码都位于 test 目录下。

# 只跑 UT 测试
bash build.sh ut
# 只跑部分测试用例
bash build.sh ut -- --gtest_filter="TestRackHttpClient.*:TestRackHttpReq.*"
# 只跑一组测试用例
bash build.sh ut -- --gtest_filter="TestRackHttpClient.*"
# 只跑一个用例
bash build.sh ut -- --gtest_filter="ClientSendSuccessfully"

详见 开发者UT指导

覆盖率报告

覆盖率报告生成的前提是单元测试通过率 100%,即如果有失败用例阻断覆盖率报告的生成。

针对模块的单元测试,因为不直接接入流水线,方便模块测试快速覆盖,故放开覆盖率报告的限制,即使存在失败用例也会生成覆盖率报告。

# 生成覆盖率报告,cmake-build-debug/coverage 下
bash build.sh ut -C

# 模块测试也可生成覆盖率报告,位置一致
bash build.sh ubse_http_ut -C

为了方便直接查看覆盖率报告,添加 -H 参数直接后台启动 HTTP 服务器,成功启动服务器后会打印覆盖率报告的 URL,在浏览器打开该 URL 即可访问覆盖率报告。

注意:

因为 cmake 自定义命令对后台命令的结束状态判断有问题,导致启动 HTTP 服务器时,cmake 命令没法退出,这时手动 Ctrl+C 退出即可,服务器依旧会在后台运行。

补充细节:HTTP 服务器会在每台机器上只创建一次,不会重复创建,也不用担心端口占用。

# 后台启动 HTTP 服务器,将打印覆盖率报告的 URL
bash build.sh ut -C -H

高级技巧

# 只构建测试,不执行
bash build.sh ut --skip-run-tests
5 许可证

本项目采用木兰开源许可,详见 License 目录

Directories

Path Synopsis
example
go command
package main 实现了go sdk的使用例子.
package main 实现了go sdk的使用例子.
src
sdk/go/dlopen
package dlopen 运行时加载动态库包
package dlopen 运行时加载动态库包
sdk/go/engine
package engine 实现了engine的go sdk.
package engine 实现了engine的go sdk.
sdk/go/log
package log 实现了log的go sdk.
package log 实现了log的go sdk.
sdk/go/mem
package mem 实现了mem的go sdk.
package mem 实现了mem的go sdk.
sdk/go/topo
package topo 实现了topo的go sdk.
package topo 实现了topo的go sdk.
sdk/go/urma
Package urma implements UBS URMA operations.
Package urma implements UBS URMA operations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL