W funkcji UnmapViewOfFile następuje pogorszenie wydajności

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 815227 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Program, który wykorzystuje zmapowane widoki plików o rozmiarze większym niż 500 megabajtów (MB), jest podatny na znaczne pogorszenie wydajności. Zmapowane widoki plików są często wykorzystywane do wymiany informacji między dwoma procesami. Spadek wydajności następuje w funkcji UnmapViewOfFile.

Przyczyna

Ten problem występuje, jeśli program mapuje widoki plików o rozmiarze większym niż 500 MB w systemie Microsoft Windows Server 2003 lub Microsoft Windows XP z dodatkiem Service Pack 1 (SP1).

Rozwiązanie

System Windows XP z dodatkiem Service Pack 1

Informacje dotyczące dodatku Service Pack

Aby rozwiązać ten problem, należy zaopatrzyć się w najnowszy dodatek Service Pack dla systemu Windows XP. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
322389 Jak uzyskać najnowszy dodatek Service Pack dla systemu Windows XP

Informacje o poprawce

Firma Microsoft udostępniła obsługiwaną poprawkę. Jednak jest ona przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko w tych systemach, w których występuje opisany problem. Poprawka może być nadal w fazie testowania. Jeżeli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.

Jeśli poprawka jest dostępna do pobrania, na początku tego artykułu z bazy wiedzy Knowledge Base jest umieszczona sekcja „Poprawka dostępna do pobrania”. Jeśli nie ma tej sekcji, skontaktuj się z działem pomocy technicznej firmy Microsoft w celu uzyskania poprawki.

Uwaga W przypadku wystąpienia dodatkowych błędów lub konieczności rozwiązania problemu może być wymagane utworzenie osobnego zlecenia usługi. Typowe opłaty za korzystanie z pomocy technicznej będą pobierane tylko w przypadku dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu tej poprawki. Aby uzyskać pełną listę numerów telefonów Pomocy technicznej firmy Microsoft lub utworzyć osobne zlecenie usługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://support.microsoft.com/contactus/?ws=support
Uwaga Sekcja „Poprawka dostępna do pobrania” zawiera listę języków, dla których ta poprawka jest dostępna. Jeśli odpowiedni język nie jest widoczny, oznacza to, że ta poprawka nie jest dostępna dla tego języka. Wersja anglojęzyczna tej poprawki ma atrybuty plików pokazane w poniższej tabeli (lub nowsze). Daty i godziny ostatniej modyfikacji tych plików podano zgodnie z czasem UTC (Universal Time Coordinate). Są one zamieniane na czas lokalny po wyświetleniu informacji o pliku. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, skorzystaj z karty Strefa czasowa narzędzia Data i godzina w Panelu sterowania.
   Data         Godzina   Wersja       Rozmiar     Nazwa pliku  Platforma
   ----------------------------------------------------------------------- 
   28-lut-2003  16:17    5.1.2600.1178   1 895 424  Ntkrnlmp.exe  i386
   28-lut-2003  16:17    5.1.2600.1178   1 951 232  Ntkrnlpa.exe  i386
   28-lut-2003  16:17    5.1.2600.1178   1 923 584  Ntkrpamp.exe  i386
   28-lut-2003  16:17    5.1.2600.1178   1 927 424  Ntoskrnl.exe  i386
   28-lut-2003  16:17    5.1.2600.1178   5 826 432  Ntkrnlmp.exe  ia-64
   28-lut-2003  16:17    5.1.2600.1178   5 736 704  Ntoskrnl.exe  ia-64

System Windows Server 2003

Mimo że problem występuje w wyniku wywołania funkcji UnmapViewOfFile, wymagana jest zmiana kodu głęboko w jądrze. Ze względu na ryzyko związane z modyfikowaniem podstawowych funkcji zarządzania pamięcią, poprawka do systemu Windows Server 2003 nie będzie dostępna. Poprawka kodu dla systemu Windows Server 2003 będzie dostępna w dodatku Service Pack 1 dla systemu Windows Server 2003.

Programy, których może dotyczyć ten problem, można zidentyfikować za pomocą monitora wydajności. Aby to zrobić, wykonaj następujące kroki:
  1. Utwórz dziennik monitora wydajności, wykonując kroki opisane w artykule bazy wiedzy Microsoft Knowledge Base 248345 lub korzystając z kreatora monitora wydajności.
    Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
    248345 How to create a log using System Monitor in Windows (j. ang.)
  2. Rejestruj aktywność serwera podczas dużego obciążenia.
  3. Zatrzymaj dziennik monitora wydajności i przejrzyj wskaźnik Maksimum rozmiaru zestawu roboczego w obiekcie wydajności Proces. Zobacz, czy dla któregokolwiek procesu rozmiar zestawu roboczego przekroczył 500 MB.
  4. Dla każdego procesu zidentyfikowanego w kroku 3 odejmij wartość rozmiaru zestawu roboczego od odpowiedniego wpisu Bajty prywatne w obiekcie wydajności Proces.
Jeśli zestaw roboczy dla procesu jest o 500 MB większy niż bajty prywatne, program może wykorzystywać duże zmapowane widoki plików, co może wpływać na pogorszenie wydajności podczas wywoływania funkcji UnmapViewOfFile. Jeśli te programy czasami się zawieszają lub nie odpowiadają przez dłuższy czas, w celu zweryfikowania, czy dotyczy ich ten problem, może być konieczny przegląd kodu lub analiza debugowania.

Jeśli ten problem z wydajnością dotyczy danego programu, dla systemu Windows Server 2003 możliwe są następujące obejścia zmiany kodu do czasu, gdy będzie dostępny dodatek Service Pack 1 dla systemu Windows Server 2003.
  1. Usuń wywołania funkcji UnmapViewOfFile z programów uruchamianych w systemie Windows Server 2003. Wywołanie tej funkcji jest konieczne tylko wtedy, gdy proces musi mapować wiele sekcji pamięci na ten sam adres pamięci. System operacyjny będzie czyścił udostępnione sekcje, gdy tylko zakończy się ostatni wątek.
  2. Jeśli musisz korzystać z funkcji UnmapViewOfFile , napisz nowy program, aby utworzyć obiekt zadania (CreateJobObject). Za pomocą funkcji SetInformationJobObject zmień maksymalny rozmiar zestawu roboczego na około 500 MB przez ustawienie właściwości MaximumWorkingSetSize w parametrze _JOBOBJECT_BASIC_LIMIT_INFORMATION. (To ustawienie jest z przełącznikiem 24 MB/3GB). Skojarz wszystkie wymagane procesy z tym obiektem zadania.
Ten program powinien zostać uruchomiony po uruchomieniu wymaganych procesów. Jeśli dowolny z tych procesów zostanie uruchomiony ponownie, program także musi zostać uruchomiony ponownie. Ograniczenie rozmiaru zestawu roboczego dla procesu nie powinno spowodować zbyt dużego uszczerbku na wydajności. Jeśli w systemie jest dostępne dużo pamięci RAM, strony usuwane z zestawu roboczego procesu będą umieszczane na liście gotowości. Jeśli wystąpi błąd strony, zostanie on prawdopodobnie obsłużony przez stronę z listy gotowości w pamięci fizycznej. W celu określenia rzeczywistego wpływu tego obejścia na wydajność należy przeprowadzić testy wydajności.

Stan

Firma Microsoft potwierdziła, że jest to usterka występująca w produktach firmy Microsoft wymienionych w sekcji „Informacje zawarte w tym artykule dotyczą”. Ten problem został po raz pierwszy rozwiązany w dodatku Service Pack 2 dla systemu Microsoft Windows XP. Planowane jest rozwiązanie tego problemu w dodatku Service Pack 1 dla systemu Windows Serwer 2003.

Właściwości

Numer ID artykułu: 815227 - Ostatnia weryfikacja: 11 września 2008 - Weryfikacja: 6.3
Informacje zawarte w tym artykule dotyczą:
  • 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
Słowa kluczowe: 
kbautohotfix kbhotfixserver kbqfe kbwinxpsp2fix kbtshoot kbenv kbqfe kbwinxppresp2fix kbfix kbbug KB815227

Przekaż opinię

 

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