自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 virtio介绍 (二)virtio queue及三个ring环-avail,used,desc

上一篇介绍vritio的生产者消费者, 这一篇继续扩展,介绍下virtio的核心逻辑。

2025-04-11 18:39:03 863

原创 spdk-rpc命令原理-service端

待后续rpc命令解析之后,根据解析出来的字符串执行对应的方法。------------------------------------------------------------json-rpc的调用栈--↓。----------------------------------------------------spdk rpc的poller为入口--↓。------------------------------------------------------------调用到具体的方法--↓。

2025-03-31 00:34:01 680

原创 ubuntu系统启动优化

libvirt-qemu方式创建虚拟机,虚拟机镜像使用ubuntu-22.04.5-live-server-amd64,启动时耗时2min+, 对比正常ubuntu系统启动,正常只有10+左右。

2025-03-26 23:47:50 365

原创 libvirt环境搭建

github的libvirt源码地址:https://github.com/libvirt/libvirtclone到本地: https://github.com/libvirt/libvirt.git2.下载编译所依赖的资源进行编译构建ubuntu系统可参考下如下构建命令,具体根据自己的操作系统来安装, 哪个没有就apt search或者yum search检索。3. 安装虚拟化层,这里使用qemu也可以自己编译和安装qemu,这样便于后面自己添加debug信息或者一些特性的开发

2025-03-25 01:24:51 768

原创 virtio介绍 (一)生产者/消费者模式

介绍spdk的时候有许多跟virtio相关,但是直接介绍太突兀,最近想先详细介绍下virtio相关的技术,并且会详细介绍virtio是什么(what),怎么实现(how),到为什么这样实现(why)。再结合代码介绍下virtio的实现细节,顺便也看下自己是否彻底消化了virtio,毕竟有些东西能讲清楚和理解是两回事。那virtio是什么?virtio是虚拟化技术中关于io虚拟化中有一项重要的技术;virtio是虚拟化环境的高性能I/O设备框架;virtio是一种协议,分为前端和后端;

2025-02-17 22:09:03 792

原创 spdk的绑核实现流程

spdk绑核方式有三种: 配置文件, -cpumask 0xxxxx, 一种-lcore (idx1, idx2, idx3...)。spdk绑核会先设置/解析参数,并结合物理机上的cpu状态设置,最终将信息设置到dpdk的全局公共config中,绑核和抛reactor就是根据里面的信息进行处理。reactor线程的产生方式:主线程reactor是vhost进程转变的, 其余reactor是在dpdk的rte_eal_init接口中完成抛线程,绑核操作。

2025-01-01 23:08:31 1117

原创 qemu环境搭建

就比如上面这种情况,如果是在linux环境上git clone下来的代码,atomic.h头文件会自动将../../../include/qemu/atomic.h文件拷贝替换掉atomic.h文件,或者atomic.h是个软链接指向../../../include/qemu/atomic.h,但是windows下不会自动展开。gdb -p qemu进程,可以看到当前运行的qemu进行的调用栈,以及当前qemu进程中有4个线程在运行。编译是可能会遇到如下错误,没有这个错误的可忽略。

2024-12-16 00:55:10 817

原创 spdk环境搭建

简单运行:运行起来之后主程序绑定在cpu0上,只有一个reactor,参数设置成3个reactor,并且绑定在CPU4 5 6上,0x70的二进制为01110000,如下。在spdk/目录下执行./configure可配置好编译参数,./configure -h可查看配置参数有哪些,以下是我配置的参数,仅供参考。配置编译环境需要执行脚本spdk/scripts/pkgdep.sh,改脚本执行一次即可,后续都是用相同的环境,不需要在重复装依赖包。或者直接将所有文件checkout回原来的状态。

2024-12-14 01:34:54 654

原创 spdk提高io存储性能的三个因素:用户态驱动,线程模型,大页内存

spdk(Stroage Performance Development Kit)是一个开源的存储性能优化框架,专门用于提高io性能,降低延时。既然是高效,那总要有比对对象吧。这里列举下spdk最常用的场景:虚拟化领域。

2024-12-12 00:57:45 758

原创 spdk中的大页内存

spdk使用,释放,初始化内存大页

2024-11-24 15:36:10 113

原创 spdk通过vhost-user与qemu通信的代码---spdk初始化服务端

1.域套接字的路径:将缓存中的路径g_vhost_user_dev_dirname拼接到域套接字的路径下,g_vhost_user_dev_dirname路径的拼装是在spdk进程初始化时通过"-S /path/xxx"传入,然后在解析参数时通过vhost_parse_arg--->spdk_vhost_set_socket_path将该路径缓存。对以上逻辑进行详细分析,创建scsi控制器的rpc命令的入口为rpc_vhost_create_scsi_controller。待续-----------未完。

2024-06-16 22:40:58 994

原创 spdk初始化流程(24.05版本)

初始化的具体调用在spdk_subsystem_init_next接口中,初始入参为0,首先从链表g_subsystems中取出第一个子系统,然后当第一个子系统初始化完之后,会再次递归调用到spdk_subsystem_init_next接口,直到所有子系统都初始化完成才退出。3. spdk_reactors_start为轮训的最终调用终点,该接口中会为每个核抛出一个reactor_run接口,每个核的reactor_run接口中进行轮训,无异常的情况下,每次都轮训一遍_reactor_run接口。

2024-06-15 03:05:39 674

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除