Warmroast is a Java utility written by sk89q (the author of World Edit and World Guard). It allows you to audit the Java Virtual Machine you want to target (not always Minecraft) and observe what portions of code take the most CPU time (are the most heavy resource wise). To use it, be sure to have a Java 8 development kit on your PC/server.

Warmroast a command line utility that will open a hosted server on a specific port listing the portions of code executed between the start of the utility, and the moment you opened the webpage. See: https://github.com/boubou19/warmroast to see how to properly set it up. Here is a corrected version of Warmroast made by boubou_19 to fix some small bugs: Warmroast 1.0.2

Example of lag monitoring with warmroast

In the above picture, we can see that 1.7% of the time, the CPU is expending its computational power on emitting energy to GT cable networks. We can also see on the node below that 1.22% of the time, this is happening on world accelerator logic. Beware not to interpret the report too quickly: values displayed here are relative time based on the report duration. You may see portions of code highlighted as heavy code on very small duration, but not see them in large durations. The picture above was made after 5 hours of sampling, so values are kinda stable and it's safe to assume that world accelerators are lagging a bit the server. However, a broad way to judge the extent to which a server is "lagging" is comparing the amount of time taken to tick, and sleep.

This tool only is meaningful in seeing "recurrent" lag. The longer the sampling lasts, lesser will be your chances to see the lag spikes. If you want to track down lag spikes, you need to make many short samplings and hope for the lag spike to occur during the sampling period. This tool also displays parts of the code that may be inefficient, programmatically wise, alongside the instances of (tile) entities that are causing the issues. This is why it's better to combine Warmroast with a tool like Opis, as it allows you more precision in determining the real issue.

If you are experiencing some kind of TPS reduction but you don't know what you are looking at, please ask in our Discord channel with a picture of your report, or send the html page directly. (To get the page, right click, and save as.) This kind of report is also very valuable for the developers as they can directly look into the problematic functions, allowing the resolution of these errors to become much easier.