什么是我所有的记忆?

解决scheme:在这个线程中有很多东西需要阅读,所以我只是总结一下。

问题是VMWare ESX气球驱动程序“膨胀”了操作系统看到的“正在使用”的内存量,以强制操作系统转储caching并减less工作集大小。 这会创build大量“使用中”的物理内存,通过查看进程无法解释。 您可以查看VM的VMWare控制台性能图,并查看正在使用的气球驱动程序。

性能的解决scheme是提高服务器的预留内存量,这会限制气球驱动程序从您那里窃取的内存量。

我有一个32位Windows 2003terminal服务器运行本地副本的SQL Server(完整版本,不expression),并为几个开发人员承载一个Visual Studio 2008开发环境。 这些机器是在vSphere 4上运行的虚拟机,分配有4GB的内存。

当我有2或3个用户login时,它使用了超过4GB的提交内存,但我似乎无法find大部分内存正在使用。 当我在所有用户的任务pipe理器中加起来的所有内存时,最多只占2GB左右。 剩下的是什么?

我试过循环SQL服务器,只是把我看到分配给SQL服务器的内存。 Visual Studio也是如此,如果我closures它,它只会将我在Task Manager中看到的数量从提交的内存池中分配出来。 我还设置了SQL Server的内存选项,最多只能使用512MB。

我不相信这是一个系统或文件caching问题,因为Windows不包括提交的统计信息AFAIK中的内存。

这让我疯狂。 所有这些东西应该有足够的记忆,根据他们似乎正在使用的数量。 如何find这个额外的内存正在使用?

更新

关于我在看哪个内存统计,没有一个加起来。

例如,现在有1个用户login,只运行Visual Studio和WebDev服务器,SQL Server和IIS在后台..我加起来私人字节,我得到大约1049740K的内存,但任务pipe理器说,提交费用是1146M,剩下约150Mb下落不明。

当3个用户login时,只有大约2GB的私有字节(大量的内存被共享,因为用户正在运行Visual Studio)。

虚拟机大小也不相加,因为这通常没有私人字节那么多。 尽pipe奇怪的是,在Process Explorer中虚拟内存的数量与在任务pipe理器中的数量是非常不同的。 PE显示SQL Server的虚拟内存为1,791,444K,Visual Studio为1,251,432K,但是机器的总计只有1146M。

在任务pipe理器中没有WS大小的列,但是在PE中,它将WS列为私有和可共享,并且这些数字显着小于提交费用,甚至加起来。

更新:

我知道这个问题有很多细节,所以也许问题不清楚。

我如何find哪些进程正在使用我系统中所有提交的内存? 由TaskManager和Process Explorer提供的内存不能正确合并,即使提交了4GB,也只显示大约2GB的已提交内存。

sql server和vmware工具争夺虚拟内存空间。 这可能是由运行terminal服务和vs.

如果你还没有,进入虚拟机的设置,并在资源标签下创build一个完整的4Gb内存预留。 这将防止baloon驱动程序尝试回收内存中的内存。

你也可能想在sql server中configuration选项,以确保它只分配系统内存的一部分。 也许2GB最大。

这可能是SQL服务器。 默认情况下(如果我没有弄错)SQL服务器将分配尽可能多的内存,除非专门configuration为消耗特定数量的内存(在SQL服务器属性中访问)。 此分配的内存不显示在任务pipe理器中。 你需要做的是启动perfmon并添加“SQL Server:内存pipe理器:目标服务器内存”和“SQL Server:内存pipe理器:总服务器内存”计数器,看看有多less内存SQL服务器愿意使用以及如何它实际上消耗了很多内存。

你是认真的吗?

我有一个32位的Windows 2003terminal服务器,运行本地SQL Server(完整版本,不是Express)的副本,并为几个开发人员提供一个Visual Studio 2008开发环境

就像信息:

我的虚拟工作环境是使用Visual Studio和SQL Server的4g内存Windows 7系统。 64位。 我用了大约3.5 GB的常规。 我的Visual Studio实例通常是500MB左右,加上debugging需要很多的东西,虽然可能不会很长。 加上通常的罪魁祸首(帮助系统,浏览器)….

…你开始的时候是犯罪率低的。 您注意到的机器可能适合一个开发人员使用。 两个,如果不是很多使用。

剩下的是什么?

系统使用了很多。 不要忘记,所有的屏幕都必须渲染,而显卡在这里是没有用的 – 所以所有的内存缓冲区的副本必须进入(这可以是很多 – 什么决议,我们在这里谈了多less屏幕?,2003年,我假设每个开发人员)

暗示:

升级到:

  • 2008 R2。 MUCh更好的RDP,包括MULTI MONITOR SETUPS。 我现在用2个屏幕远程工作,2008 R2从我的Windows 7客户端复制我的显示器设置。 非常好,合作。 这个更新对我来说真的是远程工作有些东西可用 – 我已经习惯了与2+屏幕工作多年,远程总是paifull。
  • 64位操作系统。 32位只是不是。 即使所有的软件都是32位的(VIsual Studio等),64位的hsot可以拥有更多的内存,实际上每个进程都可以分配3gb。 而且还有一些跑动。

而且你将需要更多的内存。 我会说2GB每开发者是一个相当不错的阵容(2+ 2+开发人员)。 你可能会less一些,但不太可能。 取决于他们实际做了什么 – 但是Visual Studio中的大型应用程序占用了大量的内存。 特别是在编译期间,