摘要:
首先需要知道的一些背景知识:PCI是总线的名称,同时也可以是一个PCI bridge,这个bridge就是一个设备了。在这个bridge上可以挂多种PCI设备,例如virtio-block,virtio-net等设备,这些block或者net设备逻辑上挂载到PCI总线上,物理上连接到PCI brid 阅读全文
摘要:
0. 配置 HUGEMEM=2048 ./scripts/setup.sh 1.启动vhost application: ./app/vhost/vhost -S /var/tmp -s 1024 -m 0x3 & 2. 创建SPDK bdev (注意:SPDK bdev是SPDK中对多种存储后端( 阅读全文
摘要:
SPDK使用了DPDK中一些通用的功能和机制,编译spdk需要依赖dpdk,所以这里首先编译dpdk 1. 下载安装dpdk git https://github.com/DPDK/dpdk yum install perl 由于我的内核版本是3.10.0 yum install http://ft 阅读全文
摘要:
为什么要使用spdk? 主要原因就是:nvme已经快到一定程度了,很多东西,尤其是软件已经赶不上他了,此时软件反而成为了系统IO的瓶颈。 假如将24块每秒传输几个G的硬盘放在一起,也就是说这时的问题也就是放大了24倍。 对于一个8通道的内存而言,理论带宽就是200GB/s,实际应用中也就是能达到10 阅读全文
摘要:
[TODO] 阅读全文
摘要:
在看rbd-mirror的代码中,出现了以下的代码逻辑: template <typename I> void ImageReplayer<I>::wait_for_deletion() { dout(20) << dendl; Context *ctx = create_context_callb 阅读全文
摘要:
1. rbd mirror 流程从rbd-mirror二进制文件启动。 在看这部分逻辑之前,需要对librbd中的回调函数,回调类有足够的理解。 rbd-mirror从main函数开始启动,在main中调用Mirror::run()函数。 这个run函数中调用update_pool_replayer 阅读全文
摘要:
这里记录了调试QEMU中 GuestVM发起IO请求,到最终IO请求落盘到Ceph OSD的全过程。 环境准备 想了想,这个调试环境还是很复杂的: QEMU要能够调试,GuestVM内核要能够调试,然后Ceph要能够调试。 下面尝试来说明下,之前也零散的说过些,但是这里想要把全过程记录下来,所以就再 阅读全文
摘要:
这里记录些从网络上收集到的各种编译内核时的一些注意事项和操作。未经验证,仅供参考! 下载源码,然后转到源码目录(或者新建一个目录,在该目录下运行make -C /usr/src/linux O=`pwd`); 将当前运行内核的config文件拷过来(位置在/boot 目录下,config*等文件), 阅读全文
摘要:
调试内核模块的方法有很多。最常用的,可能也是上手难度最低的就是使用prinfk打印出相关的调试信息,但是总给人的感觉不够geeek,所以这里描述一种能够使用gdb+qemu来调试内核的方法。 启动虚拟机 /data/bin/qemu-system-x86_64 -m 6144 -M accel=kv 阅读全文