阅读:2997回复:6
双核、双CPU、超线程的服务器上调用MmMapLockedPagesSpecifyCache
在一台双核、双CPU、超线程的服务器上,MmMapLockedPagesSpecifyCache会抛出异常,OS为2003 server。
本想映射16MB字节,发生异常后以为是16MB太大,却发现只映射2M字节也会异常;再小就没试了。 在装XP的台式机上,一切都OK。 有过这个经验的请指点一下,多谢。 |
|
沙发#
发布于:2008-01-11 08:46
顶!
|
|
板凳#
发布于:2008-02-20 22:33
继续探索
|
|
地板#
发布于:2008-02-29 10:39
我的问题找到了
以前测试都是XP上测的,一直OK。 所谓的双核、双CPU不行,其实还是因为装的是win2003。 MmMapLockedPagesSpecifyCache的有个一个参数,MMCache,MMNonCache,要调整好,必须和这片内存申请时的模式一致。 |
|
地下室#
发布于:2008-10-01 21:23
楼主,谢谢你,我也是这个问题
|
|
5楼#
发布于:2008-10-17 17:18
顶!
同时请教 楼主一个问题. 使用第三方驱动,我看了一下代码,内容也是 1) MmAllocateContiguousMemorySpecifyCache 2) MmMapLockedPages 提供给APP使用。 但是我发现: 这类内存写入 CPU利用率 要比 常规内存高。 Allocate时 MmNonCached. 是NonCache属性导致? 还是MmMapLockedPages呢? [MSDN 说后者已经 obsolete 了] |
|
6楼#
发布于:2009-01-08 16:51
同命人呀。
我也发现了这个现象。应该是NonCache导致的,因为这些数据不会进入CPU的1、2级缓存,自然它的访问就会变慢。 我现在在试图解决双核、四核台式机、服务器之下的一个同步问题。 以前参数为MMCache,同步有问题,数据有错。 以为改成MMNonCache就可以解决cache与内存的一致性问题,没想到更换之后CPU占用率变高了不少,但同步一样有问题,郁闷。 再次郁闷。 |
|