散炮的开法和使用方法(商铺贷款利率计算器)
作者 三角板
给SSD Fans原创投稿技术或市场文章,拿>=100元稿费。
以前只知道DPDK,最近听说SPDK,深入研究了一把。
Dpdk依赖UIO技术,见如下网址:
http://www.cnblogs.com/kb342/p/5168197.html
举个例子说明一下UIO技术,做过vxworks的工程师都知道,vxworks没有用户空间和内核空间的概念,所有的任务(进程或者线程)都跑在一个用户空间,调试时候可以直接敲函数读写寄存器;到了linux里面一般都用创建芯片寄存器ioremap空间向对应的proc文件实现对寄存器状态的读写配置。Intel利用其在X86平台(还有pcie)领域的巨大优势,专门写了一个通用的驱动来简化统一实现这个功能(UIO驱动加eal层),这就是UIO技术。猜测也正是因为如此,spdk只能跑在X86架构的服务器平台上。当然这仅仅是个简单的例子,方便大家了解,其实不仅仅是intel,各大公司比如华为都有内部这样一套统一的内核和用户通信调试接口提高效率。
SPDK依赖于dpdk,编译步骤如下:
下载spdk
git clone https://github.com/spdk/spdk.git
下载dpdk
Spdk代码下载后默认有一个dpdk的空文件夹用来存放dpdk源码
在spdk目录下如下操作:
提示用git submodule update –init命令下载dpdk
编译dpdk
进入dpdk目录
输入如下命令
make install T=x86_64-native-linuxapp-gcc DESTDIR=.
需要说明的是dpdk有自身一套很智能的安装和配置接口,这里直接手动操作,具体配置方法后续说明。
4. 安装相关编译工具和依赖库
进入spdk/目录,执行pkgdep.sh脚本,自动下载安装相关依赖文件。
编译spdk
进入spdk目录执行make DPDK_DIR=./dpdk/x86_64-native-linuxapp-gcc
编译通过。
dpdk配置
见如下网址http://blog.csdn.net/fjssharpsword/article/details/50946110
建议用自带的选择配置模式进行如下操作(可以和步骤3一起完成):
安装UIO驱动(Insert IGB UIO module);
Setup hugepage mappings for non-NUMA systems 输入64或128;
Bind Ethernet device to IGB UIO module;
Display current Ethernet device settings;
Run test application传递给用户态的设备模型,之后eal层次用mmap建立内核和用户空间的数据传递通道和同步机制,实现了驱动的用户态功能实现。
Spdk提供了多种存储接口(scsi,nvme等)不同层次的操作接口,可以供用户直接调用完成设备识别,控制,数据传输等。
企业级