- 博客(7)
- 收藏
- 关注
原创 SPDK RAID 超级块机制
超级块是RAID的元数据,它描述了RAID的必要信息(如 RAID 类型、RAID UUID、条带大小等),以及组成RAID中每个子设备的信息和状态(盘uuid、所属RAID uuid、在阵列位置等)。有了它,可以在多盘组合、系统重启、进程异常退出、设备动态添加/移除等情况下,保持阵列信息的**持久化与自描述能力**,以实现应用重启后准确的重建原RAID阵列。
2025-12-05 19:00:24
657
原创 BlueField3 DPU DOCA升级
实践中需要BF3 DPU搭建对比测试环境,BF3 DPU到手后,在配置PCIe分叉接入多个盘时,提示无效参数,咨询官方后告知固件版本过低,需要升级DOCA版本,详细可见问题。
2025-11-07 20:50:18
748
原创 FIO SPDK引擎的使用方法,以及如何使用spdk_bdev引擎测试不同SPDK bdev
SPDK engine的使用方法,以及如何使用spdk_bdev引擎测试不同SPDK bdev
2025-08-02 22:36:52
1111
原创 引入SPDK NVMe驱动的若干问题
SPDK提供了一套用户态NVMe驱动,通过轮询代替中断、大页、减少用户态与数据态之间频繁的数据拷贝等方式,提升NVMe SSD的IO性能。在我们的项目中,存储侧通过改造后的SPDK NVMf(NVMe Over TCP,搭配TCP卸载网卡)向外界提供存储服务。计算侧,在将SPDK用户态NVMe 驱动引入到一个开源的分布式存储系统,用于代替内核NVMe驱动通过NVMe over TCP连接存储端的过程中,遇到了一些问题,在此做个分享。
2025-07-04 23:26:14
1697
原创 C++多态
C++中的多态分为静态多态和动态多态两种,其中:静态多态在编译阶段实现,其原理是由函数重载实现,通过不同的实参调用其相应的同名函数。动态多态通过虚函数实现,以下着重介绍动态多态的两个必要条件:必须通过基类的指针或者引用调用 被调用的必须是虚函数,且在派生类中实现了该虚函数的重写以下解释何为通过基类的指针或者引用调用int main() { Person p; student s; Person &tmp1 = p; Person &tmp2 = s;//tm
2022-04-20 12:20:50
12819
3
原创 c++类与对象的引入及this指针
struct结构体的扩展和class类的引入c++中的类是c中的结构体的延申和扩展,它兼容了c中结构体的用法,同时struct在c++中也升级成了类。所以在c++中struct可以代替class(不建议这样做),但需要注意的是:struct定义类的时候,成员和方法的默认权限是public,class的成员和方法的默认权限是private(struct的默认权限为public的原因是c++要兼容c。设想一下,如果struct内的成员变量如class一般默认权限为private,那么站在c的角度上可以看作结
2022-01-19 22:54:23
548
原创 (图文结合)利用快慢指针判断链表中是否有环和找出环的入口结点的原理剖析
判断链表中是否有环首先假设有一个无限长的链表,其中slow指针指向链表的第N个结点(结点从0开始),fast指向第0个结点,那么此时fast与slow的距离为N-0=N。图 1接下俩采取slow和fast分别采取一次一步和两步的策略移动,设k为移动次数,当k=1即一次移动后则slow与fast距离变为N+1-2=N-1图 2继续移动,其总的距离变化:N、N-1、N-2...2、1、0(相遇)当移动k=N时即移动N次后,fast与slow距离变为0,相遇;理解了这个,我们再看一个带环链表,
2022-01-07 14:23:27
1266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅