虽然我相信Windows Server 2003处理进程的工作集有两个不同的问题。
首先,当控制台会话的顶层窗口被最小化时,它们的工作集被修剪,有GUI应用程序运行。 我知道使用GUI运行服务器进程是非常不寻常的,但是这些是传统应用程序做重要的事情,我不能做任何事情。
其次,长时间运行的数据库服务器在客户端连接时分配大量内存,但在另一个客户端连接之前不会触及该内存。 与此同时,有好几天可能会过去,操作系统似乎认为这是足够的理由来削减该进程的工作集。
在这两种情况下,都有足够的物理内存(比应用程序需要多几GB),所以我希望Windows不要修剪它们的工作集。 有没有一个设置来configuration这个? 这些都是第三方应用程序,所以更改内存分配或locking内存页面不是可行的选项。
您发布的文章中包含了您所要求的所有信息,但我明白这不是您想要听到的内容。
首先,我不知道你的应用程序是什么,他们做什么或为什么他们的工作集没有被修剪是如此重要,或任何其他的切向信息,可能会帮助你在你的路上解决问题,行为该过程的工作集正在促成。 这听起来像你有一个devise不好的应用程序,你必须支持,你试图改变Windows的行为,以弥补devise不佳的应用程序。 这是一个蹩脚的情况,我很抱歉。
这就是说,我会尽力回答你的问题:
您正在描述如何deviseWindows的基本机制。 GUI窗口的Minimizebutton的默认行为是调用ShowWindow(hWnd,SW_MINIMIZE),它修改了进程的工作集 – 故事结束。
这个devise得不好的应用程序的编写者可能会select拦截WM_SYSCOMMAND消息,当用户单击最小化窗口button并调用ShowWindow(hWnd,SW_SHOWMINIMIZED)(不修剪WS)而不是ShowWindow (hWnd,SW_MINIMIZE),但他们没有。 如果你不能联系这个应用程序的开发人员,并告诉他们再次尝试,这一次与一个实际的服务器应用程序,然后你坚持这种行为。
为了回应Harry Johnston,No ..没有pagefile不能解决问题…
基本上,有没有办法停止使用分页文件的窗口…当我说不出路..我的意思是没有办法..它将页面到磁盘,无论多less你不希望它。
如果你告诉任何版本的Windows从Windows NT到8.1和/或其对应的不使用页面文件,猜测当你开始接近内存不足时会发生什么? (我已经看到这发生在每个桌面和服务器版本的Windows)
Windows将出现locking大约5-10秒..然后回来,似乎工作文件..它做了什么? 它只在窗口所在的系统卷上创build临时紧急页面文件,并将继续使用它们,直到重新启动系统。
它会经常做到这一点,同时你得到的错误框popup,你资源或内存不足(它应该只是说内存作为系统资源在64位窗口几乎无限现在)….
事实上,禁用页面文件系统会导致更多的问题,然后没有一个桌面和服务器的应用程序期望看到的页面文件和期望页出内存..为什么? 简单..两个字:COMMIT CHARGE
当一个程序加载时,它可以请求内存,因为它希望它是可用的,或者它可以在32位操作系统上分配高达2GB的用户模式内存,在64位操作系统上为32位应用程序分配4GB或者在128位分配给128TB 64位操作系统上的64位
所以,如果你的服务器有16GB的内存,并且你加载了一个数据库(而且大部分都倾向于在内部使用自己的内存pipe理和caching),他们通常会分配1,2,4甚至8GB的内存。长期以来认为它可能不需要8GB …但是你认为所有使用内存的地方都会去哪里? Windows不希望它坐在物理内存中,应用程序也没有。 如果应用程序被特殊编码来replace那个没有使用的内存,它将会崩溃。 如果它没有编码这样做…那么它取决于交换出内存,因为它认为合适的,因为它需要它…但没有一个页面文件..你是WASTING内存…在这种情况下..没有交换文件会大大降低性能。
你不需要一个巨大的交换文件..但是如果你的服务器有16GB的内存..一个4GB的交换文件是一个很好的律号码…这不是太大,它会颠簸驱动器,因为它不会..而且窗口可以根据需要将页面交换出来,而对性能几乎没有影响。
Adobe公司的Photoshop是另一个公羊猪… 64位版本将阻碍4GB的内存,不pipe你是否拥有它…授予它只会使用约512MB开始..但如果你开始使用大图片,你可以轻松地超过4GB的内存使用…
最后,有一些分页文件是最好也是最安全的,即使它只有512MB …加上512MB保证你至less可以在系统崩溃的时候获得最less的内核转储和错误转储。 对于一个完整的转储,你需要一个C:上的页面文件(或者从哪里开始windows启动)等于物理内存的完整内存转储(通常不需要,需要大量的时间)