У нас есть база данных Oracle, работающая на 64-битной Windows Server 2003 Enterprise Edition с 32 ГБ оперативной памяти.
База данных настроена на использование 10 ГБ для SGA (цель = макс = 10 ГБ) и 5 ГБ для кеша. При запуске диспетчер задач покажет около 12 ГБ свободной памяти. На этом сервере работает единственное приложение - база данных. В течение дня мы увидели, что объем свободной памяти уменьшился до 4 МБ.
Хотелось бы узнать, какое приложение съедает свободную память. Использование памяти не складывается ни в диспетчере задач, ни в perfmon. Мы подозреваем, что какой-то процесс занимает свободную память, а не освобождает ее. Как мы продолжим?
Проверьте память, выделенную для ядра / драйверов. Может быть, у вас подтекает драйвер. Сервер - это виртуальная машина? если это виртуальная машина и у вас есть диспетчер памяти паравиртуализации (например, тот, который поставляется с VMware Tools), драйвер балуна может занять некоторую свободную память, чтобы использовать ее для другой виртуальной машины. Проверьте, не перегружаете ли вы память на хосте.
Мы подозреваем, что какой-то процесс занимает свободную память, а не освобождает ее.
Звучит маловероятно, если бы это было так, оно должно появиться в Perfmon и Taskmanager.
Что произойдет, если вы запустите процесс, которому требуется много памяти? (например. http://www.soft.tahionic.com/download-memalloc/index.html - Не пробовал) Можно ли выделить без файла подкачки? Если это так, то нет другого нормального процесса, использующего память, и он, вероятно, будет использоваться какой-то закулисной оппортунистической системой, такой как кеширование.
Я считаю, что Windows не очищает выделенную память до тех пор, пока ее не запросит что-то еще. В противном случае ваша дорогостоящая оперативная память просто потратится впустую.
Теперь, когда процессу нужны новые страницы ОЗУ, резервный список - последнее место, куда система смотрит. Сначала он смотрит либо на список нулевых страниц, либо на список свободных страниц, в зависимости от того, что нужно сделать с новой страницей. Только если оба из них пусты, резервный список подвергается нападению. Таким образом, тем временем, если процесс дает сбой на странице, которую он недавно отбросил, и страница все еще находится в списке ожидания, эту страницу можно вернуть обратно в рабочий набор, и ошибка страницы будет устранена без необходимости перехода на диск. для этого. Список ожидания можно рассматривать как своего рода общесистемное расширение всех рабочих наборов. Или, другими словами, это своего рода страничный кеш. Из-за этого, а также механизма разделяемой памяти и некоторых других вещей, только около 10% ошибок страниц обычно требуют чтения с диска для устранения. Большинство из них разрешается в памяти. "- http://arstechnica.com/civis/viewtopic.php?p=10593745#p10593745