-
Notifications
You must be signed in to change notification settings - Fork 524
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Paket is slow on HDD because of creating the packages folder #2333
Comments
/cc @matthid regarding runtime libs |
I get |
It shouldn't actually download that much because we use the nuget cache as well. Do you have a slow hard drive and creating the packages folder itself is taking long for you? |
The reason because its not happening in your .NET Core console app is because something is broken in paket. That lockfile looks broken :) |
I tried paket as well a few weeks ago with an internal repository that contains a mix of netstandard1.x, netcoreapp1.x and net46 libraries and it took forever to do the migration from csproj/nuget. After more than an hour of waiting, I cancelled it and gave up. I could run it again and provide more information if you want?! |
I just tried it again and looked for file accesses with procmon.exe - the step "Resolving packages for group Main" is downloading files into my AppData\Local\NuGet\Cache folder. I have a bunch of ".json" and also a bunch of ".failed" files in that folder. As you can see, the first few packages were fast (and without .failed files) and then it gets ridiculously slow with just a few packages per minute and a lot of .failed files. I tried this a few times with the same pattern so it can't be my internet connection. |
Can you please check the specified sources in paket.dependencies? Maybe
there are more sources than you actually need?
Am 17.05.2017 21:30 schrieb "Christian Weiss" <notifications@github.com>:
… I just tried it again and looked for file accesses with procmon.exe - the
step "Resolving packages for group Main" is downloading files into my
AppData\Local\NuGet\Cache folder. I have a bunch of ".json" and also a
bunch of ".failed" files in that folder.
As you can see, the first few packages were fast (and without .failed
files) and then it gets ridiculously slow with just a few packages per
minute and a lot of .failed files. I tried this a few times with the same
pattern so it can't be my internet connection.
[image: unbenannt1]
<https://cloud.githubusercontent.com/assets/4581460/26172150/b41e157a-3b47-11e7-9265-e0c5509e0108.PNG>
[image: unbenannt2]
<https://cloud.githubusercontent.com/assets/4581460/26172151/b73e10e8-3b47-11e7-9d01-48f3952b17fb.PNG>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#2333 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AADgNGF2KYlANZmYE-iDL7XAWLIKqifkks5r60rBgaJpZM4NZB81>
.
|
After #2336 this will pull netcore dependencies properly as well (it was actually a bug): Now we need to figure out why its so slow for you... |
Oh god! Really? 🙀🙁
I guess it's something with the NuGet cache, but i have no idea. |
Without any cache I get:
Do you maybe have a slow internet connection? @teo-tsirpanis Where is it slow for you, when resolving (lists of version numbers showing up) or when downloading ( |
While building paket.dependencies
paket install: @matthid How can I make a more detailed performance report like the previous comment? And why are packages copied again to a local project-specific directory? They are already in `%UserProfile%, so why not use them from there without copying? I guess that's why Paket is so slow in comparison with the .NET CLI. |
@teo-tsirpanis I'm trying to release the performance report, but anti-maleware is blocking me, hopefully I can resolve this soon and release a new beta. I will report back (hopefully soon) |
We need to keep the packages folder for compatibility reasons, but we maybe can make that opt-out? |
IMHO, that's a good idea. A better proposal is that Paket should put only the direct references in the |
@teo-tsirpanis yes that would work as well And @cwe1ss reported hours of waiting, you report 4 minutes. I think we need to be more systematic here to solve this. First step is using beta006 which will report performance more detailed. I managed to release it just right now: https://www.nuget.org/packages/Paket/5.0.0-beta006 might take a moment for nuget to index it. |
I'm currently on holiday so I'll try this again next week. |
Here it is. With the
|
3min disk io?
Am 25.05.2017 5:31 nachm. schrieb "Theodore Tsirpanis" <
notifications@github.com>:
Here it is. With the paket.dependencies file I submitted earlier and after
deleting paket.lock and the packages directory, this is the performance
breakdown of a paket install:
Performance:
- Resolver: 45 seconds (6 runs)
- Runtime: 4 seconds
- Runtime Paket 4 (estimated ~500ms respose*): 7 minutes, 39 seconds
* See http://stats.pingdom.com/aqicaf2upspo/1265300 for average
response times.
- Blocked (retrieving package versions): 28 seconds (354 times)
- Blocked (retrieving package details): 12 seconds (556 times)
- Disk IO: 3 minutes, 15 seconds
- Average Request Time: 4 seconds
- Number of Requests: 580
- Runtime: 4 minutes, 14 seconds
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2333 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AADgNCHohRCCccqHjlHeh3DWBGe4N-dyks5r9Z7ggaJpZM4NZB81>
.
|
I guess we have no ssd there and it's in fact the time to build the packages folder... |
Most probably, the HDD speed is the botleneck. FYI, this is the laptop I use. |
@teo-tsirpanis See #2369 where we track the problem of slow resolution @cwe1ss I guess you have the other problem and not this one? |
dulicate of #2141 |
This will be available soon and is tracked in #2638, please test the PR (or soonish alpha). If it doesn't fix the problem let us know. |
Description
I am creating a simple .NET Stnandard library. It only contains FAKE, Chessie and the usual F# SDK libraries. However, probably due to .NET Standard's assembly file fragmentation, Paket downloads a significant amount of libraries, slowing down the build process. This thing does not happen with .NET Core console apps.
paket.dependencies
paket.lock
paket --version
Paket version 5.0.0-alpha020
Repro steps
dotnet new classlib -lang F#
'paket convert-from nuget`
'paket add nuget Chessie`
paket install
Wait... 😫
Expected behavior
Paket would download the dependencies quickly and without any hassle (like what it does so well when working on the good old .NET Framework).
Actual behavior
Paket downloads everything (including the Linux and macOS runtimes).
The
packages
folder becomes quite big (450 MB).Known workarounds
Wait every time you run
paket install
... 😫Target the .NET framework (and tolerate a lack of portability for your library 😢)
Do not use Paket 😨.
The text was updated successfully, but these errors were encountered: