CacheSet v1.0Автор: Марк Руссинович (Mark Russinovich)
Опубликовано 1 ноября 2006г.
ВведениеCacheSet — это приложение, позволяющее управлять параметрами рабочего набора кэша файлов системы. В отличие от CacheMan, CacheSet работает во всех версиях ОС NT и будет работать без изменений в последующих выпусках пакетов обновления. Помимо контроля минимального и максимального размеров рабочего набора, эта программа позволяет сбрасывать рабочий набор кэша таким образом, что впоследствии он увеличивается в размере по требованию с заданной исходной точки. Есть и другое отличие от CacheMan: изменения размера кэша, внесенные при помощи CacheSet, вводятся в действие незамедлительно. Вместе с приложением поставляется его полный исходный код. Программа CacheSet помогает настроить производительность размера кэша системы путем коррекции внутренних переменных. Примечание. Для эксплуатации CacheSet в NT 4.0 с пакетом обновления 4 и в последующих версиях этой ОС необходима привилегия «Increase Quota» (Увеличение квоты) (в учетных записях администраторов эта привилегия предусмотрена по умолчанию). Обновление программы CacheSet позволяет задействовать эту привилегию при наличии пакета обновления SP4 Установка и применениеПрограмма CacheSet работает во всех выпущенных версиях NT. После запуска программа выводит текущий размер кэша файлов системы (он обновляется два раза в секунду) и его пиковый размер (максимальное значение с момента последней перезагрузки); кроме того, она позволяет установить новый минимальный и максимальный размеры рабочего набора. Установка новых размеров После этого, как вы сможете заметить, размер кэша сразу изменится, а затем начнет быстро уменьшаться или, наоборот, прирастать. Дело в том, что раз в секунду система автоматически урезает рабочие наборы. Освобожденные страницы кэша, которые остаются в памяти, зачастую быстро передаются другим программам, которым нужна память в большем объеме. Аналогичным образом, возврат страниц в кэш происходит при доступе приложений к данным файловой системы. Сброс предыдущих значений Очистка рабочего набора кэша Интерфейс командной строки Синтаксис: CacheSet [минимальный размер рабочего набора] [максимальный размер рабочего набора] Принцип работыВ программе CacheSet вызов функции NtQuerySystemInformation применяется для получения данных о настройках кэша, а функции NtSetSystemInformation — для установки новых размеров. Исходя из сведений о рабочем наборе процесса диспетчер памяти NT принимает решение о том, сколько страниц физической памяти следует передать приложению. В связи с этим в определенных условиях диспетчер памяти может увеличить рабочий набор сверх максимума или, наоборот, сократить ниже минимума. В то же время, параметры определяют общие принципы распределения памяти, а значит, и скорость отклика приложения. Применительно к CacheSet в роли приложения выступает кэш файловой системы. NtSetSystemInformation осуществляет внутренний вызов функции MmAdjustWorkingSetSize, которая либо увеличивает, либо уменьшает рабочий набор приложения. Если функции MmAdjustWorkingSetSize передается третий параметр, равный единице, корректируется рабочий набор системного кэша; в противном случае выполняется коррекция текущего процесса (информационные вызовы системы распространяются только на системный кэш). Передача значений минимального и максимального размера, равных -1, приводит к выполнению функцией MmAjustWorkingSetSize операции очистки рабочего набора — иными словами, из рабочего набора приложения освобождаются все страницы. Брешь в системе защитыИнтересно, что для вызова интерфейса CacheSet не требуется особых привилегий. Таким образом, запустить программу CacheSet позволяет даже гостевая учетная запись. Трудно поспорить с тем, что это очевидная брешь в системе защиты, благодаря которой вносить изменения в политику регулировки размера системного кэша может каждый. Обновление. В пакете обновления 4 для NT 4.0 указанная брешь устранена — теперь для внесения изменений в рабочий набор кэша необходима привилегия «Increase Quota» (Увеличение квоты). Во всех учетных записях пользователей и групп административного уровня эта привилегия предусмотрена по умолчанию. К началу страницы |