Update perf proj from arcade#38127
Conversation
|
Tagging subscribers to this area: @safern, @ViktorHofer |
| <HelixWorkItem Include="Crossgen2 Composite Framework R2R"> | ||
| <PayloadDirectory>$(WorkItemDirectory)\ScenarioCorrelation</PayloadDirectory> | ||
| <Command>$(Python) %HELIX_CORRELATION_PAYLOAD%\performance\src\scenarios\crossgen2\test.py crossgen2 --composite %HELIX_CORRELATION_PAYLOAD%\performance\src\scenarios\crossgen2\framework-r2r.dll.rsp --core-root %HELIX_CORRELATION_PAYLOAD%\Core_Root</Command> | ||
| <Timeout>1:00</Timeout> |
There was a problem hiding this comment.
Why 1 hour timeout? This leads to very long hangs blocking a machine for long periods of time.
I also see the other workitems we send have 4 hours timeouts. Can we modify this for the purpose of PR runs?
There was a problem hiding this comment.
For crossgen2 composite workitem, 1 hour timeout also takes care of CI runs where we run 5 iterations, while we only have 1 iteration for PR runs and each iteration takes ~8min. For the rest of the workitems we will be able to shorten the timeout once the partition is enabled. @DrewScoggins Do you have an estimate of the timeout value after partition?
There was a problem hiding this comment.
For the micro benchmarks we should be able to set the timeout to about 10 minutes once we get this partition change in. A run take about 3-5 minutes, but I want to leave some wiggle room. These are of course Helix timeouts.
There was a problem hiding this comment.
Yeah, Helix timeouts are the ones we care about reducing on PRs for these micro benchmarks. 10-15 mins sounds good to me.
|
Added the timeout, but just need to make sure that it works. If it does I will check this in here and also check-in this change on the arcade side. |
| Partition the Microbenchmarks project, but nothing else | ||
| --> | ||
| <ItemGroup Condition="$(TargetCsproj.Contains('MicroBenchmarks.csproj'))"> | ||
| <ItemGroup Condition="$(TargetCsproj.Contains('MicroBenchmarks.csproj')) and $($HelixSourcePrefix) == 'pr'"> |
There was a problem hiding this comment.
Typo:
| <ItemGroup Condition="$(TargetCsproj.Contains('MicroBenchmarks.csproj')) and $($HelixSourcePrefix) == 'pr'"> | |
| <ItemGroup Condition="$(TargetCsproj.Contains('MicroBenchmarks.csproj')) and $(HelixSourcePrefix) == 'pr'"> |
| </HelixWorkItem> | ||
| </ItemGroup> | ||
|
|
||
| <ItemGroup Condition="$(TargetCsproj.Contains('MicroBenchmarks.csproj')) and $($HelixSourcePrefix) == 'official'"> |
There was a problem hiding this comment.
Typo
| <ItemGroup Condition="$(TargetCsproj.Contains('MicroBenchmarks.csproj')) and $($HelixSourcePrefix) == 'official'"> | |
| <ItemGroup Condition="$(TargetCsproj.Contains('MicroBenchmarks.csproj')) and $(HelixSourcePrefix) == 'official'"> |
There was a problem hiding this comment.
Yeah, just found that. Doing a run to make sure it works now then going to check-in
| <PreCommands Condition="'$(Compare)' == 'true'">$(WorkItemCommand) --bdn-artifacts $(BaselineArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(BaselineCoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)"</PreCommands> | ||
| <Command>$(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)"</Command> | ||
| <PostCommands Condition="'$(Compare)' == 'true'">$(DotnetExe) run -f $(_Framework) -p $(ResultsComparer) --base $(BaselineArtifactsDirectory) --diff $(ArtifactsDirectory) --threshold 2$(Percent) --xml $(XMLResults);$(FinalCommand)</PostCommands> | ||
| <Timeout>45</Timeout> |
There was a problem hiding this comment.
It would be simpler if you introduce an intermediate variable then you wouldn't need to duplicate these code. You could just set the timeout on that variable and use it when creating the HelixWorkItem that way you would only have one HelixWorkItem declaration for Microbenchmarks
| <WorkItemCommand>$(WorkItemCommand) $(CliArguments)</WorkItemCommand> | ||
| </PropertyGroup> | ||
|
|
||
| <PropertyGroup Condition="$(HelixSourcePrefix) == 'pr'"> |
There was a problem hiding this comment.
I think you need to also escape $(HelixSourcePrefix) for the comparison to be correct:
| <PropertyGroup Condition="$(HelixSourcePrefix) == 'pr'"> | |
| <PropertyGroup Condition="'$(HelixSourcePrefix)' == 'pr'"> |
| <WorkItemTimeout>15</WorkItemTimeout> | ||
| </PropertyGroup> | ||
|
|
||
| <PropertyGroup Condition="$(HelixSourcePrefix) == 'official'"> |
| <WorkItemTimeout>0:15</WorkItemTimeout> | ||
| </PropertyGroup> | ||
|
|
||
| <PropertyGroup Condition="'$(HelixSourcePrefix)'' == 'official'"> |
There was a problem hiding this comment.
If for some reason HelixSourcePrefix is not pr nor official it will use the default HelixSDK timeout, maybe we want to be intentional about it. Something like:
<PropertyGroup>
<WorkItemTimeout>0:45</WorkItemTimeout>
<WorkItemTimeout Condition="'$(HelixSourcePrefix)' != 'official'">0:15</WorkItemTimeout>
</PropertyGroup>| <WorkItemCommand>$(WorkItemCommand) $(CliArguments)</WorkItemCommand> | ||
| </PropertyGroup> | ||
|
|
||
| <PropertyGroup Condition="'$(HelixSourcePrefix)'' == 'pr'"> |
|
@safern I think this is good to go. |
safern
left a comment
There was a problem hiding this comment.
@DrewScoggins thanks for including the timeout change here. Did we validate that Helix actually honored the new timeout?
|
Yes, I did. It was listed at 900 seconds. |
No description provided.