Снижение производительности при обращении к функции UnmapViewOfFile

Переводы статьи Переводы статьи
Код статьи: 815227 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

При работе с программами, использующими представления сопоставленных файлов размером более 500 мегабайт (МБ), можно столкнуться со значительным падением производительности Представления сопоставленных файлов часто используются для обмена данными между двумя и более процессами. Данное падение производительности возникает при обращении к функции UnmapViewOfFile.

Причина

Эта проблема возникает при сопоставлении программой представлений файлов размером более 500 МБ в операционных системах Microsoft Windows Server 2003 и Microsoft Windows XP с пакетом обновления 1 (SP1).

Решение

Пакет обновления 1 (SP1) для Windows XP

Сведения о пакете обновления

Чтобы решить эту проблему, установите последний пакет обновления для Windows XP. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
322389 Как получить последний пакет обновления для Windows XP

Сведения об исправлении

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

Если исправление доступно для загрузки, в верхней части статьи базы знаний отображается раздел «Исправление доступно для загрузки». Если этот раздел не отображается, обратитесь в службу поддержки пользователей Майкрософт, чтобы получить данное исправление.

Примечание. Если возникли другие проблемы или необходимо устранить неполадки, возможно, потребуется создать отдельный запрос. Дополнительные услуги по технической поддержке, не связанные с данным исправлением, оплачиваются на стандартных условиях. Чтобы получить полный список телефонных номеров службы поддержки пользователей корпорации Майкрософт или создать отдельный запрос, посетите веб-узел корпорации Майкрософт по следующему адресу:
http://support.microsoft.com/contactus/?ws=support
Примечание. В форме «Исправление доступно для загрузки» отображаются языки, для которых доступно исправление. Если нужный язык не отображается, это означает, что исправление для данного языка отсутствует. Английская версия исправления содержит атрибуты файлов, приведенные в следующей таблице, или более поздние. Дата и время для файлов указаны в формате UTC. При просмотре сведений о файле в системе происходит перевод соответствующих значений в местное время. Чтобы узнать разницу между временем в формате UTC и местным временем, откройте вкладку Часовой пояс элемента «Дата и время» на панели управления.
   Дата         Время Версия     Размер Имя файла Платформа
   ----------------------------------------------------------------------- 
   28-фев-2003  16:17    5.1.2600.1178   1 895 424  Ntkrnlmp.exe  i386
   28-фев-2003  16:17    5.1.2600.1178   1 951 232  Ntkrnlpa.exe  i386
   28-фев-2003  16:17    5.1.2600.1178   1 923 584  Ntkrpamp.exe  i386
   28-фев-2003  16:17    5.1.2600.1178   1 927 424  Ntoskrnl.exe  i386
   28-фев-2003  16:17    5.1.2600.1178   5,826,432  Ntkrnlmp.exe  ia-64 
   28-фев-2003  16:17    5.1.2600.1178   5,736,704  Ntoskrnl.exe  ia-64

Windows Server 2003

Несмотря на то, что проблема проявляется при вызове функции UnmapViewOfFile, необходимое изменение кода осуществляется в ядре. Из-за опасности изменения основных функций управления памятью исправление Windows Server 2003 не будет доступно. Исправление кода для Windows Server 2003 будет доступно в пакете обновления 1 (SP1) для Windows Server 2003.

Программы, подверженные данной проблеме, могут быть определены с помощью системного монитора. Для этого выполните следующие действия.
  1. Создайте журнал системного монитора, следуя инструкциям, приведенным в статье 248345 базы знаний Майкрософт, или воспользуйтесь мастером системного монитора.
    Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
    248345 Создание журнала с помощью системного монитора Windows (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
  2. Зарегистрируйте активность сервера при большой загрузке.
  3. Остановите ведение журнала системного монитора и проверьте Working Set Size Peak (Максимальный размер рабочего множества) для объекта Process performance (Производительность процесса). Найдите все процессы, размер рабочего множества которых превышает 500 МБ.
  4. Вычьтите значение размера рабочего множества каждого процесса, определенного в шаге 3, из соответствующей записи Private Bytes (Байты исключительного пользования) для объекта Process performance (Производительность процесса).
Если рабочее множество для процесса больше байтов исключительного пользования на 500 МБ, программа может использовать большие отображенные представления файлов и может быть подвержена снижению производительности при вызове функции UnmapViewOfFile. Если эти программы произвольно перестают отвечать на запросы в течение длительного времени, может быть необходим отладочный анализ или проверка кода для выяснения того, подвержены ли программы этой проблеме.

Если программа подвержена этой проблеме с производительностью, для Windows Server 2003 доступны следующие временные решения, пока не будет выпущен пакет обновления 1 (SP1) для Windows Server 2003.
  1. Удалите вызовы функции UnmapViewOfFile в программах, работающих в системе Windows Server 2003. Вызов этой функции необходим только в том случае, если процесс должен сопоставить несколько разделов памяти одному адресу памяти. Операционная система очистит общие разделы после закрытия последнего потока.
  2. При необходимости вызова функции UnmapViewViewOfFile следует написать новую программу для создания объекта-задания (CreateJobObject). Используйте функцию SetInformationJobObject для установки максимального размера рабочего множества приблизительно в 500 МБ, установив свойство MaximumWorkingSetSize в параметре _JOBOBJECT_BASIC_LIMIT_INFORMATION. (Значение этого параметра – 24 МБ с параметром /3GB.) Сопоставьте все необходимые процессы с этим объектом-заданием.
Эта программа должна быть запущена после запуска необходимых процессов. При перезапуске какого-либо из этих процессов программа также должна быть перезапущена. Ограничение размера рабочего множества для процесса не вызовет существенное снижение производительности. При наличии в системе достаточно объема доступной оперативной памяти страницы, удаленные из рабочего множества, будут помещены в список ожидания. При возникновении ошибки страницы она, как правило, будет обрабатываться страницей в списке ожидания в физической памяти. Для определения действительного влияния этого способа решения на производительность должны быть выполнены тесты производительности.

Статус

Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в разделе «Информация в данной статье применима к». Первое исправление этой проблемы появилось в пакете обновления 2 (SP2) для Windows XP. Это исправление планируется включить в пакет обновления 1 (SP1) для Windows Server 2003.

Свойства

Код статьи: 815227 - Последний отзыв: 11 сентября 2008 г. - Revision: 6.3
Информация в данной статье относится к следующим продуктам.
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows XP Home Edition SP1
  • Microsoft Windows XP Professional SP1
Ключевые слова: 
kbautohotfix kbhotfixserver kbqfe kbwinxpsp2fix kbtshoot kbenv kbqfe kbwinxppresp2fix kbfix kbbug KB815227

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com