Проблема высокой загрузки памяти системным файловым кэшем на Windows Server 2008 R2
На одном из файловых серверов под управлением Windows Server 2008 R2 обнаружилась проблема с высокой загрузки оперативной памяти (RAM), выливающаяся в проблемы с производительностью сервера и запущенных на нем служб. Как оказалось, память забивалась системным файловым кэшем с метаданными файловой системы. Проблеме потенциально подвержены все файловые сервера с большим количеством файлов, к которым обращаются пользователя. Наиболее критична проблема для 64 битных версий Windows, на которых размер метафайла в памяти может занять практически всю емкость установленной оперативной памяти. В статье разберемся как проявляется проблема, выявим ее источники и способы решения.
Высокая загрузка оперативной памяти на файловом сервере Windows
Проблема проявляется следующим образом: в диспетчере задач (Task Manager) видим, что на сервере оперативная память занята на 95-99%.
Перейдя на вкладку процессов, не удастся найти какой-то утекший процесс с аномально высоким потреблением памяти. Кроме того, если навскидку сложить память, занятую всеми процессами, отображаемыми в диспетчере задач, даже близко не удается приблизиться к 50% физической памяти, установленной на сервере. Так кто же съел всю память?
Реальный расклад по использованию оперативной памяти может дать утилита RAMMap (Марка Руссиновича). Качаем архив с утилитой и запускаем из архива файл RAMMap.exe с правами администратора. На вкладке Use Counts, видим, что больше всего физической памяти использует объектом Metafile (в нашем случае на него приходится 11 из 25 Гб оперативной памяти сервера).
Что такое метафайл в Windows?
Метафайл (Metafile) — это часть системного кэша, который содержит метаданные файловой системы NTFS и используется для увеличения быстродействия файловой системы при доступе к файлам. Метаданные NTFS включают в себя данные таблицы MFT (Master File Table). Для каждого файла/папки, к которому обращались пользователи, в метафайле создается соответствующий блок, размером как минимум 1 Кб (запись об атрибуте каждого файла занимает 1кб, и каждый файл имеет как минимум один атрибут). Таким образом, на файловых серверах с большим количеством файлов, к которым идут постоянные обращения, размер системного кэша NTFS (метафайла) может достигать нескольких гигабайт.
Отключить этот кэш или управлять им с помощью стандартных средств Windows не получится. Как решение, можно увеличить количество памяти на сервере, но реализуемо это далеко не всегда.
Если перезагрузить сервер, память используемая метафайлом освобождается, но со временем размер метафайла в памяти все равно начинает неконтролируемо расти.
К примеру, оценить размер MFT таблицы можно с помощью еще одной утилиты Руссиновича – ntfsinfo. К примеру, в нашем примере для 2 Тб диска размер MFT таблицы составляет 13 Гб.
Быстрая очистка метафайла MFT в памяти
Утилита RAMMap предоставляет возможность быстрой очистки используемой памяти от мусора без необходимости перезагрузки сервера. Для этого нужно в меню выбрать раздел Empty -> Empty System Working Set. После этой операции размер памяти под metafile уменьшился в десятки раз, а процент использования RAM сервером упал с 95% до 26%.
Основной недостаток такого метода – процесс очистки ручной и никак не автоматизируется.
Служба Dynamic Cache Service для управления файловым кэшем
Другим, более кардинальным, решением проблемы высокой загрузки оперативной памяти метафайлом файловой системы является установка службы Dynamic Cache Service (http://www.microsoft.com/en-us/download/details.aspx?id=9258). Данная служба через системные API позволяет управлять параметрами выделяемого кэша.
Установка DynCache довольно простая (подробные инструкции есть в архиве с программой).
- Копируем файл в DynCache.exe в каталог %SystemRoot%\System32
- Создадим службу DynCache командой sc create DynCache binpath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= «Dynamic Cache Service»
- Импортируем файл DynCache.reg в реестр (содержит дефолтные значения)
- Изменим значения следующих ключей реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters
- MaxSystemCacheMBytes: 4096 (dec) – максимальный размер кэша
- MinSystemCacheMBytes: 100 (dec) – минимальный размер
В нашем случае, после установки службы DynCache, использование памяти метафайлом перестало превышать заданного нами значения 4 Гб. Пользователи каких-либо проблем с ухудшением производительности файлового сервера не выявили.
Утечка памяти windows server 2008 r2
Профиль | Отправить PM | Цитировать
Всем здравствуйте, помогите пожалуйста разобраться с бюджетным «сервером», наблюдаю утечку памяти, конфигурация следующая:
Железо:
Мать Asus Gryphon Z87
Проц Intel Core 7 3,5 Ghz
Память Kingston HyperBeats Kit 16 Gb
Винты WD Raid Edition 1 Tb (два)
Софт:
Windows Server 2008 R2
VMWare 10
Kerio 6.5
Acronis Backup and Restore 11,5
Doctor Web 8,2
Symantec PGP 10
Описываю что проделал и что получилось:
Включил в биосе RAID, через стандартную асус утилиту настроил рэйд 1, установил Windows Server 2008 R2, поднял на нем роли домена, днс, файлового сервера, установил Kerio (с помощью него организовал шлюз), установил PGP, создал диск PGP (на нем создал Общую папку) , поставил Doctor Web, VMWare , Acronis. Через неделю стал замечать большую загрузку памяти, примерно 5 гигабайт, искал какой процесс выедает так и не нашел, память медленно растет. Прочитал много литературы, сделал ряд тестов с помощью poolmon и Ram map.
Вот результаты пулмона:
После перезагрузки
Tag Type Allocs Frees Diff Bytes Per Alloc
CM31 Paged 13737 0 13737 64978944 4730
Ntff Paged 55488 3189 52299 64432368 1232
MmSt Paged 109889 52509 57380 63058128 1098
Ddk Nonp 8718 8635 83 52947264 637918
ismc Nonp 2 0 2 34213888 17106944
FMfn Paged 1377254 1325224 52030 28028752 538
File Nonp 1427083 1349151 77932 26140512 335
CIcr Paged 337953 325786 12167 25768944 2117
MmRe Paged 3134 1403 1731 20672432 11942
Ntfx Nonp 62281 3920 58361 19954640 341
VMON Paged 7645 2908 4737 19702416 4159
CM25 Paged 3414 0 3414 19050496 5580
VMON Nonp 270793 67512 203281 16804192 82
IoNm Paged 1211967 1154640 57327 16363024 285
Mdl Nonp 97514 29160 68354 14264848 208
MmCa Nonp 105652 52521 53131 13570720 255
Irp Nonp 1264993 1242670 22323 11870144 531
FMsl Nonp 60601 3239 57362 11013504 192
SCNR Nonp 588134 524259 63875 9863072 154
NtFs Paged 152960 69028 83932 9567744 113
NtfF Paged 6878 875 6003 8452224 1408
Ntfc Paged 47635 278 47357 6819408 144
FSro Paged 86271 40522 45749 6587856 144
TdxC Nonp 36192 26241 9951 6527856 656
PGPW Nonp 413924 413863 61 4331920 71015
FSro Nonp 86263 40514 45749 3659920 80
RaDI Paged 25271 8 25263 3637872 144
Ntf0 Paged 156395 98157 58238 3612224 62
Через два дня:
Tag Type Allocs Frees Diff Bytes Per Alloc
RaDI Paged 1428159 8 1428151 205653744 144
MmSt Paged 236611 173101 63510 75182880 1183
CM31 Paged 68423 53091 15332 71966720 4693
PGPW Nonp 1241769 1241639 130 70262176 540478
Ntff Paged 79367 23286 56081 69091792 1232
Ddk Nonp 339436 339353 83 52947264 637918
MmRe Paged 5583 2555 3028 39414848 13016
ismc Nonp 2 0 2 34213888 17106944
VMON Paged 16054 8385 7669 31711888 4135
FMfn Paged 4048543 3991435 57108 30258656 529
File Nonp 16374453 16292722 81731 27419120 335
CIcr Paged 338075 325908 12167 25768944 2117
Ntfx Nonp 92328 29444 62884 21475136 341
CM25 Paged 3414 0 3414 19050496 5580
IoNm Paged 11109093 11046916 62177 17564192 282
MmCa Nonp 230594 173076 57518 14681600 255
Mdl Nonp 386936 318718 68218 14236560 208
Irp Nonp 1378884 1356924 21960 12347552 562
VMON Nonp 986497 841519 144978 12138000 83
FMsl Nonp 78931 17549 61382 11785344 192
SCNR Nonp 1753428 1682540 70888 11211152 158
NtFs Paged 1545452 1455399 90053 10205216 113
NtfF Paged 13757 7011 6746 9498368 1408
Ntfc Paged 70172 18319 51853 7466832 144
FSro Paged 99967 52938 47029 6772176 144
TdxC Nonp 86853 77604 9249 6067344 656
Ntf0 Paged 666762 604238 62524 4079328 65
Нашел список тегов, нашел в нем Radi — один из драйверов рэйда.
Помогите найти куда девается столько памяти, должен ли рейд так выедать память, при чем когда по сети копируешь большой файл, количество сьеденной памяти значительно увеличивается..
Утечка памяти windows server 2008 r2
Профиль | Отправить PM | Цитировать
Всем здравствуйте, помогите пожалуйста разобраться с бюджетным «сервером», наблюдаю утечку памяти, конфигурация следующая:
Железо:
Мать Asus Gryphon Z87
Проц Intel Core 7 3,5 Ghz
Память Kingston HyperBeats Kit 16 Gb
Винты WD Raid Edition 1 Tb (два)
Софт:
Windows Server 2008 R2
VMWare 10
Kerio 6.5
Acronis Backup and Restore 11,5
Doctor Web 8,2
Symantec PGP 10
Описываю что проделал и что получилось:
Включил в биосе RAID, через стандартную асус утилиту настроил рэйд 1, установил Windows Server 2008 R2, поднял на нем роли домена, днс, файлового сервера, установил Kerio (с помощью него организовал шлюз), установил PGP, создал диск PGP (на нем создал Общую папку) , поставил Doctor Web, VMWare , Acronis. Через неделю стал замечать большую загрузку памяти, примерно 5 гигабайт, искал какой процесс выедает так и не нашел, память медленно растет. Прочитал много литературы, сделал ряд тестов с помощью poolmon и Ram map.
Вот результаты пулмона:
После перезагрузки
Tag Type Allocs Frees Diff Bytes Per Alloc
CM31 Paged 13737 0 13737 64978944 4730
Ntff Paged 55488 3189 52299 64432368 1232
MmSt Paged 109889 52509 57380 63058128 1098
Ddk Nonp 8718 8635 83 52947264 637918
ismc Nonp 2 0 2 34213888 17106944
FMfn Paged 1377254 1325224 52030 28028752 538
File Nonp 1427083 1349151 77932 26140512 335
CIcr Paged 337953 325786 12167 25768944 2117
MmRe Paged 3134 1403 1731 20672432 11942
Ntfx Nonp 62281 3920 58361 19954640 341
VMON Paged 7645 2908 4737 19702416 4159
CM25 Paged 3414 0 3414 19050496 5580
VMON Nonp 270793 67512 203281 16804192 82
IoNm Paged 1211967 1154640 57327 16363024 285
Mdl Nonp 97514 29160 68354 14264848 208
MmCa Nonp 105652 52521 53131 13570720 255
Irp Nonp 1264993 1242670 22323 11870144 531
FMsl Nonp 60601 3239 57362 11013504 192
SCNR Nonp 588134 524259 63875 9863072 154
NtFs Paged 152960 69028 83932 9567744 113
NtfF Paged 6878 875 6003 8452224 1408
Ntfc Paged 47635 278 47357 6819408 144
FSro Paged 86271 40522 45749 6587856 144
TdxC Nonp 36192 26241 9951 6527856 656
PGPW Nonp 413924 413863 61 4331920 71015
FSro Nonp 86263 40514 45749 3659920 80
RaDI Paged 25271 8 25263 3637872 144
Ntf0 Paged 156395 98157 58238 3612224 62
Через два дня:
Tag Type Allocs Frees Diff Bytes Per Alloc
RaDI Paged 1428159 8 1428151 205653744 144
MmSt Paged 236611 173101 63510 75182880 1183
CM31 Paged 68423 53091 15332 71966720 4693
PGPW Nonp 1241769 1241639 130 70262176 540478
Ntff Paged 79367 23286 56081 69091792 1232
Ddk Nonp 339436 339353 83 52947264 637918
MmRe Paged 5583 2555 3028 39414848 13016
ismc Nonp 2 0 2 34213888 17106944
VMON Paged 16054 8385 7669 31711888 4135
FMfn Paged 4048543 3991435 57108 30258656 529
File Nonp 16374453 16292722 81731 27419120 335
CIcr Paged 338075 325908 12167 25768944 2117
Ntfx Nonp 92328 29444 62884 21475136 341
CM25 Paged 3414 0 3414 19050496 5580
IoNm Paged 11109093 11046916 62177 17564192 282
MmCa Nonp 230594 173076 57518 14681600 255
Mdl Nonp 386936 318718 68218 14236560 208
Irp Nonp 1378884 1356924 21960 12347552 562
VMON Nonp 986497 841519 144978 12138000 83
FMsl Nonp 78931 17549 61382 11785344 192
SCNR Nonp 1753428 1682540 70888 11211152 158
NtFs Paged 1545452 1455399 90053 10205216 113
NtfF Paged 13757 7011 6746 9498368 1408
Ntfc Paged 70172 18319 51853 7466832 144
FSro Paged 99967 52938 47029 6772176 144
TdxC Nonp 86853 77604 9249 6067344 656
Ntf0 Paged 666762 604238 62524 4079328 65
Нашел список тегов, нашел в нем Radi — один из драйверов рэйда.
Помогите найти куда девается столько памяти, должен ли рейд так выедать память, при чем когда по сети копируешь большой файл, количество сьеденной памяти значительно увеличивается..