Announcing New MicroProfiler Features for Network Profiling

Hello everyone!

We’re happy to announce we’ve added a Network Plugin to the MicroProfiler that will provide information on network usage! The MicroProfiler is a great tool for profiling CPU and memory to pinpoint related issues, but until now hasn’t provided information on network usage. This update will help identify causes of latency and loading issues in your experiences.

Need a refresher on the MicroProfiler? Check out our Creator Hub for a detailed breakdown or the Roblox Learn YouTube videos for a quick recap.


Network Plugin Features

  • Network Traffic Graphs - displays the amount of data being transmitted and received by your experience for the captured frames

  • Verbosity Menu - menu to capture more or less detailed information about network events

  • Events Window - detailed breakdown of individual events in the capture

Use Case

This new plugin will be useful for diagnosing causes of heavy network use and latency in experiences as well as identifying assets that may be loading slowly. Take this graph for example:


Network Traffic Graphs


Events Window

Here, we see a frame where a lot of network activity occurred. Around 2.5MB was received during this frame. By opening up the events window for the frame, we can see that this was due to several assets being delivered. Clicking on these events will display the individual asset IDs of the assets that were received.

Ready to start? To learn how to access the MicroProfiler Network Plugin, go to our Creator Hub where we walk you through how to open and interact with our new features.

Thank you for being a part of the community and building on Roblox! Special thanks to @silvercatring. Your contributions have made this feature possible! We can’t wait for everyone to try it out and appreciate all of the support from the community! Looking forward to hearing what you all think!

155 Likes

This topic was automatically opened after 12 minutes.

Oh, thank you @newtonmetre for showing me the new features! I’m trying it out soon! :heart:

5 Likes

This looks like a cool feature so I’m exited for it, but will see be able to view raw HTTP data/headers/replies? I find myself printing out raw RequestAsync outputs and inputs a lot so something like browsers have would be huge.

10 Likes

Hi, is it possible for there to be some studio APIs made for this?

2 Likes

Release a tutorial on how to use this because I have no idea how to even approach this or use this at all

6 Likes

Thank you, I had been working on a similar interface but obviously lacked capability to hook to other channels other than remote events like the engine events.

Does this allow you to query for events in a selected period? Clicking individual frames and checking the list there is not as useful as having some persistent log that can allow you to filter by specific types, destinations, etc.

1 Like

How do I turn that view off? Is there a button for it now?

2 Likes

Pausing the microprofiler seems to have broken.

3 Likes

This is huge, looking forward to debugging and improving games with this!!!

2 Likes

I’m not seeing this feature. Is this not live on Mac?

(I created a dump of both the client and server)

2 Likes

It’s specifically only available in dumps and not on the actual client. You need to take a microprofiler dump first and open that up. Under X-Ray youll find the network option.

5 Likes

Thanks for the help! I hadn’t thought of looking in the X-Ray menu. Did you manage to find Events Window as well?

2 Likes

Right click on one of the colored bars from the network graph.

4 Likes

epic update! is there a plan to allow us to see network activity in the microprofiler in real time (not through dumps)? would be very helpful for identifying spikes.

4 Likes

This is a terrific tool for helping us maintain our bandwidth budgets! Massive props to the team that worked on this.

On the topic of network performance, would there be any interest in exposing an API that allows developers to measure how many bytes firing a remote would use given a set of arguments? I currently do estimations to determine whether I should use a number/vector/buffer/variadic for frequent events, and I’m sure many networking libraries would benefit from it if it were accessible in live games.

The reason estimations aren’t that great is because we can’t account for compression. A 512-byte buffer that’s all 0s tends to be cheaper than a 128-byte buffer with unique values.

5 Likes

Good stuff. Don’t have much to say about this other than its a good addition.

Something i have to ask about is the fact that there is a rare bug within the microprofiler that tends to just swap label names with something else entirely.
Here is an example:
image
The “CFrame Update” label is nowhere present in the code that runs the actual CFrame Update label, let alone script, actor and even cpu thread.
This bug can happen at any time from what ive seen. I dont really have any reproduction steps since i just dont know how or when it occurs. It just does.

3 Likes

This is on our radar to fix so we are definitely aware of it being an issue in some contexts.

4 Likes

Details? I’ve tested pause on both windows/mac and had no issues.

1 Like

:folded_hands: amazing updates. The updates have been so good back to back.

1 Like