强制打开BIOS中禁用的I/OAT DCA(一)

Hardware Platform: DELL PowerEdge R410

Develop Platform: Redhat EL5
Kernel version: 2.6.29.5
gcc version: 4.3.2


Dell PowerEdge R410采用英特尔® 至强® 5500系列处理器.而至强5100以后系列产品,它采用了新的处理器架构——酷睿架构,而I/O加速技术是其显著的特点之一。

而直接DCA(高级缓存访问)是I/O AT 2在原有基础上增加了的工作模式,这是一项快速响应、增强性能的新特性。基本工作原理是使得CPU高速缓存中的数据可以被网络控制器优先访问,一方面充分利用缓存中的数据,另外一个方面利用高速缓存低延迟的特性,来避免CPU频繁的访问内存,降低系统开销。DCA有两种基本的工作模式,当处理小型I/O任务的时候,甚至不需要芯片组中QuickData引擎的参与,只有当处理大型I/O任务的时候才需要。DCA的意义在于,数据包尽可能采用最近最快的途径,进入CPU的高速缓存中被优先访问,这将极大降低CPU的数据存取延迟。


R410 启动后加载内核ioatdma模块后提示:

DCA is disabled in BIOS

注: ioatdma 只有在2.6.18以上内核才具有.

Intel 82598 10Gb Ixgbe网卡驱动 DCA 无法启用.通过BIOS启用也无果.

goolge 一把发现可以通过修改CPU MSR寄存器或PCI 配置寄存器将DCA强制打开.

可以通过两种方式打开DCA启用标志,一种是修改PCI配置寄存器方式,一种为修改CPU MSR寄存器方式.

Enable DCA in PCI Configuration Space

强制打开BIOS中禁用的I/OAT DCA(一)
看寄存器描叙只要将第6位置1即可.

Enable DCA in the CPU MSR

需要将0x1f8 寄存器置1.

以下是源代码, 需要libpci-dev库支持.

注: 因为需要在用户层操作msr设备,需要将内核选项中的msr选项打开.

参考:

Enabling BIOS options on a live server with no rebooting

你可能感兴趣的:(工作,redhat,gcc,Access,英特尔)