perf trace progress but things still do not look right
This commit is contained in:
parent
3b352f6a3a
commit
c39eb0c08d
|
@ -1,3 +1,9 @@
|
||||||
|
/**
|
||||||
|
* @file perf_trace.cpp
|
||||||
|
*
|
||||||
|
* See JsonOutput.java in rusEfi console
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "efifeatures.h"
|
#include "efifeatures.h"
|
||||||
#include "perf_trace.h"
|
#include "perf_trace.h"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
// Defines different events we want to trace. These can be an interval (begin -> end), or an
|
// Defines different events we want to trace. These can be an interval (begin -> end), or an
|
||||||
// instant. Instants can be global, or specific to one thread. You probably don't want to use
|
// instant. Instants can be global, or specific to one thread. You probably don't want to use
|
||||||
// each element in PE more than once, as they should each indicate that a specific thing began,
|
// each element in PE more than once, as they should each indicate that a specific thing began,
|
||||||
// ended, or occured.
|
// ended, or occurred.
|
||||||
enum class PE : uint8_t {
|
enum class PE : uint8_t {
|
||||||
// The tag below is consumed by PerfTraceTool.java
|
// The tag below is consumed by PerfTraceTool.java
|
||||||
// enum_start_tag
|
// enum_start_tag
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.rusefi;
|
||||||
|
|
||||||
import com.rusefi.tracing.Entry;
|
import com.rusefi.tracing.Entry;
|
||||||
import com.rusefi.tracing.EnumNames;
|
import com.rusefi.tracing.EnumNames;
|
||||||
|
import com.rusefi.tracing.JsonOutput;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -12,6 +13,10 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* This allows developers to only edit C/C++ header yet see proper names in chrome://tracing JSON file
|
* This allows developers to only edit C/C++ header yet see proper names in chrome://tracing JSON file
|
||||||
*
|
*
|
||||||
|
* This is not used in runtime while profiling actual firmward
|
||||||
|
* @see JsonOutput
|
||||||
|
* @see EnumNames
|
||||||
|
*
|
||||||
* @see EnumNames
|
* @see EnumNames
|
||||||
* @see Entry
|
* @see Entry
|
||||||
*
|
*
|
||||||
|
|
|
@ -7,6 +7,8 @@ import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.rusefi.tracing.EnumNames.TypeNames;
|
||||||
|
|
||||||
public class Entry {
|
public class Entry {
|
||||||
private final String name;
|
private final String name;
|
||||||
private final Phase phase;
|
private final Phase phase;
|
||||||
|
@ -78,7 +80,16 @@ public class Entry {
|
||||||
|
|
||||||
double timestampSeconds = timestampNt / 1000000.0;
|
double timestampSeconds = timestampNt / 1000000.0;
|
||||||
minValue = Math.min(minValue, timestampNt);
|
minValue = Math.min(minValue, timestampNt);
|
||||||
Entry e = new Entry("t" + type, Phase.decode(phase), timestampSeconds);
|
String name;
|
||||||
|
if (type == 1) {
|
||||||
|
name = "ISR: " + thread;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
name = TypeNames[type];
|
||||||
|
}
|
||||||
|
|
||||||
|
Entry e = new Entry(name, Phase.decode(phase), timestampSeconds);
|
||||||
result.add(e);
|
result.add(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,35 @@ import java.util.List;
|
||||||
* This class helps to write JSON files readable by chrome://tracing/
|
* This class helps to write JSON files readable by chrome://tracing/
|
||||||
* <p>
|
* <p>
|
||||||
* See https://github.com/catapult-project/catapult/blob/master/tracing/README.md
|
* See https://github.com/catapult-project/catapult/blob/master/tracing/README.md
|
||||||
|
* @see PerfTraceTool
|
||||||
*/
|
*/
|
||||||
public class JsonOutput {
|
public class JsonOutput {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* those are special entries that change display settings
|
||||||
|
* those set thread names and sort index based on those thread IDs
|
||||||
|
* (those thread IDs are interrupt numbers, and the name is the name of the interrupt handler)
|
||||||
|
*/
|
||||||
|
private static final String FORMATTING_SETTINGS
|
||||||
|
= "{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":18,\"pid\":0,\"args\":{\"name\":\"ADC\"}}," +
|
||||||
|
"{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":29,\"pid\":0,\"args\":{\"name\":\"TIM3\"}}," +
|
||||||
|
"{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":30,\"pid\":0,\"args\":{\"name\":\"TIM4\"}}," +
|
||||||
|
"{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":44,\"pid\":0,\"args\":{\"name\":\"TIM8/13\"}}," +
|
||||||
|
"{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":50,\"pid\":0,\"args\":{\"name\":\"TIM5\"}}," +
|
||||||
|
"{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":58,\"pid\":0,\"args\":{\"name\":\"DMA2s2\"}}," +
|
||||||
|
"{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":60,\"pid\":0,\"args\":{\"name\":\"DMA2s4\"}}," +
|
||||||
|
"{\"name\":\"thread_name\",\"ph\":\"M\",\"tid\":67,\"pid\":0,\"args\":{\"name\":\"USB\"}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":18,\"pid\":0,\"args\":{\"sort_index\":4}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":29,\"pid\":0,\"args\":{\"sort_index\":2}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":30,\"pid\":0,\"args\":{\"sort_index\":5}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":44,\"pid\":0,\"args\":{\"sort_index\":7}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":50,\"pid\":0,\"args\":{\"sort_index\":3}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":58,\"pid\":0,\"args\":{\"sort_index\":6}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":60,\"pid\":0,\"args\":{\"sort_index\":8}}," +
|
||||||
|
"{\"name\":\"thread_sort_index\",\"ph\":\"M\",\"tid\":67,\"pid\":0,\"args\":{\"sort_index\":9}}"
|
||||||
|
;
|
||||||
|
private static final String EOL = "\r\n";
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
List<Entry> testEntries = Arrays.asList(
|
List<Entry> testEntries = Arrays.asList(
|
||||||
new Entry("hello", Phase.B, 0.1),
|
new Entry("hello", Phase.B, 0.1),
|
||||||
|
@ -25,16 +51,13 @@ public class JsonOutput {
|
||||||
public static void writeToStream(List<Entry> testEntries, OutputStream outputStream) throws IOException {
|
public static void writeToStream(List<Entry> testEntries, OutputStream outputStream) throws IOException {
|
||||||
|
|
||||||
Writer out = new OutputStreamWriter(outputStream);
|
Writer out = new OutputStreamWriter(outputStream);
|
||||||
out.write("{\"traceEvents\": [\n");
|
out.write("{\"traceEvents\": [" + EOL);
|
||||||
|
|
||||||
|
out.write(FORMATTING_SETTINGS + EOL);
|
||||||
|
|
||||||
boolean isFirst = true;
|
|
||||||
for (Entry e : testEntries) {
|
for (Entry e : testEntries) {
|
||||||
if (isFirst) {
|
|
||||||
isFirst = false;
|
|
||||||
} else {
|
|
||||||
out.write(",");
|
out.write(",");
|
||||||
}
|
out.write(e.toString() + EOL);
|
||||||
out.write(e.toString() + "\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out.write("]}");
|
out.write("]}");
|
||||||
|
|
|
@ -49,7 +49,7 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
|
||||||
* @see EngineSnifferPanel
|
* @see EngineSnifferPanel
|
||||||
*/
|
*/
|
||||||
public class Launcher {
|
public class Launcher {
|
||||||
public static final int CONSOLE_VERSION = 20191129;
|
public static final int CONSOLE_VERSION = 20191201;
|
||||||
public static final String INI_FILE_PATH = System.getProperty("ini_file_path", "..");
|
public static final String INI_FILE_PATH = System.getProperty("ini_file_path", "..");
|
||||||
public static final String INPUT_FILES_PATH = System.getProperty("input_files_path", "..");
|
public static final String INPUT_FILES_PATH = System.getProperty("input_files_path", "..");
|
||||||
public static final String TOOLS_PATH = System.getProperty("tools_path", ".");
|
public static final String TOOLS_PATH = System.getProperty("tools_path", ".");
|
||||||
|
|
Loading…
Reference in New Issue