ViveNAS性能调试笔记(一)

ViveNAS是一个开源的NAS文件服务软件,有一套独立自创的架构,ViveNAS希望能做到下面的目标:

 - 能支持混合使用高性能的介质(NVMe SSD)和低性能介质(HDD,甚至磁带)。做到性能、成本动态均衡。因此ViveNAS使用了LSM tree结构,使用其带来的分层能力。
- 能提供文件接口,对象接口统一访问。ViveNAS的中间层 libvivenas 提供了用户态文件语义,方便对象存储对接开发。
- 要方便使用EC进一步降低数据存储的成本,底层数要避免随机写。此目标通过PureFlash的Append only file达到。
- 分布式存储的其他横向扩展、高可用能力,通过底层的PureFlash系统达到。

 其结构介绍祥见ViveNAS - 一个基于LSM tree的文件存储实现 (一)_pureflash 元数据-CSDN博客

简单讲,ViveNAS包括了PureFlash后端存储,rocksdb引擎,vivenas文件系统,以及ganesha前端接口四个部分。

                        

本文记录的是调整rocksdb 的num_levels参数对最终性能的影响。

测试硬件为: 阿里云虚机 ecs.hfr7.3xlarge  12C96G。

为避免后端存储对性能的影响,使用ramdisk代替SSD作为PureFlash的物理盘。

测试操作:

本次进行了三次测试,分别设置data column family 的num_levels 为7,4,2 进行测试(meta column family 一直保持为缺省的7);

测试负载用fio产生,用NFS将ViveNAS文件系统挂载到同一个主机上,对nfs文件系统进行读写。首先 进行一次4K随机写(RW), 然后换不同IO大小进行随机读(RR), fio每次运行30s.

测试脚本详见:ViveNAS/testing/perf-stat.sh at master · cocalele/ViveNAS (github.com)

得到如下的测试结果:

可以看到有这么几个现象:

1) num_levels对初始写的性能影响不大。

2) num_levels对实际造成的底层存储写入量影响也不大,这个还是比较诧异的。

3)num_levels对读操作的影响明显。特别是32K 随机读表现的更为明显。

简单分析一下,

ViveNAS处理大IO读(16K) 比 小IO(4K)性能要好的多。这一点可能跟ViveNAS保存数据以64KB为一个extent有关。无论客户端请求的数据块是4K还是16K,底层都要读取最少64KB数据。

算一下读放大倍数也证实了这点,4K随机读伴随着43倍写放大。32K随机读只有1.7倍,64K随机读更是降低到了0.5倍,也就是大部分数据都在rocksdb或者PureFlash AOF cache处得到了复用。

这个测试结果还是揭示了很多问题,接下来的研究以及改进方向如下:

1. 修改ganesha了worker thread的数量,看其对结果的影响
2. 修改libvivenas的vn_read/vn_write操作为异步的,看其对结果的影响
3. 修改rocksdb Get函数,提供随机读能力,去掉不必要的读放大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 进程、线程、协程基本使用

1、进程、线程以及协程【1】进程概念【2】线程的概念线程的生命周期进程与线程的区别 【3】协程(Coroutines) 2、多线程实现【1】threading模块【2】互斥锁【3】线程池【4】线程应用 3、多进程实现4、协程实现【1】yield与协程【2】asyncio模块【3】3.8版本【4】aiohttp 1. 并发…

网络基础(二)——序列化与反序列化

目录 1、应用层 2、再谈“协议” 3、网络版计算器 Socket.hpp TcpServer.hpp ServerCal.hpp ServerCal.cc Protocol.hpp ClientCal.cc Log.hpp Makefile 1、应用层 我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序,都是在…

AtCode DP专练A-P

链接:Educational DP Contest - AtCoder A - Frog 1 题意:有n个石头,从1石头出发,每次可以跳一格或者俩格,代价为俩个格子间的高度差 思路:对于第i个石头,可以从石头i-1和i-2得到&#xff0c…

31.Python从入门到精通—Python数据压缩 性能度量 测试模块

31.从入门到精通:Python数据压缩 性能度量 测试模块 个人简介数据压缩性能度量测试模块 个人简介 🏘️🏘️个人主页:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实力新星认证&#xff0c…

分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测

分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测 目录 分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记…

深度好文:解决Ubuntu 18.04安装nvidia显卡驱动,导致内核不匹配:无需重装系统修复内核

深度好文:解决Ubuntu 18.04安装nvidia显卡驱动,导致内核不匹配:无需重装系统修复内核 目录 一、问题描述二、尝试修复三、安装Nvidia驱动和CUDA并配置cuDNN四、总结 一、问题描述 昨天打算更新一下Ubuntu 18.04的显卡驱动,以支持…

Eclipse新建java类的操作流程

一、在左侧空白区域,点击鼠标右键。 二、点击new,选择Java Project (由于这里不知道怎么截图,就用手机拍了一张,希望不要介意) 三、 给project文件起个名字,其他都不用管,点击Finis…

云防护是怎么能帮助用户做好网络安全

在数字化时代,网络安全威胁呈现出愈发复杂和多样化的趋势。 无论是个人用户、小型企业还是大型企业,都面临着来自全球各地的网络攻击风险。这些攻击可能导致数据泄露、服务中断、财务损失甚至声誉受损。因此,采取有效的安全防护措施变得至关…

HarmonyOS 应用开发之Stage模型启动FA模型PageAbility

本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。 UIAbility启动PageAbility UIAbility启动PageAbility和UIAbility启动UIAbility的方式完全相同。 说明: 需注意FA模型中abilityName由bundleName AbilityName组成,具体见示例。 i…

不允许你不知道的 MySQL 优化实战(一)

文章目录 1、查询SQL尽量不要使用select *,而是select具体字段。2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit 13、应尽量避免在where子句中使用or来连接条件4、优化limit分页5、优化你的like语句6、使用where条件限定要查询的数据…

uniapp开发App(二)开通 微信授权登录功能(应用签名、证书、包名 全明白)

前言:开发App肯定要包含登陆,常用登陆方式很多,我选择微信登陆。 一、如何获得微信的授权登陆 答:申请,根据uniapp官网的提示有如下三个步骤 开通 1. 登录微信开放平台区,添加移动应用并提交审核&#xf…

C语言中的文件和文件操作

目录 为什么会有文件? 文件名 ⼆进制⽂件和⽂本⽂件? ⽂件的打开和关闭 流 标准流 ⽂件指针 ⽂件的打开和关闭 顺序读写函数介绍 对⽐⼀组函数: 文件的随机读写 fseek ftell rewind ⽂件读取结束的判定 被错误使⽤的 feof ⽂件…

PCL点云处理之重复随机采样一致性(RRANSAC法)平面拟合(二百三十七)

PCL点云处理之重复随机采样一致性(RRANSAC法)平面拟合(二百三十七) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 pcl::SAC_RRANSAC"是 PCL库中的一个方法,是 RANSAC 方法的改进版本,通过多次重复采样和模型拟合来提高鲁棒性。RRANSAC 的思想是在 RANSAC 的基…

基于深度学习的图书管理推荐系统(python版)

基于深度学习的图书管理推荐系统 1、效果图 1/1 [] - 0s 270ms/step [13 11 4 19 16 18 8 6 9 0] [0.1780757 0.17474999 0.17390694 0.17207369 0.17157653 0.168248440.1668652 0.16665359 0.16656876 0.16519257] keras_recommended_book_ids深度学习推荐列表 [9137…

Windows提权!!!

之前讲过一下提权,但是感觉有点不成体系,所以我们就成体系的来讲一下这个操作系统的提权 目录 Windows的提权 1.Widnows的内核溢出提权 1.MSF自带的提权模块(Win11都能提上来,有点牛逼) 2.CS的插件提权 3.补丁对比…

透视未来安全:PIR技术引领数据隐私新时代

1.隐语实现PIR总体介绍 隐语实现的Private Information Retrieval (PIR) 是一种隐私增强技术,它使用户能够在不暴露他们实际查询内容的情况下从远程服务器数据库中检索所需信息。以下是隐语在实现PIR方面的概要说明和技术特点: 基本概念: PI…

【蓝桥杯】矩阵快速幂

一.快速幂概述 1.引例 1)题目描述: 求A^B的最后三位数表示的整数,A^B表示:A的B次方。 2)思路: 一般的思路是:求出A的B次幂,再取结果的最后三位数。但是由于计算机能够表示的数字…

[linux初阶][vim-gcc-gdb] TwoCharter: gcc编译器

目录 一.Linux中gcc编译器的下载与安装 二.使用gcc编译器来翻译 C语言程序 ①.编写C语言代码 ②翻译C语言代码 a.预处理 b.编译 c.汇编 d.链接 ③.执行Main 二进制可执行程序(.exe文件) 三.总结 一.Linux中gcc编译器的下载与安装 使用yum命令(相当于手机上的应用…

10_MVC

文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例(开发与Json相关接口) 三层架构三层架构介绍 JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,是存…

JUC并发编程(七)

1、不可变对象 1.1、概念 不可变类是指一旦创建对象实例后,就不能修改该实例的状态。这意味着不可变类的对象是不可修改的,其内部状态在对象创建后不能被更改。不可变类通常具有以下特征: 实例状态不可改变:一旦不可变类的对象被…