mirror of
https://github.com/luanti-org/luanti.git
synced 2025-09-15 18:57:08 +00:00
Add documentation index for doc/
as README.md
, and small docs fixes (#16253)
This commit is contained in:
parent
48ef7fff23
commit
da0f8cd6b5
5 changed files with 75 additions and 11 deletions
|
@ -1,89 +0,0 @@
|
|||
# Miscellaneous
|
||||
|
||||
## Profiling Luanti on Linux with perf
|
||||
|
||||
We will be using a tool called "perf", which you can get by installing `perf` or `linux-perf` or `linux-tools-common`.
|
||||
|
||||
To get usable results you need to build Luanti with debug symbols
|
||||
(`-DCMAKE_BUILD_TYPE=RelWithDebInfo` or `-DCMAKE_BUILD_TYPE=Debug`).
|
||||
|
||||
Run the client (or server) like this and do whatever you wanted to test:
|
||||
```bash
|
||||
perf record -z --call-graph dwarf -- ./bin/luanti
|
||||
```
|
||||
|
||||
This will leave a file called "perf.data".
|
||||
|
||||
You can open this file with perf built-in tools but much more interesting
|
||||
is the visualization using a GUI tool: **[Hotspot](https://github.com/KDAB/hotspot)**.
|
||||
It will give you flamegraphs, per-thread, per-function views and much more.
|
||||
|
||||
### Remote Profiling
|
||||
|
||||
Attach perf to your running server, press *^C* to stop:
|
||||
```bash
|
||||
perf record -z --call-graph dwarf -F 400 -p "$(pidof minetestserver)"
|
||||
```
|
||||
|
||||
Collect a copy of the required libraries/executables:
|
||||
```bash
|
||||
perf buildid-list | grep -Eo '/[^ ]+(minetestserver|\.so)[^ ]*$' | \
|
||||
tar -cvahf debug.tgz --files-from=- --ignore-failed-read
|
||||
```
|
||||
|
||||
Give both files to the developer and also provide:
|
||||
* Linux distribution and version
|
||||
* commit the source was built from and/or modified source code (if applicable)
|
||||
|
||||
Hotspot will resolve symbols correctly when pointing the sysroot option at the collected libs.
|
||||
|
||||
|
||||
## Profiling with Tracy
|
||||
|
||||
[Tracy](https://github.com/wolfpld/tracy) is
|
||||
> A real time, nanosecond resolution, remote telemetry, hybrid frame and sampling
|
||||
> profiler for games and other applications.
|
||||
|
||||
It allows one to annotate important functions and generate traces, where one can
|
||||
see when each individual function call happened, and how long it took.
|
||||
|
||||
Tracy can also record when frames, e.g. server step, start and end, and inspect
|
||||
frames that took longer than usual. Luanti already contains annotations for
|
||||
its frames.
|
||||
|
||||
See also [Tracy's official documentation](https://github.com/wolfpld/tracy/releases/latest/download/tracy.pdf).
|
||||
|
||||
### Installing
|
||||
|
||||
Tracy consists of a client (Luanti) and a server (the gui).
|
||||
|
||||
Install the server, e.g. using your package manager.
|
||||
|
||||
### Building
|
||||
|
||||
Build Luanti with `-DDBUILD_WITH_TRACY=1`, this will fetch Tracy for building
|
||||
the Tracy client. And use `FETCH_TRACY_GIT_TAG` to get a version matching your
|
||||
Tracy server, e.g. `-DFETCH_TRACY_GIT_TAG=v0.11.0` if it's `0.11.0`.
|
||||
|
||||
To actually use Tracy, you also have to enable it with Tracy's build options:
|
||||
```
|
||||
-DTRACY_ENABLE=1 -DTRACY_ONLY_LOCALHOST=1
|
||||
```
|
||||
|
||||
See Tracy's documentation for more build options.
|
||||
|
||||
### Using in C++
|
||||
|
||||
Start the Tracy server and Luanti. You should see Luanti in the menu.
|
||||
|
||||
To actually get useful traces, you have to annotate functions with `ZoneScoped`
|
||||
macros and recompile. Please refer to Tracy's official documentation.
|
||||
|
||||
### Using in Lua
|
||||
|
||||
Tracy also supports Lua.
|
||||
If built with Tracy, Luanti loads its API in the global `tracy` table.
|
||||
See Tracy's official documentation for more information.
|
||||
|
||||
Note: The whole Tracy Lua API is accessible to all mods. And we don't check if it
|
||||
is or becomes insecure. Run untrusted mods at your own risk.
|
Loading…
Add table
Add a link
Reference in a new issue