Analyzer lj-coro-c-on-cpu

Name

lj-coro-c-on-cpu - C-Land CPU Flame Graph for LuaJIT and Coro

This analyzer profiles CPU usage in C-land code execution within LuaJIT-based applications that utilize coroutine mechanisms, such as OpenResty and OpenResty Edge. It captures stack traces from native C functions, including those in the LuaJIT VM, PCRE library, and coroutine implementation libraries (libcco, ngx-http-coro). The analyzer generates flame graphs that visualize CPU time distribution across C-level function calls, helping identify performance bottlenecks in native code execution, coroutine context switching overhead, and regex processing costs.

Resource Category

CPU.

Application Type & Technical Stack

  • OpenResty

Parameters

The following parameters (or global variables) can be overridden by the user when running the analyzer or tool:

continuous_tracing

Type: bool

Description: enable continuous tracing mode

Default Value: 0

sample_time

Type: int

Description: total sampling time in seconds

Default Value: 15

Command Line Syntax

The analyzer can be invoked directly on the command-line via the orxray utility from the openresty-xray-cli software package.

Alternatively, the analyzer can also be invoked manually or automatically on the web console UI of OpenResty XRay (like on the Advanced web page).

# PID is the target process PID.
orxray analyzer run lj-coro-c-on-cpu -p PID

# trace a shell command directly
orxray analyzer run lj-coro-c-on-cpu -c SHELL_CMD

# PGID is the process group ID or any process's PID within the target process
# group.
orxray analyzer run lj-coro-c-on-cpu -p -PGID

# trace any processes started from the specified executable path.
orxray analyzer run lj-coro-c-on-cpu --exe /path/to/exe/file

Tracing Multiple Processes

Supported.

Output Formats

  • Flame Graphs

Author

The OpenResty Inc. Team.

Copyright (C) by OpenResty Inc. All rights reserved.