Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 High CPU usage by VANetObjMD.dll
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

Kostya
New Member

4 Posts

Posted - May 21 2022 :  6:14:43 PM  Show Profile  Reply with Quote
When I open my huge project in VisualStudio 2019 I get very high CPU usage by 4 VANetObjMD.dll processes. Even worse: their priority is set to High, so my PC becomes unresponsive for few minutes. Could you add an option to lower VANetObjMD.dll process' priority?

feline
Whole Tomato Software

United Kingdom
17822 Posts

Posted - May 23 2022 :  06:07:31 AM  Show Profile  Reply with Quote
What do you have:

VA Options -> Performance -> Thread priority = Normal / Below Normal / Lowest (requires restart)

set to?

If this CPU spike is only on solution load then I am not sure that changing this setting will help.

Does turning Off:

VA Options -> Projects and Files -> Enumerate project references thoroughly

have any effect on this?

How many projects does your solution contain? The top line in Solution Explorer will tell you.

How many files do you have in your solution?

If you open VA's Open File in Solution dialog (Alt-Shift-O) the title bar contains two numbers. The first number is the number of files currently listed, which changes as you filter the list. The second number is the total number of files in the list, which is normally the number of files in your solution. What is this second number?

I am trying to get a sense of the scale of your large solution.

Which language or languages is your solution using?

zen is the art of being at one with the two'ness
Go to Top of Page

Kostya
New Member

4 Posts

Posted - May 26 2022 :  6:11:12 PM  Show Profile  Reply with Quote
I have the information requested.
I have 'Below Normal' set in "VA Options->Performance->Thread priority". Changing it does not help.
Also turning Off "VA Options->Projects and Files->Enumerate project references thoroughly" does not help.
I have 14 projects in my solution (all C#) that contain 13,158 source files (combined) and around 100 Nuget package references.
We are using SDK-style C# project files with .NET 5 as target framework version.
I only see the CPU spikes on solution loading (and not after compilation).
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17822 Posts

Posted - May 27 2022 :  06:39:13 AM  Show Profile  Reply with Quote
This isn't that large, not compared to what some of our users are working with.

At the risk of asking a stupid question, are all of the NuGet packages downloaded and up to date? I am assuming they are, but want to just double check.

I am going to try setting up a test case here, to see if I can reproduce this problem.

zen is the art of being at one with the two'ness
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17822 Posts

Posted - May 27 2022 :  11:59:32 AM  Show Profile  Reply with Quote
Where are you seeing the CPU usage problem?

using VS2019 and VA 2451.0 I now have a stress testing C# solution that contains 28,997 C# code files, and I have added 37 NuGet packages to the solution. I am not even seeing VANetObjMD.dll come up as a process in either Windows 10 Task Manager or Process Explorer.

I am also not getting anything like the CPU usage spike you are seeing either.

Are you using publicly available NuGet packages from nuget.org, or are these private packages, or a mixture of both?

zen is the art of being at one with the two'ness
Go to Top of Page

Kostya
New Member

4 Posts

Posted - May 30 2022 :  3:22:35 PM  Show Profile  Reply with Quote
Yes, all NuGet packages are already downloaded when I open VisualStudio.
I see 4 instances of VANetObjMD.dll in Windows Task Manager: all 4 with High process priority and making my entire machine (including Task Manager) unresponsive for few minutes.
We are using private NuGet packages from private VSTS NuGet feed.
I'm wondering if this issue is caused by a unique combination of .NET 5 targeting and a huge IDL project that produces 290 Megabytes Managed DLL.
Because I don't see this issue with other projects/solutions that we have (these other projects target .Net Framework 4.7.2 and use much smaller Managed DLLs).
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17822 Posts

Posted - May 31 2022 :  07:24:44 AM  Show Profile  Reply with Quote
The project output should not be the problem, but any files that VA is asked to parse may matter. Are you dealing with large IDL files, or just a lot of small IDL files? This could be what is causing this problem, as VA works to parse the files.

What is the largest IDL file that you are working with? Searching around here, I have a 5meg IDL file, but so far nothing larger to test with, so if the IDL file size is a theory, I need to work out how to get a larger file. Although, since IDL files seem to be text files, I might be able to make a larger one, although it might not be valid.

zen is the art of being at one with the two'ness
Go to Top of Page

Kostya
New Member

4 Posts

Posted - Jun 01 2022 :  6:18:07 PM  Show Profile  Reply with Quote
I confirm: the problem is in VaNetObjMD.dll parsing our *compiled* IDL project DLL (not the source IDL files).
This is the command line (captured in Process Explorer):
"c:\users\redacted\appdata\local\microsoft\visualstudio\16.0_79675f99\extensions\ukabivb0.mta\VaNetObjMD.dll"
with 2 arguments:
"c:\proj\redacted\private\modules\redacted\objd\amd64\dataschemas.dll"
"c:\users\redacted\appdata\local\microsoft\visualstudio\16.0_79675f99\extensions\ukabivb0.mta\Data\vs16_1\netImport\c-1980290751.d1"

Where dataschemas.dll is a huge 290 MBytes Managed DLL that contains 13 thousands Managed types/objects.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17822 Posts

Posted - Jun 02 2022 :  08:54:01 AM  Show Profile  Reply with Quote
Thank you, that is quite definitive, just a little unexpected. I am not sure why VA is parsing the output, but clearly it is.

Would it be possible to get a copy of one of these dll's, purely for testing purposes? I understand this is normally not possible, but it's worth asking on the off chance that it would be possible, and any files would be used only to test and make sense of the problem.

Can you please load the IDE, but not your solution, then turn on VA logging, via:

VA Options -> Performance -> Enable logging

then load your solution, wait for the CPU spike to stop and close the IDE. Closing the IDE stops the VA log files from getting any larger, keeping them focussed on the problem. This page explains how to locate the log files that are generated:

https://docs.wholetomato.com/default.asp?W305

Can you please send me the files via email:

support@wholetomato.com

including this thread ID or URL in the description, so we can match it up.

zen is the art of being at one with the two'ness
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2021 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000