IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 焱融科技在高性能全闪文件存储系统设计的思考 -> 正文阅读

[大数据]焱融科技在高性能全闪文件存储系统设计的思考

在云计算和大数据时代,企业数据总量呈现出激增的趋势,尤其是在人工智能、自动驾驶和 GIS 地理测绘等创新技术领域。其中,值得注意的是非结构化数据的增长尤为惊人。目前非结构化数据的内容占据了当前主要的数据增长量。根据国际数据公司(IDC)预测,到 2023 年,中国的数据量将达到 40zb,其中 80% 超过是非结构化数据,同时非结构化数据的增长速度也会远远超过结构化数据。由此可见,企业用户对于高性能存储的需求愈发强烈。

众所周知,高性能存储离不开硬件技术的支持。当前,已经出现了为新一代性能型全闪分布式存储,提供更高性能存储的裸金属服务器,不仅升级了处理器的工艺及架构,支持更多的核数、更高的主频,帮助企业用户实现性能、算力的不断提升,更是全面提高了 DDR 通道及 PCIe 通道的扩展性。

目前看来,无论是从第一代 InfiniBand 到 40Gb/s、56Gb/s 和 100Gb/s,还是现在的 200 Gb HDR InfiniBand 技术,都在不断创造更高的数据吞吐量记录,为高性能计算、人工智能、云计算、存储等众多数据密集型应用提供领先的效率和可扩展性。

同时,随着 SSD 技术的发展,NVMe 也因高性能、低延时、低功耗、兼容性高和逐渐降低的价格等优势,而被广泛应用。在硬件快速迭代的同时,软件技术也受到了一定的良性影响,如 SPDK、io-uring、DPDK、RDMA 等技术。

实际上,想要构建高性能全闪存储系统,并不只是简单的高性能硬件和软件堆叠,而是需要对存储的系统框架进行重新设计。同时,文件存储系统的性能指标,我们具体指的是元数据性能和数据性能。为此,我们在系统设计之前,主要会考虑以下几个方面

  • 网络延迟
  • 无锁队列
  • 网络 RPC 与存储 IO 模型
  • 上下文切换
  • 内存零拷贝

就目前而言,CPU 架构在进行快速地迭代,架构升级带来的就是更高的 CPU 性能。在同代平台中,主频和核心就直接决定了 CPU 的性能上限,虽然主频无法大幅度提升,但是核心数可以较容易地提升。在实际业务中,在多核场景下的“锁”,对性能限制很大,如无锁队列单 core 可以提供百万级的能力,并且可以实现随着 core 数量的增加,而线性提升。但是如果引入了锁,不仅会将系统整体性能限制在单 core 以下,而且随着核心数的提升,性能反而会逐步降低。

常见的网络 RPC 模型是基于 epoll + 线程池的实现,一旦陷入到这种架构中,单个存储节点的性能就很难有所突破。虽然网络 RPC 模型在理论上非常优秀,但是在实际高性能场景中,它并不合适。

工作任务从 A 队列转移到 B 队列,一定概率是从一个 core 调度到另一个 core 上。在转移过程中,唤醒的延迟开销、上下文切换的开销,其中产生的延迟很难保证。很多开源网络 RPC 组件,和一些基于软件模拟实现的存储 Target 方案,很容易出现性能瓶颈明显,单节点基本在 50W IOPS左右。再加上一些内部功能逻辑的限制,很多文件存储单节点仅能提供 40W IOPS,对于全 SATA SSD 节点可能基本发挥硬件性能性能,但对于 NVMe 节点,则会出现性能严重浪费的问题。

在解决掉网络 RPC 性能瓶颈后,下一步需要解决的事,如何高效解决磁盘读写的问题。如使用大量工作线程并发读写 NVME 设备,将带来巨大的调度开销。可使用 SPDK、io-uring 或 AIO 等技术进行 IO 聚合收发,从而缩减工作线程数量,减小调度损耗。

另外,刚才我们也提及了上下文切换的问题,因为 CPU 核数有限,不可能给存储业务配太多工作线程,毕竟大量线程来回调度开销很大,所以就算是绑定 CPU 资源,整体的数量也需要控制,不然调度和上下文切换开销就会大于业务实际开销,导致性能更差。

目前,200G 网络正在普及, 400G 网络也已经发布,如果双卡聚合,则直接可提供 800G 网络带宽。为此,PCIe5.0 的需求也会越来越迫切,全闪的带宽能力也极大提升,从而凸显出内存带宽瓶颈,不可能数据在缓存中来回搬移。想要实现高带宽场景的高利,RDMA 技术就有着天然的优势。而如何高效地管理 RDMA 内存,以及如何在 RDMA 场景中,保证低延迟的前提下,提升集群随机 4K 和 8K并发读写能力,也是需要对 RDMA 做出相应的优化。

总结

综上所述,YRCloudFile 从客户端到 Server 端做了全链路的优化,高并发场景解决连接池中锁的影响,在 Server 端重新设计的网络异步模型和 IO 异步模型,控制路径为保证文件存储系统的语义,深度优化锁相关逻辑,保证极小粒度。在数据流路径上,实现完全无锁化。依赖资源隔离,在低负载时,使用少量 Polling 资源逻辑在负载提升时,Polling 资源也随着提升,直到达到节点性能上限。

在 RDMA 小 IO 场景中,我们为了用 CPU 资源换取更低的延迟,进行了重新设计。针对 RDMA 的 NUMA 环境带宽能力,也进行了优化。因此,YRCloudFile 单节点不仅能提供高 IOPS,还能提供更低的延迟,以及带宽实现将网卡打满。

具体 YRCloudFile 实际测试数值如下(最小集群采用 3 节点服务器 ,每节点配置为单颗 7742 CPU,32G X 8 内存,单个 200Gb Infiniband 卡):

技术指标测试数值
实测 IOPS(4K direct)600 万+
实际带宽(512K direct)60GBps+
cache hit (4k direct)30us
cache miss(4k direct)80us
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:10:56  更:2022-05-08 08:12:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:29:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码