The implementation is a bit different between the platforms. For Linux it is based on proc stat. Simplified, most of the implementations are calculating the ticks for things that are either kernel related (irq, system) or user related (user ticks) divided by all the possible ticks (including idle). Either for the JVM process alone, or all processes. The three values exposed in JFR are either the used ticks for all processes (i.e. not idle) / all possible ticks [this is the machineTotal attribute in the JFR CPULoad event], the kernel/system related ticks for the JVM process(es) / all possible ticks [jvmSystem attribute in the JFR CPULoad event], and the user related ticks for the JVM process(es) / all possible ticks [jvmUser attribute in the JFR CPU Load event].
In the new visualization for JMC 7, we typically add up the user and system loads for the JVM process to a single value in the overview page, and show all three separately in the Processes page.