我的一台办公室服务器出现问题。它是具有6GB RAM内存的虚拟化Windows 2008 R2 Server。它仅具有Microsoft SQL Server(分配的最大内存= 3GB),并且仅使用不超过1GB RAM的软件。但是,服务器的RAM内存几乎已满,在任务管理器中查看进程似乎并不能得出结论。我已经安装了RamMap,但是不能很容易地解释它,您是否可以识别出任何“高价值”?
我的一台办公室服务器出现问题。它是具有6GB RAM内存的虚拟化Windows 2008 R2 Server。它仅具有Microsoft SQL Server(分配的最大内存= 3GB),并且仅使用不超过1GB RAM的软件。但是,服务器的RAM内存几乎已满,在任务管理器中查看进程似乎并不能得出结论。我已经安装了RamMap,但是不能很容易地解释它,您是否可以识别出任何“高价值”?
Answers:
好吧,我看到〜3.2 GB的驱动程序锁定内存,立即显示为可疑。
这种内存,即驱动程序锁定的内存,是已被内核模式驱动程序锁定的内存。典型地用于转移的目的小的数据量,通常为短的时间段。
因此,如果长时间有大量驱动程序锁定的内存,通常表明存在某些问题。
在这里,我将进行一个疯狂的猜测,并猜测由于您提到这是一台虚拟服务器,因此是由VMware Balloon驱动程序完成的。我没有足够的数据可以告诉您为什么这样做,但是有很多情况,VMware支持KB,例如这样的 KB,专门讨论了气球驱动程序在不应该时错误地保留大量内存的情况。没错
您还必须考虑气球驱动程序的行为是否符合设计要求,并试图使服务器页面出内存,因为它迫切需要将内存提供给同一主机上的另一个VM。
还有一种可能,它根本不是虚拟机管理程序动态内存驱动程序,而只是某些流氓设备驱动程序。
驱动程序通常分配带有3个字符或4个字符标签的“标记”内存,以提示有关哪个驱动程序负责分配。
Windows SDK / DDK的一部分poolmon.exe可以帮助诊断。
就像我说的那样,大胆猜测,但这是我所能拥有的最好的数据。
好吧,从2005年到2016年,我拥有所有可以想象的SQL Server版本,而且我还没有看到任何内存泄漏像实际使用的mem一样大(100%)。查看是否为虚拟机启用了动态内存。
Driver Locked
是您应该专注的数字。在您的特定情况下,Driver Locked
可能是Hyper-V驱动程序之一,该驱动程序锁定了所有未使用的内存(已分配给VM,但由atm对其未使用),因此它可以“将其”提供给配置了动态内存的某些其他VM,甚至可以主机操作系统,无论何时需要它。您可以通过在该虚拟机中打开一些大文件或占用大量内存的应用程序来对其进行测试-DriverLocked内存应随着其他指标的增加而减少。恕我直言,如果您没有在所有VM上过多分配过多的内存,则不必担心。