Udostępnij przez


Mpgo.exe (narzędzie optymalizacji sterowane profilem zarządzanym)

Narzędzie optymalizacji z przewodnikiem zarządzanego profilu (Mpgo.exe) to narzędzie wiersza polecenia, które używa typowych scenariuszy użytkownika końcowego do optymalizowania zestawów obrazów natywnych tworzonych przez generator obrazów natywnych (Ngen.exe). To narzędzie umożliwia uruchamianie scenariuszy szkoleniowych, które generują dane profilu. Generator obrazów natywnych (Ngen.exe) używa tych danych do optymalizacji wygenerowanych zestawów aplikacji obrazów natywnych. Scenariusz trenowania to przebieg próbny oczekiwanego użycia aplikacji. Mpgo.exe jest dostępna w programie Visual Studio Ultimate 2012 i nowszych wersjach. Począwszy od programu Visual Studio 2013, można również użyć Mpgo.exe do zoptymalizowania aplikacji ze Sklepu Windows 8.x.

Optymalizacja sterowana profilem poprawia czas uruchamiania aplikacji, wykorzystanie pamięci (rozmiar zestawu roboczego) i przepływność dzięki zbieraniu danych ze scenariuszy szkoleniowych i używaniu ich do optymalizowania układu obrazów natywnych.

W przypadku wystąpienia problemów z wydajnością podczas uruchamiania i rozmiaru zestawu roboczego dla zestawów języka pośredniego (IL) zalecamy, aby najpierw użyć Ngen.exe, aby wyeliminować koszty kompilacji just in time (JIT) i ułatwić udostępnianie kodu. Jeśli potrzebujesz dodatkowych ulepszeń, możesz użyć Mpgo.exe, aby jeszcze bardziej zoptymalizować aplikację. Możesz użyć danych wydajności z nieoptymaliowanych zestawów obrazów natywnych jako punktu odniesienia, aby ocenić wzrost wydajności. Użycie Mpgo.exe może spowodować szybsze zimne uruchamianie i mniejszy rozmiar zestawu roboczego. Mpgo.exe dodaje informacje do zestawów IL, które Ngen.exe używane do tworzenia zoptymalizowanych zestawów obrazów natywnych. Aby uzyskać więcej informacji, zobacz wpis Poprawianie wydajności uruchamiania aplikacji klasycznych w blogu platformy .NET.

To narzędzie jest instalowane automatycznie w programie Visual Studio. Aby uruchomić narzędzie, użyj wiersza polecenia dewelopera lub programu PowerShell dla deweloperów z poświadczeniami administratora.

Wprowadź następujące polecenie w wierszu polecenia:

W przypadku aplikacji klasycznych:

mpgo -Scenario <command> [-Import <directory>] -AssemblyList <assembly1>  <assembly2> ... -OutDir <directory> [options]

W przypadku aplikacji ze Sklepu Windows 8.x:

mpgo -Scenario <packageName> -AppID <appId> -Timeout <seconds>

Parametry

Wszystkie argumenty Mpgo.exe są bez uwzględniania wielkości liter. Polecenia są poprzedzone kreską.

Uwaga / Notatka

Można użyć polecenia -Scenario lub -Import jako wymaganego, ale nie obu tych poleceń. W przypadku określenia -Reset opcji żadna z wymaganych parametrów nie jest używana.

Wymagany parametr Description
-Scenario < polecenie>

—lub —

-Scenario < packageName>

— lub —

-Import < katalog>
W przypadku aplikacji klasycznych użyj -Scenario polecenia , aby uruchomić aplikację, którą chcesz zoptymalizować, łącznie z dowolnymi argumentami wiersza polecenia. Użyj trzech zestawów podwójnych cudzysłowów wokół polecenia , jeśli określa ścieżkę zawierającą spacje; na przykład: mpgo.exe -scenario """C:\My App\myapp.exe""" -assemblylist """C:\My App\myapp.exe""" -outdir "C:\optimized files". Nie używaj podwójnych cudzysłowów; nie będą działać poprawnie, jeśli polecenie zawiera spacje.

— lub —

W przypadku aplikacji ze Sklepu Windows 8.x określ -Scenario pakiet, dla którego chcesz wygenerować informacje o profilu. Jeśli określisz nazwę wyświetlaną pakietu lub nazwę rodziny pakietów zamiast pełnej nazwy pakietu, Mpgo.exe wybierze pakiet zgodny z podaną nazwą, jeśli istnieje tylko jedno dopasowanie. Jeśli wiele pakietów jest zgodnych z określoną nazwą, Mpgo.exe wyświetli monit o wybranie pakietu.

—lub —

Użyj -Import polecenia , aby określić, że dane optymalizacji z wcześniej zoptymalizowanych zestawów powinny być używane do optymalizowania zestawów w programie -AssemblyList. katalog określa katalog, który zawiera wcześniej zoptymalizowane pliki. Zestawy określone w -AssemblyList lub -AssemblyListFile są nowymi wersjami zestawów, które mają być zoptymalizowane przy użyciu danych z importowanych plików. Korzystanie z danych optymalizacji ze starszej wersji zestawów umożliwia optymalizowanie nowszych wersji zestawów bez ponownego uruchamiania scenariusza. Jeśli jednak zaimportowane i docelowe zestawy zawierają znacznie inny kod, dane optymalizacji będą nieskuteczne. Nazwy zestawów określone w -AssemblyList katalogu lub -AssemblyListFile muszą być obecne w katalogu określonym przez -Importkatalog. Użyj trzech zestawów podwójnych cudzysłowów wokół katalogu , jeśli określa ścieżkę zawierającą spacje.

Należy określić parametr -Scenario lub -Import, ale nie oba parametry.
-OutDir < katalog> Katalog, w którym należy umieścić zoptymalizowane zestawy. Jeśli zestaw już istnieje w folderze katalogu wyjściowego, zostanie utworzona nowa kopia, a numer indeksu zostanie dołączony do jego nazwy; na przykład: nazwa zestawu-1.exe. Użyj podwójnych cudzysłowów wokół katalogu , jeśli określa ścieżkę zawierającą spacje.
-AssemblyList < zestaw1 zestaw2 ...>

—lub —

-AssemblyListFile < plik>
Lista zestawów (w tym plików .exe i .dll), rozdzielonych spacjami, które mają zbierać informacje o profilu. Możesz określić C:\Dir\*.dll lub *.dll wybrać wszystkie zestawy w wyznaczonym lub bieżącym katalogu roboczym. Aby uzyskać więcej informacji, zobacz sekcję Uwagi.

—lub —

Plik tekstowy zawierający listę zestawów, o których chcesz zebrać informacje o profilu, wymieniony jeden zestaw na wiersz. Jeśli nazwa zestawu zaczyna się od łącznika (-), użyj listy plików zestawu lub zmień nazwę zestawu.
-AppID < appId> Identyfikator aplikacji w określonym pakiecie. Jeśli używasz symbolu wieloznakowego (*), Mpgo.exe spróbuje wyliczyć identyfikatory AppID w pakiecie i powróci do <package_family_name>! Aplikacja, jeśli zakończy się niepowodzeniem. Jeśli określisz ciąg, który jest poprzedzony wykrzyknikiem (!), Mpgo.exe połączy nazwę rodziny pakietów z podanym argumentem.
-Timeout < Sekund> Czas, przez który aplikacja ze Sklepu Windows 8.x może być uruchamiana przed zakończeniem działania aplikacji.
Parametr opcjonalny Description
-64bit Instrumentuje zestawy dla systemów 64-bitowych. Należy określić ten parametr dla zestawów 64-bitowych, nawet jeśli zestaw deklaruje się jako 64-bitowy.
-ExeConfig < Pod nazwą> Określa plik konfiguracji używany przez scenariusz do dostarczania informacji o wersji i modułu ładującego.
-f Wymusza dołączenie danych profilu do zestawu binarnego, nawet jeśli jest podpisany. Jeśli zestaw jest podpisany, musi zostać ponownie podpisany; w przeciwnym razie nie można załadować i uruchomić zestawu.
-Reset Resetuje środowisko, aby upewnić się, że przerwana sesja profilowania nie ma wpływu na zestawy, a następnie kończy działanie. Środowisko jest domyślnie resetowane przed i po sesji profilowania.
-Timeout < czas w sekundach> Określa czas trwania profilowania w sekundach. Użyj wartości nieco większej niż zaobserwowane czasy uruchamiania dla aplikacji gui. Po upływie limitu czasu dane profilu są rejestrowane, chociaż aplikacja nadal działa. Jeśli ta opcja nie zostanie ustawiona, profilowanie będzie kontynuowane do czasu zamknięcia aplikacji, w którym dane zostaną zarejestrowane.
-LeaveNativeImages Określa, że instrumentowane obrazy natywne nie powinny być usuwane po uruchomieniu scenariusza. Ta opcja jest używana głównie podczas pobierania aplikacji określonej dla scenariusza. Uniemożliwi to odtworzenie obrazów natywnych dla kolejnych przebiegów Mpgo.exe. Po zakończeniu uruchamiania aplikacji mogą istnieć oddzielone obrazy natywne w pamięci podręcznej, jeśli określisz tę opcję. W takim przypadku uruchom Mpgo.exe z tą samą listą scenariuszy i zestawów, a następnie użyj parametru -RemoveNativeImages , aby usunąć te obrazy natywne.
-RemoveNativeImages Czyści z przebiegu, w którym -LeaveNativeImages określono. Jeśli określisz -RemoveNativeImageswartość , Mpgo.exe ignoruje wszystkie argumenty z wyjątkiem -64bit i -AssemblyList, i kończy działanie po usunięciu wszystkich instrumentowanych obrazów natywnych.

Uwagi

W wierszu polecenia można używać funkcji i -AssemblyList-AssemblyListFile wiele razy.

Jeśli nie określisz pełnych nazw ścieżek podczas określania zestawów, Mpgo.exe będzie wyglądać w bieżącym katalogu. Jeśli określisz nieprawidłową ścieżkę, Mpgo.exe wyświetla komunikat o błędzie, ale nadal generuje dane dla innych zestawów. Jeśli określisz zestaw, który nie jest ładowany podczas scenariusza trenowania, żadne dane szkoleniowe nie są generowane dla tego zestawu.

Jeśli zestaw na liście znajduje się w globalnej pamięci podręcznej zestawów, nie zostanie zaktualizowany tak, aby zawierał informacje o profilu. Usuń go z globalnej pamięci podręcznej zestawów, aby zebrać informacje o profilu.

Korzystanie z Ngen.exe i Mpgo.exe jest zalecane tylko w przypadku dużych aplikacji zarządzanych, ponieważ zalety wstępnie skompilowanych obrazów natywnych są zwykle widoczne tylko wtedy, gdy eliminuje znaczącą kompilację JIT w czasie wykonywania. Uruchamianie Mpgo.exe w aplikacjach w stylu "Hello World", które nie korzystają z zestawu roboczego, nie zapewni żadnych korzyści, a Mpgo.exe może nawet nie zebrać danych profilu.

Uwaga / Notatka

Ngen.exe i Mpgo.exe nie są zalecane w przypadku aplikacji ASP.NET i usług Windows Communication Foundation (WCF).

Aby użyć Mpgo.exe

  1. Użyj komputera z zainstalowanym programem Visual Studio Ultimate 2012 i aplikacją.

  2. Uruchom Mpgo.exe jako administrator z wymaganymi parametrami. Zobacz następną sekcję, aby zapoznać się z przykładowymi poleceniami.

    Zoptymalizowane zestawy języka pośredniego (IL) są tworzone w folderze określonym przez -OutDir parametr (w przykładach jest C:\Optimized to folder).

  3. Zastąp zestawy IL używane dla Ngen.exe nowymi zestawami IL, które zawierają informacje o profilu z katalogu określonego przez -OutDir.

  4. Instalator aplikacji (przy użyciu obrazów dostarczonych przez Mpgo.exe) zainstaluje zoptymalizowane obrazy natywne.

Sugerowany przepływ pracy

  1. Utwórz zestaw zoptymalizowanych zestawów IL przy użyciu Mpgo.exe z parametrem -Scenario .

  2. Sprawdź zoptymalizowane zestawy IL w kontroli źródła.

  3. W procesie kompilacji wywołaj Mpgo.exe za pomocą parametru -Import jako kroku po kompilacji, aby wygenerować zoptymalizowane obrazy IL do przekazania do Ngen.exe.

Ten proces gwarantuje, że wszystkie zestawy mają dane optymalizacji. Jeśli częściej zaewidencjonujesz zaktualizowane zoptymalizowane zestawy (kroki 1 i 2), numery wydajności będą bardziej spójne w całym rozwoju produktu.

Używanie Mpgo.exe z programu Visual Studio

Możesz uruchomić Mpgo.exe z poziomu programu Visual Studio (zobacz artykuł Instrukcje: określanie zdarzeń kompilacji (C#)) z następującymi ograniczeniami:

  • Nie można używać ścieżek w cudzysłowie z końcowymi znakami ukośników, ponieważ makra programu Visual Studio również domyślnie używają końcowych znaków ukośników. (Na przykład -OutDir "C:\Output Folder\" jest nieprawidłowy). Aby obejść to ograniczenie, możesz uniknąć końcowego ukośnika. (Na przykład użyj -OutDir "$(OutDir)\" zamiast tego).

  • Domyślnie Mpgo.exe nie znajduje się na ścieżce kompilacji programu Visual Studio. Musisz dodać ścieżkę do programu Visual Studio lub określić pełną ścieżkę w wierszu polecenia Mpgo. Możesz użyć parametru -Scenario lub -Import w zdarzeniu po kompilacji w programie Visual Studio. Jednak typowym procesem jest użycie jednorazowego wiersza -Scenario polecenia dewelopera dla programu Visual Studio, a następnie zaktualizowanie -Import zoptymalizowanych zestawów po każdej kompilacji, na przykład: "C:\Program Files\Microsoft Visual Studio 11.0\Team Tools\Performance Tools\mpgo.exe" -import "$(OutDir)tmp" -assemblylist "$(TargetPath)" -outdir "$(OutDir)\".

Przykłady

Następujące polecenie Mpgo.exe z wiersza polecenia dla deweloperów dla programu Visual Studio optymalizuje aplikację podatkową:

mpgo -scenario "C:\MyApp\MyTax.exe /params par" -AssemblyList Mytax.dll MyTaxUtil2011.dll -OutDir C:\Optimized -TimeOut 15

Następujące polecenie Mpgo.exe optymalizuje aplikację dźwiękową:

mpgo -scenario "C:\MyApp\wav2wma.exe -input song1.wav -output song1.wma" -AssemblyList transcode.dll -OutDir C:\Optimized -TimeOut 15

Następujące polecenie Mpgo.exe używa danych z wcześniej zoptymalizowanych zestawów do optymalizowania nowszych wersji zestawów:

mpgo.exe -import "C:\Optimized" -assemblylist "C:\MyApp\MyTax.dll" "C:\MyApp\MyTaxUtil2011.dll" -outdir C:\ReOptimized

Zobacz także