Udostępnij za pośrednictwem


Rejestratory wieloprocesorowych-Processor-Aware pisania

Zdolność MSBuild 3.5, aby skorzystać z wielu procesorów może zmniejszyć czas budowania projektu, ale dodaje także złożoność w celu tworzenia rejestrowania zdarzeń.W środowisku z jednym procesorem zdarzenia, wiadomości, ostrzeżeń i błędów przybyć rejestratora w sposób przewidywalny, sekwencyjnych.Jednak w środowisku wieloprocesorowym zdarzenia z różnych źródeł można dotrzeć w tym samym czasie lub kolejności.Zapewnienie tego, MSBuild 3.5 udostępnia rejestratora wieloprocesorowych-processor-aware i nowy model rejestrowania i pozwala na tworzenie niestandardowych "przekazywanie rejestratory."

Wieloprocesorowe wyzwania rejestrowania

Podczas tworzenia jednego lub kilku projektów na systemie wieloprocesorowym lub wielordzeniowych MSBuild tworzenia zdarzenia dla wszystkich projektów są generowane w tym samym czasie.W tym samym czasie lub kolejności zejściu lawiny komunikatów zdarzeń może przybyć rejestratora.Ponieważ MSBuild rejestratora 2.0 nie jest przeznaczony do obsługi tej sytuacji, go zasypać rejestratora i spowodować zwiększone build razy, rejestratora niepoprawne dane wyjściowe lub nawet przerwane kompilacji.Aby rozwiązać te problemy, MSBuild 3.5 rejestratora można przetwarzać out sekwencję zdarzeń i skorelować zdarzenia i ich źródła.

Można poprawić rejestrowania wydajności nawet więcej, tworząc rejestratora przekazywanie niestandardowych.Rejestratora niestandardowe przekazywania działa jako filtr, umożliwiając użytkownikowi wybrać przed dokonaniem kompilacji, zdarzenia, który chcesz monitorować.Podczas korzystania z Rejestratora przekazywanie niestandardowych, niepożądanych zdarzeń nie zasypać rejestratora, zaśmiecać dzienników lub slow zbudować razy.

Modele rejestrowania wieloprocesorowych

Zapewnienie zagadnień związanych na processor wieloprocesorowych build MSBuild 3.5 obsługuje dwa modele rejestrowania centralnym i rozproszonych.

Bb651795.collapse_all(pl-pl,VS.110).gifCentralnego rejestrowania modelu

W modelu centralnego rejestrowania pojedyncze wystąpienie MSBuild.exe działa jako "node centralny", a podrzędne instancje centralnej węzła ("węzłach wtórnych") dołączyć do centralnej węzeł, aby ułatwić wykonywanie zadań kompilacji.

Model rejestratora centralnego

Rejestratory różnych typów, które przyłączają się do węzła centralnej są znane jako "centralne rejestratory." Tylko jedno wystąpienie każdego typu rejestratora można dołączyć do centralnej węzła, w tym samym czasie.

Po wystąpieniu kompilacji pomocniczy węzłów marszruty ich zdarzenia kompilacji do centralnej węzła.Węzeł centralny trasy jego zdarzeń, a także te węzły pomocniczy do jednej lub kilku dołączonych rejestratory centralnej.Rejestratory następnie utworzyć pliki dziennika, które są oparte na danych przychodzących.

Chociaż tylko ILogger jest wymagane, mają być realizowane przez central rejestratora, firma Microsoft zaleca także implementowanie INodeLogger , dzięki czemu centralnej rejestratora jest inicjowana z liczbą węzłów, które uczestniczą w kompilacji.Następujące przeciążenie z Initialize wywołuje metodę, gdy silnik jest inicjowana rejestratora.

public interface INodeLogger: ILogger
{
    public void Initialize(IEventSource eventSource, int nodeCount);
}

Wszelkie istniejące ILogger-na podstawie rejestratory mogą pełnić rolę centralnej rejestratory i można dołączyć do kompilacji.Jednak centralnej rejestratory zapisywane bez jawną obsługę rejestrowania wieloprocesorowych scenariuszy i zdarzenia out of order może przerwać kompilacji lub wyprodukowania produktów wyjściowych znaczenia.

Bb651795.collapse_all(pl-pl,VS.110).gifRozproszonego modelu rejestrowania

W modelu centralnego rejestrowania zbyt dużo ruch przychodzący komunikat może spowodować przeciążenie centralnej węzła, na przykład podczas tworzenia wielu projektów, w tym samym czasie.To jest podkreślają zasobów systemowych i zmniejszyć wydajność kompilacji.Aby ułatwić sobie ten problem, MSBuild 3.5 obsługuje model rozproszonych rejestrowania.

Model rejestrowania rozproszonego

Model rozproszonych rejestrowania rozszerza model centralnego rejestrowania umożliwiając tworzenie rejestratora przesyłania dalej.

Bb651795.collapse_all(pl-pl,VS.110).gifRejestratory przesyłania dalej

Rejestrator przesyłania dalej jest rejestratora wtórnych, lekka, zawierającą filtr zdarzeń, dołącza do węzła pomocniczego i odbiera przychodzące zdarzenia kompilacji z danego węzła.To filtry przychodzące zdarzeń i przekazuje tylko te, które określić do centralnej węzła.Zmniejsza to ruch wiadomości, który jest wysyłana do centralnej węzła i zwiększa ogólną wydajność kompilacji.

Istnieją dwa sposoby rejestrowanie rozproszonych, w następujący sposób:

  • Dostosowywanie rejestratora pólfabrykaty do przesyłania dalej o nazwie ConfigurableForwardingLogger.

  • Pisać własne niestandardowe przekazywanie rejestratora.

Można zmodyfikować ConfigurableForwardingLogger do własnych wymagań.Aby to zrobić, wywołać rejestratora w wierszu polecenia przy użyciu MSBuild.exe i zdarzenia kompilacji, które rejestratora do przesyłania dalej do centralnej węzła listy.

Jako alternatywa można utworzyć rejestratora przekazywanie niestandardowych.Tworząc rejestratora przekazywanie niestandardowe, można dostosować zachowanie rejestratora.Tworzenie rejestratora przekazywanie niestandardowe jest jednak bardziej skomplikowane niż tylko Dostosowywanie ConfigurableForwardingLogger.Aby uzyskać więcej informacji, zobacz Tworzenia, przekazywania rejestratory.

Za pomocą ConfigurableForwardingLogger dla prostej Distributed rejestrowania

Aby dołączyć ConfigurableForwardingLogger lub rejestratora przekazywanie niestandardowych, użyj /distributedlogger przełączyć (/dl w skrócie) w kompilacji wiersza polecenia MSBuild.exe.Format dla określania nazw klas i typów rejestratora jest taka sama, jak dla /logger przełączanie, z wyjątkiem, że rozproszonych rejestratora zawsze ma dwie klasy rejestrowania zamiast jednego rejestratora przesyłania dalej i centralnym rejestratora.Poniżej przedstawiono przykładowy sposób dołączyć rejestratora przekazywanie niestandardowych, o nazwie XMLForwardingLogger.

C:\ WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,Culture=neutral

[!UWAGA]

Gwiazdka (*) muszą być rozdzielone nazwy dwóch rejestratora w /dl przełączyć.

Za pomocą ConfigurableForwardingLogger przypomina korzystanie z innych rejestratora (jak wskazano w Uzyskiwanie dzienników kompilacji za pomocą narzędzia MSBuild), chyba że dołączyć rejestratora ConfigurableForwardingLogger zamiast typowe MSBuild rejestratora i można określić jako parametry zdarzenia, które ConfigurableForwardingLogger do przekazywania do centralnej węzła.

Na przykład, jeśli użytkownik chce być powiadamiany tylko wtedy, gdy kompilacji rozpoczyna i kończy się i gdy wystąpi błąd, byłoby przekazywać BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, i ERROREVENT jako parametry.Wiele parametrów mogą być przekazywane przez oddzielając je średnikami.Oto przykład sposobu przesyłania dalej tylko za pomocą ConfigurableForwardingLogger BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, i ERROREVENT zdarzenia.

C:\ WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj /distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*ConfigureableForwardingLogger,C:\My.dll;BUILDSTARTEDEVENT; BUILDFINISHEDEVENT;ERROREVENT

Oto lista dostępnych parametrów ConfigurableForwardingLogger.

Parametry ConfigurableForwardingLogger

BUILDSTARTEDEVENT

BUILDFINISHEDEVENT

PROJECTSTARTEDEVENT

PROJECTFINISHEDEVENT

TARGETSTARTEDEVENT

TARGETFINISHEDEVENT

TASKSTARTEDEVENT

TASKFINISHEDEVENT

ERROREVENT

WARNINGEVENT

HIGHMESSAGEEVENT

NORMALMESSAGEEVENT

LOWMESSAGEEVENT

CUSTOMEVENT

WIERSZ POLECENIA

PERFORMANCESUMMARY

NOSUMMARY

SHOWCOMMANDLINE

Zobacz też

Koncepcje

Tworzenia, przekazywania rejestratory