NVMeDirect:超越SPDK(2)

 

上回我们讲了Linux程序分为用户态和内核态,我们日常使用的,比如用户界面,命令行等等,都是用户态,大部分驱动程序都是在内核态。本文来探讨为什么PCIe SSD开始使用Pooling模式来响应硬件,而不是传统的中断方式。

 

内核态NVMe驱动三大缺点

 

  1. 内核的通用性。为了照顾各种各样的硬件驱[……]

阅读全文

NVMeDirect:超越SPDK(1)

我们知道,从Linux内核版本3.3开始,内核代码自带NVMe SSD驱动程序,运行在内核态。但是,用户的应用程序又都是在用户态运行,所以驱动跑在内核态会有些不便。哪些不便呢?不急,我们先来科普一下Linux的用户态和内核态区别。

 

 

在CPU的所有指令中,有一些指令是非常危险的,如果错用,[……]

阅读全文

Linux多队列与PCIe SSD(2)

 

上回说到要想在NUMA架构提升块设备层性能,就得减少跨CPU的内存访问。当然你可以绑定CPU,唐杰在他之前SSD测试的文章中讲过这些技巧,比如SSD插在CPU 0上,那么就只通过CPU 0发命令,中断也只发到CPU 0上。但这些都是块设备层的公公婆婆、儿子儿媳干的活,不是它能够操心的事。从块设备[……]

阅读全文

Linux多队列与PCIe SSD(1)

上面这个可爱的小伙子名字叫Jens Axboe,他是丹麦哥本哈根大学计算机系没毕业的学生,他还有一个有名的同乡叫Linus,没想到老乡后来也成了他的领导。Jens今年39岁,16岁开始就接触Linux,后来也成了Linux开发者,现在是Linux Kernel大拿了,负责块设备层的维护。这个块[……]

阅读全文