Я могу сказать Windows не выгружать память конкретных процессов?

В настоящее время вы не можете анимировать по высоте, если одна из задействованных высот равна auto, вам нужно установить две явные высоты.

15
задан Luca Martinetti 24 June 2009 в 15:15
поделиться

3 ответа

Вы можете использовать VirtualLock для предотвращения подкачки памяти на диск, но я действительно думаю, что вам лучше позволить ОС управлять системной памятью. У него неплохо получается, и я бы не стал сомневаться в том, почему ОС меняет местами на диск, если бы я действительно не знал, что делаю.

17
ответ дан 1 December 2019 в 02:20
поделиться

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

Кроме того, если система выполняет большой объем операций ввода-вывода, для повышения производительности может быть лучше использовать рассматриваемая память для буферов, а не для данных приложения, как описано Martin Pool

0
ответ дан 1 December 2019 в 02:20
поделиться

VirtualLock по умолчанию в спешке исчерпает квоту, даже если вы разрешите пользователю (по умолчанию параметр политики безопасности «Блокировать страницы в памяти» не имеет записей (даже для администратора) ).

Если вы все же настроите это, вам также нужно будет установить «Настроить квоты памяти для процесса».

Этот вопрос немного неоднозначен, какую часть пространства виртуальной машины вы хотите предотвратить от подкачки вне? Куча / стек / модули? ...?

В целом, одно из решений, которое я использовал в прошлом, - это создать DLL с большим разделом, который был READ + WRITE, неподвижным, вы также можете пометить его EXECUTE и SHARED, если это необходимо, но тогда я бы HeapCreate в раздел этого модуля, что позволяет мне использовать его как кучу.

Вы можете найти точный бит для установки здесь , IMAGE_SCN_MEM_NOT_PAGED похоже, что это поможет.

Если вы пройдете через процесс маркировки всех ваших модулей и секций этим битом, загрузчик модулей Windows не будет взимать определенную квоту пользователя или требовать политику изменить настройки в каждой системе, в которой вы развертываете свой код. Вам нужно будет ввести код в специальной прокладке, чтобы обеспечить доступ к HEAP, который вы создаете, и в этих NON_PAGEABLE dll.

Это небольшая работа, но в прошлом у меня это работало хорошо, у меня было дополнительное требование для совместного использования памяти для нескольких процессов, которые базировались на одном и том же адресе.

Я думаю, что проще всего попробовать полностью отключить файл подкачки. Но до этого, если вы используете ОС Vista / 2008 +, подкачка, которую вы видите, может быть связана с суперфитчем, который может быть упреждающей «настройкой» ваша система с предположением, что в ближайшее время вам нужно будет использовать то или иное приложение. Некоторые другие простые задачи заключаются в том, чтобы остановить неиспользуемые службы, такие как поиск, который может индексировать огромное количество файлов, также вы должны войти в свой «планировщик задач», который настраивает системные задачи, по умолчанию в большинстве систем по умолчанию есть несколько десятков. действия, которые передают весь дамп Доктора Ватсона в MS, дефрагментируют ваш диск и ряд других, возможно, чрезвычайно интенсивных операций с памятью.

Вы можете ответить немного подробнее, чтобы получить более точные ответы ... но еще одно предложение было бы просто купить большой твердотельный накопитель и использовать его исключительно для подкачки, помните, что со временем общая производительность ухудшится до размера из-за неправильного сопоставления блоков, которые являются общими для всех существующих технологий SSD. невыгружаемый хост CLR использует SetProcessWorkingSetSize , SetProcessWorkingSetSizeEx (в Windows Server 2003 и выше) и VirtualLock API для обеспечения выделения памяти он заблокирован в физической памяти. Обратите внимание, что использование вышеуказанных API не гарантирует с абсолютной уверенностью. что никакого пейджинга не будет; вместо этого это сводит к минимуму вероятность того, что это произойдет очень исключительные сценарии. В некоторых мы провели нагрузочные тесты, даже когда система в целом была перегружена из-за нехватки физической памяти в процессе не наблюдались ошибки страницы с использованием невыгружаемого хоста CLR.

12
ответ дан 1 December 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: