我有一个Windows控制台应用程序,它使用并行IO卡进行高速数据传输。(通用标准HPDI32ALT)
我的进程在用户模式下运行,但是,我确信在设备API的后面有一些内核模式驱动程序活动(PCI传输、读取设备状态寄存器等)。工作模式大致如下:
应用程序似乎正确地工作在适当的数据速率和长时间的持续吞吐量,然而,当我查看sys内部工具process中的进程时,我会看到大量的页面错误(~6k /秒)。我要把~30 to /s移动到这张卡上。
我有大量的RAM,并且相当肯定页面错误与磁盘IO无关。
对于什么可能导致页面错误有任何想法吗?我也有这个应用程序的接收端,即在接收模式下使用相同的IO卡。API的接收模式使用不会导致大量页面错误。
将IO缓冲区移动到内核模式的行为会导致页面错误吗?
发布于 2011-08-10 15:03:00
所以您的应用程序要求驱动程序提供内存缓冲区,然后将发送数据复制到该缓冲区中?这是一个非常奇怪的模型,通常让应用程序管理缓冲区。
如果您正在错误的6K页/s,而您只传输30 If /s,您几乎是得到一个页面错误的每一个页面,您转移。当您从驱动程序中获得数据缓冲区时,它总是零填充吗?我想知道你是否每一次换车都有零故障。
-scott
https://stackoverflow.com/questions/7011206
复制相似问题