如何检查在Win 2K3服务器上使用userva启动选项

我有一些32位的Win2K3服务器运行的应用程序现在失败,然后显然是由于堆碎片。 (进程虚拟字节增长,私人字节不)我没有访问该应用程序的源代码或构build过程。

图形

我修改了其中一台服务器上的boot.ini文件,以包含/userva=2560 ,这是正常操作模式和/3GB选项之间的一半。 通常需要数周时间才能到达失败点,但是我想马上看看这个实际上是否有效。

据我所知,这个选项限制内核到剩余的地址空间(1536MB而不是2048),但是不一定给应用程序额外的地址空间,这取决于应用程序的PE头中的标志。

如何确定O / S是否允许正在运行的特定应用程序访问2GB以上的地址空间? 此外,监视系统以确保内核不会饿死地址空间的最佳方法是什么?更一般地,我应该如何去寻找此设置的最佳值?

有两件事,首先你还需要根据KB的/3GB标志。

其次,考虑到泄漏速度这么慢,为什么要这么麻烦,你应该每个月重新启动一次,或者最多两次,以便应用安全更新。

内核内存(分页/非分页/caching) – 您可以使用Windowsdebugging器查看。 文件>内核debugging>本地选项卡。 “!vm”显示你的内核内存。 重要的值是池的使用和最大值:

NonPagedPool用法:10300(41200 Kb)
NonPagedPool最大:65281(261124 Kb)
PagedPool用法:14531(58124 Kb)
PagedPool最大值:134144(536576 Kb)

您还可以使用PE Explorer检查程序的PE镜像标题。 特征字段确定程序是否可以访问高于2 GB的内存。 如果没有设置,/ 3GB是浪费。

替代文字

PE Explorer
http://www.pe-explorer.com/