aspnet / jitbench Goto Github PK
View Code? Open in Web Editor NEWRepo for testing JIT stuff
License: Other
Repo for testing JIT stuff
License: Other
This would be a script similar to AspNet-Install.ps1
that can run dotnet store
to to generate the optimized packages locally.
/cc @JosephTremoulet
See: https://github.com/dotnet/designs/issues/2
The filenames of some setup assets are changing. We need to update these scripts everywhere to use the updated names.
I've created a new branch here: https://github.com/aspnet/JitBench/tree/rel/2.0.0-preview2
This tracks the latest CLI/SDK/Shared-Runtime with the 2.0.0-preview2 release of ASP.NET
This branch has some workarounds removed and is more compatible with new builds of the SDK (preview1 has some bugs with view compilation).
I plan to merge this to master later today unless I hear otherwise from stakeholders that they aren't ready for this change.
I'm seeing some behavior I can't explain, don't know which part if any is wrong or if I'm just misunderstanding something.
I thought the dev branch should always be running against "the latest" CoreCLR bits, and that doesn't seem to be the case today, but maybe there is no "the" latest?
Anyway, if I follow the steps in the readme today, after running the two dotnet-install.ps1 commands, dotnet --info
gives me this:
.NET Command Line Tools (2.1.0-preview1-007214)
Product Information:
Version: 2.1.0-preview1-007214
Commit SHA-1 hash: 2956c548b9
Runtime Environment:
OS Name: Windows
OS Version: 10.0.15063
OS Platform: Windows
RID: win10-x64
Base Path: D:\Source\JitBench\.dotnet\sdk\2.1.0-preview1-007214\
Microsoft .NET Core Shared Framework Host
Version : 2.1.0-preview2-25616-02
Build : 8aa34a95bad481e1b5e4c8286e5cb2d7cb6ed943
As I understand it, the 2.1.0-preview2-25616-02
there means this corresponds to https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.NETCore.App/2.1.0-preview2-25616-02
Question 1: Why is that getting 2.1.0-preview2-25616-02 when 2.1.0-preview2-25711-01 is available?
At any rate, the info page for that nuget package/version (NetCoreApp 2.1.0-preview2-25616-02) repeats the 8aa34a95bad481e1b5e4c8286e5cb2d7cb6ed943
hash that matches the "Build" line of the dotnet --info
output; presumably this corresponds to commit dotnet/core-setup@8aa34a9. Browsing the core-setup files at that commit, dependencies.props points to CoreCLR runtime package version 2.1.0-preview2-25610-02.
This in turn presumably refers to https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.NETCore.Runtime.CoreCLR/2.1.0-preview2-25610-02, which references dc2ffcdff2fb19e4b252cec3bc6672400a375c1e
, which presumably is commit dotnet/coreclr@dc2ffcd, a commit from August 10.
Following the same chain from the latest preview2 version of Microsoft.NETCore.App (https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.NETCore.App/2.1.0-preview2-25711-01), it seems to point to dotnet/core-setup@4cd37c5, where dependencies.props points to CoreCLR runtime package version 2.1.0-preview2-25707-02, which references dotnet/coreclr@49676af, a commit from September 6.
So, even assuming that we want preview2 bits, I don't understand why we're getting the August 10 bits instead of the September 6 bits.
But even September 6 was a while ago. I notice that Microsoft.NETCore.App package version 2.1.0-preview1-25719-04 has a newer date, and indeed following the trail through dotnet/core-setup@b5c917c via dependency.props to Microsoft.NETCore.Runtime.CoreCLR package version 2.1.0-preview1-25718-02, it references commit dotnet/coreclr@cd6b92a, which is a commit from September 16.
What's more, core-setup's current master branch's dependencies.props references a "preview1" version, not a "preview2" version, and there hasn't been a new "preview2" package since September 11, so I don't know if "preview2" got dropped or is in some branch/"channel" other than "master" or what...
Should something in the readme steps or the package generation/publishing be different such that we could be running against the September 16 CoreCLR bits instead?
A recent PR generated a lot of discussion about what the scenarios and requirements are for startup testing. I want to put forth a plan here and make sure that we've covered everyone's concerns.
I want to first point out a few requirements just from the standpoint of the app that help drive this discussion in a more practical version.
First, the Music Store app has a strong degree of coupling to a release of ASP.NET. We break things more frequently than the BCL, and ASP.NET 2.0 (current development) has already numerous breaking changes that impact the Music Store app. So, because the source code of the app is fixed in a given branch, it means that each branch needs to target first and foremost a specific ASP.NET release (or current development).
Secondly, the app itself has very little coupling to the release of the .NET shared framework besides what ASP.NET requires. We (ASP.NET) are generally going to be sticking with the netstandard1.6
target for most of our libraries. Where we do get into trouble here with coupling to .NET is the SDK. Any changes which come down the pipe that break the project file require new SDKs. Fortunately clrjit.dll
lives in the shared framework. I believe dotnet cache
also uses the clrjit.dll
from the shared framework - but we might want to confirm that.
TLDR - Music Store is is coupled to a release of ASP.NET but is very flexible with respect to the version of the shared-framework/JIT.
Here's a summary of the requirements I've been hearing from various runtime team members. If you don't see your feedback captured here, let me know!
dotnet
/shared-framework for a given run.dotnet
runsMy proposal is that we have a branch-per-ASP.NET release as well as a special branch for the current development of ASP.NET. The code and project file of MusicStore will be based on the specific ASP.NET release targeted by its resident branch. Each branch will support the minimum version of the dotnet
shared framework supported by that ASP.NET release and all newer versions of dotnet
- including latest development. This supports the requirement to test changes in the runtime which keeping the ASP.NET libraries and app fixed.
Example
Once 2.0.0-preview1
is released, the release-2.0.0-preview1
branch will support the 2.0.0-preview1
release of ASP.NET and the 2.0.0-preview1
release of the SDK/shared-framework. It will also be possible to use any newer version of the SDK/shared-framework using this branch.
The 2.0.0 release is a major change from the 1.0.0 dotnet/ASP.NET releases. Much of the functionality infrastructure we use (such as dotnet cache) is not available in in the older releases. For that reason I propose that we create/support branches of the 1.0.0 family of releases only as needed by our business requirements. Assume that everything mentioned here applies to the 2.0.0 family of releases and all subsequent releases. When we maintain a branch of the 1.0.0 family it will be somewhat ad-hoc and will not support all of the knobs and dials of the newer bits.
In each branch starting with release-2.0.0-preview1
we'll support performing the crossgen/R2R operation in the test environment. This satisfies the requirement that we use a single runtime version for both runtime JIT and crossgen R2R.
In each branch starting with release-2.0.0-preview1
we'll support performing the full set of options for testing in all architectures and platforms supported by dotnet. This support will not require separate branches, just separate scripts where needed (powershell vs bash)
In each branch starting with release-2.0.0-preview1
we'll support a number of variations on the publishing and running of MusicStore. None of these changes require a significantly different workflow, they just require testing and documenting them. This can include but is not limited to:
It's not clear yet what our (ASP.NET) requirements will be for what we want to automate and measure. I would suppose that we would be much more interested in the end-to-end scenarios - what's the difference between 1.0.0 of dotnet/ASP.NET and 2.0.0 of dotnet/ASP.NET - what's the impact of precompiled views? - what's the impact of tiered JIT?. All of these things are just twists on how to publish/run the MusicStore app, and so I don't think they need to affect our overall strategy.
It's not yet clear to me to what degree runtime team members what to hack a local build of the shared framework and iterate locally. The concern here is that dotnet cache
goes out and restores a build of the shared framework to use for running crossgen. If we need to be able to do this locally as part of a dev inner loop, then we should request this feature from the SDK team as an additional parameter.
I think I've addressed all of these points in the strategy and discussion. If you think your concerns are not sufficiently addressed then say so and we'll figure it out.
From @AndyAyersMS
Aspnetcore-dev churns pretty frequently, with only a day or two of packages kept around. The corequisite churns CLI somewhat less frequently, not sure what the policy is there for updates.
So with fetch-latest policy we run the risk of being unable to differentiate perf changes caused by asp changes from those caused by jit/runtime/framework changes.
We also may be unable to root-cause and repro past runs because older packages aren't available.
For the jit team's use it would be more ideal if the aspnet/cli side of things did not update automatically but could remain stable for some predictable interval -- a month would be good. We can have a separate "scout ahead" run that uses latest bits if we want to try and track both.
I also agree with Joseph that running with some or perhaps even most of the code produced with an older jit is going to cause further confusion. We'd need to be able to regenerate all these bits with a newer jit / runtime / framework. Otherwise we might have latent perf surprises when the pregenerated code picks up a newer jit.
From @JosephTremoulet
@AndyAyersMS I think of the 'dev' branch of this repo (which is what this PR is targeting) as the "scout ahead" run -- the simplest place to get a latestAspnet-with-latestCoreclr run to do an A/B comparison for a particular change.
I agree that doesn't make it ideal for analyzing the impact over time of jit changes specifically. Presuming we want both, I don't know if we should just use the master branch (which is tied to released aspnet) for that or have CI runs of the dev branch against fixed aspnet snapshots like you're describing.
Having the flexibility in the dev branch to specify a version (CI could use this) or just grab latest (simplifies joint aspnet/jit development) would probably be ideal. I'd argue the default should be to grab latest.
From @lt72
Andy has a good point. We should definitely have a run configuration with a stable framework and latest JIT. The main reason we created this repo is to test the startup (most important) and steady state perfs of the latest ASP.NET Core w and w/o tiered jitting. Startup is a target for v2, so it should definitely take precedence. Considering that we did not manage to have a stable run for a while, I would suggest to make this work predictably in one configuration and work on other configurations immediately after.
RE: platform priorities: from highest to lowest:
Win x64
Linux x64
Win x86
Linux x86
@rynowak and @davmason : what it would take to create another run configuration that mantains a stable framework as Andy suggested? do we need another branch?
Currently the dev branch will fail to crossgen anything referencing System.Diagnostics.StackTrace
. The command will fail with a message about an assembly version not matching the manifest for version 4.0.2.0
.
Running .\.crossgen\crossgen.exe /Platform_Assemblies_Paths "D:\k\JitBench\.dotnet\shared\Microsoft.NETCore.App\1.2.0-beta-001133-00" /App_Paths "D:\k\JitBench\src\MusicStore\bin\Release\netcoreapp1.2\publish";"D:\k\JitBench\src\MusicStore\bin\Release\netcoreapp1.2\publish\runtimes\win\lib\netstandard1.3" /out "D:\k\JitBench\src\MusicStore\bin\Release\netcoreapp1.2\publish\Microsoft.AspNetCore.Diagnostics.ni.dll" "D:\k\JitBench\src\MusicStore\bin\Release\netcoreapp1.2\publish\Microsoft.AspNetCore.Diagnostics.dll"
Microsoft (R) CoreCLR Native Image Generator - Version 4.5.22220.0
Copyright (c) Microsoft Corporation. All rights reserved.
Error: Could not load file or assembly 'System.Diagnostics.StackTrace, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Error compiling D:\k\JitBench\src\MusicStore\bin\Release\netcoreapp1.2\publish\Microsoft.AspNetCore.Diagnostics.dll: Could not find or load a specific file. (Exception from HRESULT: 0x80131621)
Error: compilation failed for "D:\k\JitBench\src\MusicStore\bin\Release\netcoreapp1.2\publish\Microsoft.AspNetCore.Diagnostics.dll" (0x80131621)
I've added a workaround to the crossgen script to skip the assemblies that are having issues: https://github.com/aspnet/JitBench/blob/dev/src/MusicStore/Invoke-Crossgen.ps1#L15
We should determine the root cause and remove this workaround asap because it causes about 5 assemblies to be skipped.
Currently seeing the following failure with 2.0.0-preview2-002093-00
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Text.Encoding.CodePages, V
ersion=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
at Microsoft.DotNet.Cli.Program.Main(String[] args)
See: https://github.com/dotnet/cli/issues/6517
Currently investigating workarounds
Some travis builds are failing like
It was not possible to find any compatible framework version
The specified framework 'Microsoft.NETCore.App', version '2.1.0-preview1-25320-01' was not found.
- Check application dependencies and target a framework version installed at:
/
- Alternatively, install the framework version '2.1.0-preview1-25320-01'.
This seems to be succeeding on osx and failing on linux. The version number that's getting installed on osx is 2.1.0-dev-di-25408-06
and on linux is 2.1.0-dev-di-25408-06
.
It's possible this could have been a race condition with NuGet
I see that the build is currently flagged as being broken, but there is no issue or content in PR that explains what the current build break looks like, so I am adding this issue.
I am building a standalone version using "-r win10-x64"
I get two compilation errors:
D:\fxkit\JitBench\src\MusicStore>dotnet publish -r win10-x64 -o pubdir
Microsoft (R) Build Engine version 15.3.246.41955 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Models\MusicStoreContext.cs(7,36): error CS0246: The type or namespace name 'IdentityUser' could not be found (are you missing a using directive or an assembly reference?) [D:\fxkit\JitBench\src\MusicStore\MusicStore.csproj]
Models\MusicStoreContext.cs(9,18): error CS0311: The type 'MusicStore.Models.ApplicationUser' cannot be used as type parameter 'TUser' in the generic type or method 'IdentityDbContext<TUser>'. There is no implicit reference conversion from 'MusicStore.Models.ApplicationUser' to 'Microsoft.AspNetCore.Identity.IdentityUser'. [D:\fxkit\JitBench\src\MusicStore\MusicStore.csproj]
We have a new EF warning
warn: Microsoft.EntityFrameworkCore.Query[100102]
Query: '(from Genre g in DbSet<Genre> select [g].Name).Take(__p_0)' uses a row limiting operation (Skip/Take) wit
out OrderBy which may lead to unpredictable results.
Compiling the views on publish is part of our user scenario for 2.0.0 and we expect it to be the default for all but local development.
This is useful for the ASP.NET team to be able to track the impact of this feature on startup, and also potentially useful for the CLR team since it requires a different set of dependencies.
The root cause and failure conditions of this appear to be the same as https://github.com/dotnet/coreclr/issues/9118
I'm not sure how/why we're still seeing this two months later, but it looks like the build of the JIT that's being used for crossgen is from January 19.
Having a folder like 2.0.0-preview2-002093-00.backup
inside your shared fx directory breaks our version discovery. We should harden scripts against this.
Summary
We were hit by a change in the web SDK's default behavior, and view compilation during publishing got turned on by default for rel/2.0.0-* branches. I don't have an estimate about when this happened.
Impact
This should have a big effect on the 'first request' numbers (~1500ms).
Scenarios
The way to think about this is:
View Compilation on Publish on - simulates startup of a published application
View Compilation on Publish off - simulates startup during local development
Both of these are worth measuring, but from my team's point of view, view compilation off is more interesting when talking about optimizations for startup.
Plans
My plan is to turn this back off. I will add some output to the console spew to make it obvious which one was used.
Use dotnet publish .... /p:MvcRazorCompileOnPublish=true
to turn this on.
As usual, if you have concerns or feedback about this plan please raise it soon. Otherwise I will make this change in the next few days.
Some code and project changes are needed to consume the new .net builds.
I'm currently chasing down one last issue with netcoreapp2.1 that's a total blocker from updating. I have this done in a branch right now (rel/2.0.0) but it's blocked by one issue.
If I don't hear from anyone that this would be disruptive, I plan to merge these changes to master as soon as everything is working end to end.
Reported by @JosephTremoulet here: #5 (comment)
Note that the new EntityFramework version spits out a couple warnings when running this code. I've disabled this one per the instructions printed with the warning:
warn: Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory[2]
Query: '(from Genre g in DbSet select g.Name).Take(__p_0)' uses a row limiting operation (Skip/Take)
without OrderBy which may lead to unpredictable results. To configure this warning use the DbContextOptionsBuilder.ConfigureWarnings
API (event id 'CoreEventId.CompilingQueryModel'). ConfigureWarnings can be used when overriding the
DbContext.OnConfiguring method or using AddDbContext on the application service provider.
But I haven't been able to suppress this one (which appears 3x, once for each of 3 different columns):
warn: Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator[1]
No type was specified for the decimal column 'UnitPrice' on entity type 'OrderDetail'. This will cause values to be
silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type
that can accomadate all the values using 'ForSqlServerHasColumnType()'. To configure this warning use the DbContextOpt
ionsBuilder.ConfigureWarnings API (event id 'SqlServerEventId.DefaultDecimalTypeWarning'). ConfigureWarnings can be used
when overriding the DbContext.OnConfiguring method or using AddDbContext on the application service provider.
I can't find an overload of Ignore
that takes a SqlServerEventId, not sure if that's an oversight or NYI or what (note I can find an overload for InMemoryEventId and an overload for RelationalEventId)...
We need to recipe for testing private builds of the runtime/CoreCLR/JIT. I'm looking for input on the best ways to do this.
MusicStore is a shared framework app, meaning that it will load the CoreCLR and CoreFx libraries from C:\Program Files\dotnet\shared\Microsoft.NETCore.App\<version>
.
Note that the C:\Program Files\dotnet\
prefix is actually not hardcoded, it is based on the location of dotnet.exe
, and in the default case you have on your path C:\Program Files\dotnet\dotnet.exe
.
The version is chosen via the MusicStore.runtimeconfig.json
file:
{
"runtimeOptions": {
"framework": {
"name": "Microsoft.NETCore.App",
"version": "1.0.1"
}
}
}
The version number emplaced in MusicStore.runtimeconfig.json
is chosen at build time based on the reference to Microsoft.NETCore.App
in the project.json
. You can edit the MusicStore.runtimeconfig.json
file after publishing to select a different runtime version, but it will still be loaded from C:\Program Files\dotnet\shared\Microsoft.NETCore.App\<version>
.
dotnet
also accepts an --fx-version
argument to specify a framework version like dotnet --fx-version MusicStore.dll
. This will also be loaded from C:\Program Files\dotnet\shared\Microsoft.NETCore.App\<version>
.
My proposal of how to best leverage what's possible today is to create a 'private' build of the shared framework and then refer to that via the --fx-version
argument. This allows you to quickly pivot between builds and do comparisons.
Steps (I haven't tried this, need a guinea pig)
copy C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.0.1
-> C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.0.2-private
make changes in C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.0.2-private
run dotnet --fx-version 1.0.2-private MusicStore.dll
*Note: this does not replace the version used by crossgen.exe
. The crossgen step will use binaries in ...publish\.crossgen
currently. We could improve this if necessary.
The crossgen step also supports a custom path for crossgen: Invoke-Crossgen.ps1 -crossgen_path <path-to-crossgen>
We should have some kind of CI running here to make sure that the dev
branch doesn't break due to ASP.NET changes.
We should pick a candidate like Microsoft.AspNetCore.Hosting
and check whether the assembly was loaded from the bin directory or not.
This should log to the console:
ASP.NET loaded from bin
OR
ASP.NET loaded from store
This way we can easily verify in logs and scripts that the crossgen'ed binaries were used.
See: https://github.com/dotnet/cli/issues/6778
The workaround is to pass --skip-symbols
to dotnet store
.
I'm currently updating instructions and scripts to use this workaround.
I'm trying to do some experiments, and started with just doing a stock build/run of MusicStore on Windows. After following all of the instructions, MusicStore fails to run with the following error:
PS C:\michelm\JitBench\src\MusicStore\bin\Release\netcoreapp2.1\publish> dotnet .\MusicStore.dll
Server started in 1062ms
Starting request to http://localhost:5000
Unhandled Exception: System.AggregateException: One or more errors occurred. (An error occurred while sending the request.) ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The server returned an invalid or unrecognized response
at System.Threading.Tasks.RendezvousAwaitable`1.GetResult()
at System.Net.Http.WinHttpHandler.<StartRequest>d__105.MoveNext()
--- End of inner exception stack trace ---
at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at MusicStore.Program.Main(String[] args) in C:\michelm\JitBench\src\MusicStore\Program.cs:line 62
When running through the instructions for building MusicStore using architecture x86 and rid win7-x86, and channel release/2.0.0, dotnet publish fails with the following output:
MusicStore -> C:\michelm\JitBench\src\MusicStore\bin\Release\netcoreapp2.0\MusicStore.dll
Object reference not set to an instance of an object.
at Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal.PrecompileRunCommand.Execute()
at Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal.PrecompileRunCommand.<Configure>b__17_0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal.PrecompilationApplication.Execute(String[] args)
C:\Users\michelm\.dotnet\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.viewcompilation\2.0.0-preview1-final\build\netcoreapp2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets(26,5): error MSB3073: The command "dotnet exec --runtimeconfig "C:\michelm\JitBench\src\MusicStore\bin\Release\netcoreapp2.0\MusicStore.runtimeconfig.json" --depsfile "C:\michelm\JitBench\src\MusicStore\bin\Release\netcoreapp2.0\MusicStore.deps.json" "C:\Users\michelm\.dotnet\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.viewcompilation\2.0.0-preview1-final\build\netcoreapp2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.dll" @"obj\Release\netcoreapp2.0\microsoft.aspnetcore.mvc.razor.viewcompilation.rsp"" exited with code 1. [C:\michelm\JitBench\src\MusicStore\MusicStore.csproj]
In the 'dev' branch after following all the steps to build and run:
E:\fxkit\JitBench\src\MusicStore\bin\Release\netcoreapp2.0\publish>dotnet MusicStore.dll
Error: assembly specified in the dependencies manifest was not found probably due to missing runtime store associated with artifact.xml -- package: 'Microsoft.Win32.Registry', version: '4.4.0-preview1-25229-02', path: 'runtimes/win/lib/netcoreapp2.0/Microsoft.Win32.Registry.dll'
I'm trying to build MusicStore with the latest dotnet preview (version info at the bottom).
The Microsoft.AspNetCore.All reference isn't supported on netcoreapp3.0 and above:
/Users/sven/bin/sdk/3.0.100-preview-010184/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets(133,5): error NETSDK1079: The Microsoft.AspNetCore.All package is not supported when targeting .NET Core 3.0 or higher. A FrameworkReference to Microsoft.AspNetCore.App should be used instead, and will be implicitly included by Microsoft.NET.Sdk.Web. [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
If I remove the reference I get other compilation errors:
Areas/Admin/Controllers/StoreManagerController.cs(9,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Components/GenreMenuComponent.cs(5,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Controllers/CheckoutController.cs(8,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Controllers/HomeController.cs(6,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Controllers/ShoppingCartController.cs(5,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Controllers/StoreController.cs(5,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(2,37): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft.AspNetCore.Identity' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(3,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(4,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/SampleData.cs(8,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/ShoppingCart.cs(6,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Startup.cs(4,37): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft.AspNetCore.Identity' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Startup.cs(5,17): error CS0234: The type or namespace name 'EntityFrameworkCore' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(10,38): error CS0246: The type or namespace name 'IdentityDbContext<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(17,47): error CS0246: The type or namespace name 'DbContextOptionsBuilder' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(25,16): error CS0246: The type or namespace name 'DbSet<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(26,16): error CS0246: The type or namespace name 'DbSet<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(27,16): error CS0246: The type or namespace name 'DbSet<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(28,16): error CS0246: The type or namespace name 'DbSet<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(29,16): error CS0246: The type or namespace name 'DbSet<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(30,16): error CS0246: The type or namespace name 'DbSet<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Models/MusicStoreContext.cs(12,34): error CS0246: The type or namespace name 'DbContextOptions<>' could not be found (are you missing a using directive or an assembly reference?) [/Users/sven/src/aspnet/JitBench/src/MusicStore/MusicStore.csproj]
Version info:
Version: 3.0.100-preview-010184
Commit: c57bde4593
Runtime Environment:
OS Name: Mac OS X
OS Version: 10.14
OS Platform: Darwin
RID: osx.10.14-x64
Base Path: /Users/sven/src/dotnet/linker_arcade/.dotnet/sdk/3.0.100-preview-010184/
Host (useful for support):
Version: 3.0.0-preview-27324-5
Commit: 63a01b08e5
.NET Core SDKs installed:
2.0.0 [/Users/sven/src/dotnet/linker_arcade/.dotnet/sdk]
2.1.403 [/Users/sven/src/dotnet/linker_arcade/.dotnet/sdk]
3.0.100-preview-010184 [/Users/sven/src/dotnet/linker_arcade/.dotnet/sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.5 [/Users/sven/src/dotnet/linker_arcade/.dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.5 [/Users/sven/src/dotnet/linker_arcade/.dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0-preview-19075-0444 [/Users/sven/src/dotnet/linker_arcade/.dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.0 [/Users/sven/src/dotnet/linker_arcade/.dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [/Users/sven/src/dotnet/linker_arcade/.dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0-preview-27324-5 [/Users/sven/src/dotnet/linker_arcade/.dotnet/shared/Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
Error: assembly specified in the dependencies manifest was not found probably due to missing runtime store associated with artifact.xml
-- package: 'System.Diagnostics.DiagnosticSource', version: '4.4.0-preview1-25228-02', path: 'runtimes/win/lib/net46/System.Diagnostics.DiagnosticSource.dll'
The artifact.xml does list DiagnosticSource
<Package Id="System.Diagnostics.DiagnosticSource" Version ="4.4.0-preview1-25228-02"/>
But the package isn't in there anywhere.
I've seen this issue running on appveyor, I haven't yet seen it on a local windows install.
System.Data.SqlClient.SqlException (0x80131904): Cannot open database "MusicStore" requested by the login. The login failed.
Login failed for user 'APPVYR-WIN\appveyor'.
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.<OpenAsync>d__34.MoveNext()
ClientConnectionId:2e6c7daf-2faa-42b2-8cb1-489a353f9e01
Error Number:4060,State:1,Class:11
Server started in 5534ms
``
Tracking this since it doesn't cause the app to fail, it just seems to affect the startup time.
I repeat, I have **only** seen this on appveyor.
Everything is currently failing like:
D:\k\JitBench\.dotnet\sdk\2.1.0-preview1-007071\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.CrossGen.targets(48,5): error
: Unable to find resolved path for 'coreclr'. [D:\k\JitBench\CreateStore.proj]
dotnet store failed.
Following up with the SDK team to see if this is a regression
Based on discussion over email we don't have the same complex needs for testing we once had.
The master branch of this repo will be updated to be a simple 3.0-style ASP.NET Core app. I'm going to remove complex scripts that deal with crossgen, or creation of the runtime store so no one has indicated that they use these.
I'm seeing excessive CPU usage and build failures on the CI due to the dotnet store
step running for an indefinite amount of time.
Currently investigating, but all runs appear to be blocked.
Measure Requests/Second: consider adding a loop around HttpRequest on main thread
I'm looking for a way to force the dotnet store
in AspNet-GenerateStore.ps1
to pickup a custom crossgen (say, available at D:\coreclr\bin\Product\Windows_NT.x64.Release
) to generate native images, rather than use the version pulled in to JitBench\.temp\Optimize\netcoreapp
. Any suggestions for this? @rynowak @litian2025
Measure latency on single requests: consider using same measurements for steady state.
Investigate less invasive way of collecting data points.
Steady state could simply output data on the console every 1000 or so requests, making it non-invasive.
Latency will need to collect all data points, making it a bit trickier.
Moving avg/variance?
Or simply accumulate all values in a large enough pre-allocated array and post process?
We are looking for whatever takes the least resource overall.
When I follow the instructions in the dev branch README, I see this:
Setting JITBENCH_FRAMEWORK_VERSION to 2.1.0-dev-di-25621-02
which presumably corresponds to coreclr's dev/defaultintf branch rather than its master branch.
The scripts here seem to be behaving properly, but passing -Channel master
to Dotnet-Install.ps1
is now returning dev-di
builds. I don't know if we should be specifying some other -Channel
(or even where to get a list of available channels and what they're for) or if -Channel master
should not be returning dev-di
builds or what, but unless we're using code that depends on the default interface features I'd like to be able to continue running against builds from coreclr's master branch.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.