Назад | Перейти на главную страницу

Что использует всю мою память?

РЕШЕНИЕ: В этой ветке есть много чего почитать, поэтому я просто резюмирую здесь, чтобы помочь.

Проблема заключается в драйвере воздушного шара VMWare ESX, который «раздувает» объем «используемой» памяти, которую видит ОС, чтобы заставить ОС сбрасывать кеши и уменьшать размер рабочего набора. Это создает большое количество «используемых» физических модулей памяти, которые невозможно учесть, глядя на процессы. Вы можете посмотреть на график производительности консоли VMWare для виртуальных машин и увидеть, какой драйвер балуна используется.

Решением проблемы производительности было увеличение объема зарезервированной памяти для сервера, что ограничивает объем памяти, который драйвер балуна может украсть у вас.

У меня есть 32-разрядный терминальный сервер Windows 2003, на котором запущена локальная копия SQL Server (полная версия, а не экспресс-версия) и размещена среда разработки Visual Studio 2008 для нескольких разработчиков. Машины - это виртуальная машина, работающая на vSphere 4, с выделенной ей 4 ГБ памяти.

Когда у меня есть 2 или 3 пользователя, они используют более 4 ГБ выделенной памяти, но я не могу найти, где используется большая часть этой памяти. Когда я складываю всю память в диспетчере задач для всех пользователей, она составляет не более 2 ГБ. Что использует остальные?

Я пробовал цикл SQL-сервера, который забирает только ту память, которую я вижу, выделенную для SQL-сервера. То же самое и с Visual Studio: если я ее выключу, из выделенного пула памяти будет выделена только сумма, которую я вижу в диспетчере задач. Я также установил параметры памяти для SQL Server, чтобы использовать максимум 512 МБ.

Я не верю, что это проблема с системным или файловым кешем, поскольку Windows не включает эту память в зафиксированную статистику AFAIK.

Это сводит меня с ума. Для всех этих вещей должно быть более чем достаточно памяти, в зависимости от количества, которое они, кажется, используют. Как мне определить, где используется эта дополнительная память?

Обновить

Что касается статистики памяти, на которую я смотрю, ни одна из них не складывается.

Например, прямо сейчас, когда 1 пользователь вошел в систему и работает только с Visual Studio и сервером WebDev, а также с SQL Server и IIS в фоновом режиме. Я складываю байты Private и получаю около 1049740 КБ памяти, но диспетчер задач сообщает, что за фиксацию взимается плата. 1146M, в результате чего неучтенными остаются около 150 МБ.

Когда 3 пользователя вошли в систему, это всего лишь около 2 ГБ частных байтов (много памяти используется совместно, потому что пользователи просто запускают Visual Studio).

Размер виртуальной машины тоже не складывается, поскольку обычно он не сильно отличается от байтов личного пользования. Хотя, как ни странно, число в Process Explorer для виртуальной памяти сильно отличается от числа в диспетчере задач. PE показывает виртуальную память SQL Server на уровне 1 791 444 КБ для SQL Server и 1 251 432 КБ для Visual Studio, но общая стоимость фиксации для машины составляет всего 1146 МБ.

В диспетчере задач нет столбца для размера WS, но в PE он перечисляет WS как частный и общий, и эти числа значительно меньше, чем плата за фиксацию, даже если они сложены.

ОБНОВИТЬ:

Я знаю, что в этом вопросе много деталей, поэтому, возможно, вопрос непонятен.

Как мне узнать, какие процессы используют всю выделенную память в моей системе? Память, предоставленная TaskManager и Process Explorer, не складывается должным образом и показывает только около 2 ГБ выделенной памяти, хотя выделено 4 ГБ.

sql server и инструменты vmware борются за пространство памяти в vm. Это, вероятно, усугубляется запуском терминальных служб и vs.

Если вы еще этого не сделали, зайдите в настройки виртуальной машины и создайте полное резервирование памяти 4 Гб на вкладке ресурсов. Это предотвратит попытку драйвера балуна освободить память в виртуальной машине.

Вы также можете настроить параметры на сервере sql, чтобы он выделял только часть оперативной памяти системы. Может быть, 2 ГБ макс.

Вероятно, это SQL-сервер. По умолчанию (если я не ошибаюсь) SQL-сервер будет выделять столько памяти, сколько может, если специально не настроен на использование определенного количества памяти (доступной в свойствах SQL-сервера). Эта выделенная память не отображается в диспетчере задач. Что вам нужно сделать, так это запустить perfmon и добавить счетчики «SQL Server: Memory Manager: Target Server Memory» и «SQL Server: Memory Manager: Total Server Memory» и посмотреть, сколько памяти SQL-сервер готов использовать и как на самом деле он потребляет много памяти.

Ты серьезно?

У меня есть 32-разрядный терминальный сервер Windows 2003, на котором запущена локальная копия SQL Server (полная версия, а не экспресс) и размещена среда разработки Visual Studio 2008 для нескольких разработчиков.

Так же как информация:

Моя виртуальная рабочая среда - это система Windows 7 с памятью 4g с Visual Studio и SQL Server. 64 бит. Я РЕГУЛЯРНО использую около 3,5 ГБ из них. Один только мой экземпляр Visual Studio часто составляет около 500 МБ, плюс отладка занимает много работы, хотя, возможно, ненадолго. Добавьте к этому обычных виновников (справочная система, браузеры) ....

... вы с самого начала преступно занижены. Машина, которую вы отметили, хороша, возможно, для одного активного разработчика. Два, если не много, используются.

Что использует остальные?

Система много использует. Не забывайте, что все экраны должны быть отрисованы, а видеокарта здесь бесполезна - поэтому должна идти копия всего буфера памяти (что может быть много - какие разрешения, сколько экранов мы здесь говорим ?, учитывая 2003 год, я предполагаю, что по одному на разработчика)

Подсказка:

Обновитесь до:

  • 2008 R2. MUCh лучше RDP, включая НАСТРОЙКИ МУЛЬТИ МОНИТОРА. На данный момент я работаю с 2 экранами удаленно, 2008 R2 копирует настройку моего монитора с моего клиента Windows 7. ОЧЕНЬ приятно работать. Это обновление для меня действительно сделало удаленную работу КАК удобной - я привык работать с 2+ экранами в течение многих лет, Remote всегда был неприятным.
  • 64-битная ОС. 32 бит просто не то. Даже при том, что все программное обеспечение является 32-битным (VIsual Studio и т. Д.), 64-битный hsot может иметь намного больше памяти и фактически выдавать 3 ГБ для каждого запуска процесса. И там довольно много бега.

И вам понадобится намного больше оперативной памяти. Я бы сказал, что 2 ГБ НА РАЗРАБОТЧИК - довольно хороший состав (учитывая 2+ разработчиков). Вам МОЖНО обойтись меньшим, но это маловероятно. Зависит от того, что они на самом деле делают, но большие приложения в Visual Studio занимают МНОГО памяти. Особенно во время компиляции,