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:
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!
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.
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.
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.
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.
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.
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:
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.