基于灵衢互联构建的鲲鹏超节点,操作系统提供服务器之间内存热插拔能力,并通过灵衢系统高阶服务提供内存借用和内存共享接口,实现超节点内内存削峰填谷、低时延共享等能力,助力虚拟化、数据库、大数据等业务创新。

特性介绍

当前不同服务器内存使用随业务负载变化,存在一些服务器内存不足,而另外一些服务器内存空闲,造成内存利用率不足。不同服务器部署同一种业务时需共享数据,但服务器间不支持同步内存语义访问,只能以通信的方式实现数据交换,难以做到百纳秒级低时延访问。

在鲲鹏超节点上,操作系统通过内存池化技术,实现内存借用和内存共享以解决上述痛点问题。

内存借用:将邻居节点空闲物理内存映射给其他节点,实现根据负载需求弹性扩缩内存

图片

关键特性:

支持远端内存热拔出。

支持插入远端内存,并上线到NUMA。用户可透明使用远端内存,例如使用glibc的malloc/free接口申请远端内存,使用numactl -m绑定应用使用远端内存。

支持插入远端内存,并上线到字符设备。用户可通过open+mmap方式映射远端内存到应用进程内使用。

典型使用模式:

内存临时借用,削峰填谷

图片

一借多,N倍扩展,超大内存

图片

内存共享:同一内存多节点共享,实现基于内存语义的数据共享

图片

关键特性:

支持创建共享内存区。

支持将共享内存映射给多个使用者。

典型使用模式:

LD/ST直通,基于内存语义的数据快速交换

图片

一写多读,全局缓存池

图片

优势分析

在鲲鹏超节点上,基于内存借用特性,可以实现业务场景性能优化。

数据库场景,利用内存池化技术减少算子落盘,OLAP性能提升20%;虚拟化场景,通过内存借用,将多个节点的碎片化内存整合利用,实现虚机超分,提升内存利用率。

证券极速交易场景,利用内存共享实现低时延通信,替代传统网卡、交换机,通信时延从微秒级降低到百纳秒级。数据库场景,利用内存共享实现行列转换列存数据共享,减少节点间数据重分布,提升20%OLAP多机并行查询性能。

上手教程

1、安装

ub-pkg-mem 提供 UB OS 的内存池化功能,安装方法:

yum install -y ub-pkg-mem ubs-engine ubs-engine-client-libs ubs-mem-shmem

2、内核启动参数配置,需要重启生效,在/etc/grub2-efi.cfg文件中menuentry的linux行中配置如下字段:

pmd_mapping=100% numa_remote=nofallback,hugetlb_nowatermark,preonline

3、使用,以内存借用为例

#include <iostream>#include "ubs_mem_def.h"#include "ubs_mem.h"int ubs_mem_lease_demo(){    /* Initialize ubs-mem library... */    /* Allocate 4M memory from other host in the default region. */    std::string region_name = "default";    size_t size = 0x400000UL;    ubsmem_distance_t mem_distance = DISTANCE_DIRECT_NODE;    uint64_t flags = 0;    void *addr = nullptr;    auto ret = ubsmem_lease_malloc(region_name.c_str(), size, mem_distance, flags, &addr);    if (ret != UBSM_OK) {        std::cerr << "Failed to allocate remote memory. ret: " << ret << std::endl;        return -1;    }    /* Allocate memory succeeded. */    /* Do your work here... */    /* Free memory. */    ret = ubsmem_lease_free(addr);    if (ret != UBSM_OK) {        std::cerr << "Failed to free remote memory. ret: " << ret << std::endl;        return -1;    }    return 0;}

结语

未来,操作系统将继续围绕内存池化技术,从池化性能、时延、易用性等维度进一步优化演进,联合业务场景探索更多应用模式,助力鲲鹏超节点应用创新。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐