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

Narzędzie optymalizacji z przewodnikiem profilu zarządzanego (Mpgo.exe) to narzędzie wiersza polecenia, które używa typowych scenariuszy użytkownika końcowego do optymalizowania natywnych zestawów obrazów 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 obrazu natywnego. Scenariusz szkoleniowy jest próbnym uruchomieniem oczekiwanego użycia aplikacji. Mpgo.exe jest dostępny w programie Visual Studio Ultimate 2012 i jego nowszych wersjach. Począwszy od Visual Studio 2013, można również użyć Mpgo.exe do zoptymalizowania aplikacji ze sklepu Windows 8.x.

Profilowana optymalizacja poprawia czas uruchamiania aplikacji, wykorzystanie pamięci (rozmiar zestawu roboczego) i przepustowość przez zbieranie danych ze scenariuszy szkoleniowych i używanie ich do optymalizowania układu obrazów natywnych.

Jeśli wystąpią problemy z wydajnością czasu uruchamiania i rozmiarem zestawu roboczego dla zestawów języka pośredniego (IL), zaleca się użyć w pierwszej kolejności Ngen.exe, aby wyeliminować koszty kompilacji JIT oraz umożliwić udostępnianie kodu. Jeśli potrzebujesz dodatkowych usprawnień, możesz użyć Mpgo.exe do dalszej optymalizacji aplikacji. Dane dotyczące wydajności z zestawów niezoptymalizowanego obrazu natywnego można zastosować jako podstawę do oszacowania wzrostu wydajności. Użycie Mpgo.exe może spowodować przyspieszenie zimnego uruchamiania i zmniejszenie rozmiaru zestawu roboczego. Mpgo.exe dodaje informacje do zestawów IL, których Ngen.exe używa do tworzenia zoptymalizowanych zestawów obrazu natywnego. Aby uzyskać więcej informacji, zobacz wpis Poprawianie wydajności uruchamiania aplikacji klasycznych w blogu platformy .NET.

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

W wierszu polecenia wprowadź następujące polecenie:

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

We wszystkich argumentach programu Mpgo.exe nie jest rozróżniana wielkość liter. Polecenia są poprzedzone kreską.

Uwaga

Można użyć polecenia –Scenario lub –Import jako wymaganego, ale nie obu. Żadna z wymaganych parametrów nie jest używana, jeśli określisz –Reset opcję.

Wymagany parametr Opis
-Scenario<Polecenia>

—lub—

-Scenario<Packagename>

-lub-

-Import<Katalogu>
W przypadku aplikacji klasycznych użyj polecenia –Scenario , 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; polecenie nie będzie działać poprawnie, jeśli polecenie zawiera spacje.

-lub-

W przypadku aplikacji ze sklepu Windows 8.x użyj –Scenario polecenia , aby określić 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, który pasuje do podanej nazwy, pod warunkiem, że istnieje tylko jedno dopasowanie. Jeśli kilka pakietów odpowiada określonej nazwie, Mpgo.exe wyświetli monit o wybrania pakietu.

—lub—

Służy -Import do określania, ż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 systemie lub –AssemblyListFile są nowymi wersjami zestawów, które mają być zoptymalizowane przy użyciu danych z importowanych plików. Używanie danych optymalizacji ze starszych wersji zestawów pozwala zoptymalizować nowsze wersje zestawów bez ponownego uruchamiania scenariusza. Jednakże, jeśli zaimportowany i docelowy zestaw zawierają znacznie różniący się 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ć parametry –Scenario lub –Import, ale nie oba.
-OutDir<Katalogu> Katalog, w którym będą umieszczone 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: assemblyname-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 pliki exe i dll) rozdzielonych spacjami, dla których chcesz zbierać informacje profilowe. Można określić C:\Dir\*.dll lub *.dll wybrać wszystkie zestawy w wyznaczonym lub bieżącym katalogu roboczym. Zobacz sekcję Spostrzeżenia, aby uzyskać więcej informacji.

—lub—

Plik tekstowy, który zawiera listę zestawów, dla których chcesz zebrać informacje o profilu. W każdym wierszu wymieniony jest jeden zestaw. Jeśli nazwa zestawu rozpoczyna się łącznikiem (-), użyj listy plików zestawów 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żeli określono ciąg, który jest poprzedzony znakiem wykrzyknika (!), Mpgo.exe będzie łączyć nazwę rodziny pakietu z dostarczonym argumentem.
-Timeout<Sekund> Czas, przez który aplikacja Windows 8.x Store może zostać uruchomiona przed zakończeniem działania aplikacji.
Parametr opcjonalny Opis
-64bit Instrumentuje zestawy do systemów 64-bitowych. Nawet jeśli zestaw jest zadeklarowany jako 64-bitowy, należy określić ten parametr dla zestawów 64-bitowych.
-ExeConfig<Pod nazwą> Określa plik konfiguracji używany przez scenariusz do określenia informacje o wersji i module ładującym.
-f Wymusza umieszczenie danych profilu w zestawie binarnym, nawet jeśli jest podpisany. Jeśli zestaw jest podpisany, musi zostać ponownie podpisany; w przeciwnym razie zestawu nie będzie można załadować i uruchomić.
-Reset Resetuje środowisko, aby była pewność, że przerwane sesje profilowania nie mają wpływu na swoje zestawy, a następnie kończy działanie. Środowisko jest resetowane domyślnie przed i po sesji profilowania.
-Timeout<czas w sekundach> Określa czas profilowania w sekundach. Użyj wartości, która jest nieco większa niż obserwowane czasy uruchamiania aplikacji GUI. Na koniec limitu czasu dane profilu są rejestrowana, mimo że aplikacja kontynuuje działanie. Jeśli ta opcja nie zostanie ustawiona, profilowanie będzie kontynuowane do czasu zamknięcia aplikacji, w czasie którym dane będą rejestrowane.
-LeaveNativeImages Określa, że zinstrumentowane obrazy natywne nie powinny zostać usunięte po uruchomieniu tego scenariusza. Ta opcja jest używana przede wszystkim, gdy uzyskujesz aplikację, którą określono dla działającego scenariusza. Uniemożliwi to odtworzenie obrazów natywnych dla kolejnych uruchomień Mpgo.exe. W przypadku użycia tej opcji opcję w pamięci podręcznej po zakończeniu działania aplikacji mogą znajdować się oddzielone obrazy natywne. 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 ścieżek podczas określania zestawów, Mpgo.exe będzie ich szukać w bieżącym katalogu. Jeśli określona ścieżka jest niepoprawna, Mpgo.exe wyświetla komunikat o błędzie, ale kontynuuje generowanie danych dla innych zestawów. Jeśli określisz zestaw, który nie jest ładowany podczas scenariusza szkoleniowego, żadne dane szkoleniowe nie są generowane dla tego zestawu.

Jeśli zestaw na liście jest w globalnej pamięci podręcznej zestawów, nie będzie można zaktualizować go, aby zawierał informacje o profilu. Usuń go z globalnej pamięci podręcznej zestawów, aby zebrać informacje o profilu.

Użycie Ngen.exe i Mpgo.exe jest zalecane tylko dla dużych zarządzanych aplikacji, ponieważ korzyści wynikające ze wstępnie skompilowanym obrazów natywnych zazwyczaj są widoczne tylko wtedy, gdy eliminuje dużą część kompilacji 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 mogą nawet nie zbierać danych profilu.

Uwaga

Nie zaleca się stosowania Ngen.exe i Mpgo.exe w odniesieniu do aplikacji ASP.NET i usług Windows Communication Foundation (WCF).

Aby użyć Mpgo.exe

  1. Użyj komputera, na którym zainstalowano Visual Studio Ultimate 2012 i aplikację.

  2. Uruchom Mpgo.exe jako administrator z wymaganymi parametrami. W następnej sekcji znajdują się przykładowe polecenia.

    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 do Ngen.exe nowymi zestawami IL, które zawierają informacje o profilu z katalogu określonego przez –OutDirprogram .

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

Sugerowany przebieg 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 z parametrem –Import jako krok po kompilacji, aby wygenerować zoptymalizowane obrazy IL do przekazania do Ngen.exe.

Ten proces daje pewność, że wszystkie zestawy posiadają dane optymalizacji. Jeśli ewidencjonujesz zaktualizowane zoptymalizowane zestawy (kroki 1 i 2) częściej, wydajności będą spójniejsze w całym procesie tworzenia produktu.

Przy użyciu Mpgo.exe z 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 ze znakami ukośnika na końcu, ponieważ makra Visual Studio również domyślnie używają końcowych 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 zamiast tego użyj polecenia -OutDir "$(OutDir)\" ).

  • Domyślnie program Mpgo.exe nie znajduje się w ścieżce kompilacji programu Visual Studio. Możesz dodać ścieżkę do programu Visual Studio lub podać 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 typowy proces polega na jednorazowym użyciu –Scenario wiersza polecenia dewelopera dla programu Visual Studio, a następnie zaktualizowania –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 dewelopera 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 zdrową aplikację:

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 korzysta z danych z zestawów wcześniej zoptymalizowanych do optymalizacji nowszych wersji zestawów:

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

Zobacz też