maoni0 Profile Banner
Maoni Stephens Profile
Maoni Stephens

@maoni0

Followers
8K
Following
2K
Media
119
Statuses
2K

loves working on dotnet GC and other perf stuff; avid zoo-goer; wannabe hiphop dancer. old blog https://t.co/FIoh6vkZpn

Redmond, WA
Joined April 2019
Don't wanna be here? Send us removal request.
@maoni0
Maoni Stephens
5 years
A Thread - a guideline doc for memory performance analysis for #dotnet #dotnetcore. For the past few weekends I've been working on a (long) document that aims to help you with finding efficient approaches to mem perf problems.
15
190
482
@maoni0
Maoni Stephens
1 year
so really you should specify the keyword/level🙂 or use one of the built-in profiles.
0
0
3
@maoni0
Maoni Stephens
1 year
I've requested the diagnostics folks to the change the default: note that this means no keywords enabled on informational level.
1
0
5
@maoni0
Maoni Stephens
1 year
recently we worked with a team that specified only the provider name in dotnet-trace without keywords/level. dotnet-trace will include ALL keywords on VERBOSE level. this can easily degrade perf. DotNETRuntime provider will also induce GCs (due to the GCHeapCollect keyword).
2
2
14
@maoni0
Maoni Stephens
1 year
profiling tip - if you upgrade to a newer version of a product and observe perf regression, make sure to grab some perf traces before you revert (if you revert all usage and can't easily get traces later). without comparative traces the investigation will be much harder.
0
3
12
@maoni0
Maoni Stephens
1 year
if you use PerfView, have you noticed the GCTriggeredStacks cmd arg? to see callstacks for induced GCs, use this lightweight commandline - . PerfView /GCCollectOnly /GCTriggeredStacks /nogui collect. (this is less verbose than what mem-doc currently shows).
2
7
45
@maoni0
Maoni Stephens
1 year
if I could only give one piece of advice to folks who need to do memory perf analysis, it would be to learn to use traces. tracing has existed for multiple decades and I still come across folks who need to do memory analysis and never use it. it really is a loss on productivity.
1
8
41
@maoni0
Maoni Stephens
2 years
very cool visualization tool to show case GC activities -.
@KooKiz
Kevin Gosse
2 years
In preparation for my talk at @update_conf, I've prepared a tool to visualize the activity of the GC. It was initially meant as a gimmick, but it turns out to be a good way to understand some GC mechanisms. For instance, here you can see the effect of
1
3
36
@maoni0
Maoni Stephens
2 years
what's new in the .NET 8.0 GC? we focused on solving the Server GC problem where it keeps too much memory around. the new DATAS feature aims to keep the memory usage much more in line with what your app requires.
7
80
289
@maoni0
Maoni Stephens
2 years
2nd edition of the Pro .NET Memory Management book is coming🙂.
@konradkokosa
Konrad Kokosa
2 years
I am thrilled to announce that we've begun work on the Second Edition of Pro .NET Memory Management, with the awesome @chnasarre and @KooKiz as co-authors!.Let's upgrade those 1000+ pages about memory for .NET 7 and beyond, all under the watchful eye of reviewer @maoni0 👀
Tweet media one
1
7
86
@maoni0
Maoni Stephens
2 years
it was awesome to test GC changes directly on machines that took forked production traffic (they don't affect production but we can see real effect of GC changes).
0
0
5
@maoni0
Maoni Stephens
2 years
"in testing we saw about a 24% average improvement in the amount of time the process spends in GC (which isn’t much to start with). In production, it was even better, closer to 30%.".
1
0
3
@maoni0
Maoni Stephens
2 years
making .net better on AWS! great experience working with @socketnorm on this.
@socketnorm
Norm Johanson
2 years
Here is my new blog post about some interesting details about the .NET Garbage Collector and AWS ECS and Lambda. If you are having any memory issues with .NET and these services definitely check it out. Thanks to @maoni0 for collaborating on this post.
0
3
30
@maoni0
Maoni Stephens
2 years
I literally just wrote 3 emails to 3 different teams to ask them to capture a top level GC trace to understand their memory behavior in general. 99.9% of the time this is the BEST way to start a memory investigation.
0
5
34
@maoni0
Maoni Stephens
2 years
I don't know how gas leaf blowers are still a thing - they should be banned from everywhere. if you live in Kirkland, WA, would you consider signing this?. Ban Nasty Gas-Powered Leaf Blowers in Kirkland - Sign the Petition! via @Change.
0
1
10
@maoni0
Maoni Stephens
3 years
a new API GC.GetTotalPauseDuration is available in .NET 7 it gives you the total amount of time paused in GC since the beginning of the process. should be a good aid in your performance monitoring.
6
27
107
@maoni0
Maoni Stephens
3 years
◼️Why do I need to care about the OS differences at all?.NET is cross-plat so it should take care of that for me!.◼️We are collecting the % time in GC counter and it's telling us it's 99%.How do we fix our perf problem?.◼️What's the most efficient way for me to get help from you?.
0
2
6
@maoni0
Maoni Stephens
3 years
I added a FAQ section to mem-doc that includes the following so far -. ◼️I didn't change my code at all, why am I seeing a regression in memory when I upgrade my .NET version?. ◼️Why isn't the GC collecting these objects? They should be collected!.
@maoni0
Maoni Stephens
5 years
A Thread - a guideline doc for memory performance analysis for #dotnet #dotnetcore. For the past few weekends I've been working on a (long) document that aims to help you with finding efficient approaches to mem perf problems.
3
16
37
@maoni0
Maoni Stephens
3 years
in any case, if you are looking for a non software book to read, I recommend it 😀.
1
0
6
@maoni0
Maoni Stephens
3 years
it has been pointed out to me (a reason that I had not considered myself) another reason is because they "don't want to look stupid to their teammates" and that's more common with junior folks. you'd be doing yourself a disservice by doing that, especially if you are junior.
1
0
10
@maoni0
Maoni Stephens
3 years
yes I know this will need to be time boxed but there are times I don't see even the minimum happening and that is sad. one of the biggest reasons why I chose to stay on the runtime team for so long is I haven't observed that on my team.
1
0
5