Opis

From GT New Horizons
WIP!
This page is a Work In Progress. You can help out by adding more information to the page.


Opis is a powerful tool made by ProfMobius to track down lag induced by entities or Tile Entities. You can download it here if you don't have it in your mod folder already. By default Opis comes preinstalled on current versions of GTNH. Due to its capabilities (teleport, kill, etc.) and high resource usage, most features can only be accessed as an Admin/OP of the server. Single Players with cheats disabled may have to Open to LAN and set Allow Cheats: ON.

Opis Interface

Summon the Opis window with the following command:

  • /opis

The units used are as follows:

  • t or tick. One twentieth of a second
  • s or second. One sixtieth of a minute
  • ms or millisecond. One thousandth of second
  • µs or microsecond. One millionth of a second

Summary Tab

This is the default tab. On this tab you can see various information, such as the tick time overall, network data between the client and server (upload rate, download rate, ping, ...) as well as the amount of forced chunks and loaded chunks. To trigger a profiling session, click on the button named "Run Opis". A progress bar will display under the button which changes to "Running..." while a profile is generating.

Generating a profile is very taxing on the server and lag should be expected during the process. Once profiling is finished, the game window will freeze, taking some time for the game to process all the data. Once it's done data will populate to the other tabs. Use the Tracking tab or Server timing tab to learn more about lag on the server.

Measurement Description
Ping time As used by Opis, includes not only packet travel time between the client and server but also the processing time of that packet at the server. For example, a high ping time might correlate with a delay between breaking a block client-side, and having that block actually be removed from the game world and drop as an item. Ping is also one of the graph options at the bottom of the Summary tab in real time.
Tick time Also known as MSPT, or milliseconds per tick. How long the server is taking to compute each tick, of which there should be twenty per second when all is well. If tick time >50ms, the server isn't able to process all the data fast enough and tps (ticks per second) goes down. This is a common source of lag. Tick time is the other real time graphing option on the bottom of the summary screen.
World tick Total time spent updating the world. This includes block lighting updates, random ticks for growth (crops, trees, etc.) and server-side spawn calculation. Hover over the World tick update time to see a breakdown by dimension.
TileEntities Total time spent updating tileEntities, and how many there are being simulated. TileEntities are blocks with additional data storage. This may be used to keep an inventory (chests, furnaces, hoppers, etc.) or a state (monster spawners) or used as part of the rendering (enchanting table's floating book, end portal frame particle effect).
Entities Total time spent updating entities, including mobs - monsters, animals, villagers, etc.- and other mobile objects, such as dropped items, XP orbs, projectiles, boats and minecarts. Also shows total loaded entity count.
Handlers Handlers are subroutines that run once a tick to control other blocks or systems that aren't part of World tick.
Forced chunks Chunkloaded chunks, usually by an item such as a Railcraft Anchor or mod like FTB Utilities.
Loaded chunks All chunks currently active in memory.
Upload/Download Data transfer rate, from the server's perspective. Upload is data sent to client(s), download is data received from client(s).

Tracking Tab

In the tracking tab, you will be able to see in real time various data once you'll have initialised a run. They will be sorted in 4 categories; Players, Entities, Tile Entities and Dimensions.

Players

In this tab, you'll see all the players online, the dimension they are in, as well as their coordinates in the dimension. You can also teleport yourself to them or pull them to you even across dimensions. This tab is dynamic and updates in real time without needing to run profiling. Center Map will show a heatmap of activity, loaded entities and coordinates.

Entities

In this tab, you'll be able to see the loaded entities, and you'll also be able to Kill All entities of a specific type on the server. Be careful with this option, this can cause unintended side effects for the players, like losing their nametagged mobs. Use the Refresh button to recount entities without having to do a full profiling session. The Filter Entities checkbox compresses all stacks (Dropped Item) and players into single lines for easier viewing.

Tile Entities

In this tab, you'll be able to see how many tile entities there are in your world loaded for each type of tile entity.

Dimensions

In this tab, you'll be able to see the load caused by entities and tile entities in each dim. It should be noted that it's only entities and tile entities load, not the total load by dimension (for instance, AE2 can do some additional load that Opis cannot see). The purge buttons will ask you to trash any mob in the dimension, any item on the ground, as well as purging chunks to only let force loaded chunks. Keep in mind that it's not a proper way of unloading a chunk, so you may cause unintended behaviors sometimes by doing this. In the screenshot below, you can see that an empty dim is taking some load even if the dim is not loaded, this is why it is recommanded for public or semi-public servers to limit the amount of personal dims, as the cumulated load is not neglectible.

Server Timing Tab

Client Timing Tab

Network Tab

Debug Tab

The Orphan TileEnts tab tracks 'badly behaving tile entities', and is meant for mod development more than server diagnostics. It looks for tileEntities on empty blocks, inside blocks that are not supposed to have tileEntities, and multiple tileEntities in the same block. These types of issues can result in blocks not updating correctly or reverting to previous states. In a properly functioning environment, there should be nothing on this list. The Threads tab lists all the threads on the server.

External Links