diff --git a/src/runtime_src/core/common/query_requests.h b/src/runtime_src/core/common/query_requests.h index ded01163bc6..680e67ed26a 100644 --- a/src/runtime_src/core/common/query_requests.h +++ b/src/runtime_src/core/common/query_requests.h @@ -1817,6 +1817,8 @@ struct aie_partition_info : request uint64_t command_completions = 0; uint64_t migrations = 0; uint64_t preemptions = 0; + uint64_t preemption_frame_event = 0; + uint64_t preemption_layer_event = 0; uint64_t errors = 0; uint64_t pasid = 0; qos_info qos {}; diff --git a/src/runtime_src/core/tools/common/reports/ReportAiePartitions.cpp b/src/runtime_src/core/tools/common/reports/ReportAiePartitions.cpp index 41378105353..5925eb4fff7 100644 --- a/src/runtime_src/core/tools/common/reports/ReportAiePartitions.cpp +++ b/src/runtime_src/core/tools/common/reports/ReportAiePartitions.cpp @@ -39,6 +39,8 @@ populate_aie_partition(const xrt_core::device* device) pt_entry.put("command_submissions", entry.command_submissions); pt_entry.put("command_completions", entry.command_completions); pt_entry.put("migrations", entry.migrations); + pt_entry.put("preemption_frame_event", entry.preemption_frame_event); + pt_entry.put("preemption_layer_event", entry.preemption_layer_event); pt_entry.put("errors", entry.errors); pt_entry.put("suspensions", entry.suspensions); pt_entry.put("memory_usage", entry.memory_usage == 0 ? "N/A" : xrt_core::utils::unit_convert(entry.memory_usage)); @@ -127,11 +129,11 @@ writeReport(const xrt_core::device* /*_pDevice*/, _output << " HW Contexts:\n"; const std::vector headers = { - " |PID |Ctx ID |Submissions |Migrations |Err |Priority |", - " |Process Name |Status |Completions |Suspensions | |GOPS |", - " |Memory Usage |Instr BO | | | |FPS |", - " | | | | | |Latency |", - " |====================|===========|============|============|=====|=========|" + " |PID |Ctx ID |Submissions |Migrations |Frame Evts |Err |Priority |", + " |Process Name |Status |Completions |Suspensions |Layer Evts | |GOPS |", + " |Memory Usage |Instr BO | | | | |FPS |", + " | | | | | | |Latency |", + " |====================|===========|============|============|============|=====|=========|" }; for (const auto& header : headers) { @@ -143,30 +145,32 @@ writeReport(const xrt_core::device* /*_pDevice*/, const auto& hw_context = pt_hw_context.second; std::vector row_data; - row_data.emplace_back(boost::format(" |%-20s|%-11s|%-12s|%-12s|%-5s|%-9s|") + row_data.emplace_back(boost::format(" |%-20s|%-11s|%-12s|%-12s|%-12s|%-5s|%-9s|") % hw_context.get("pid") % hw_context.get("context_id") % hw_context.get("command_submissions") % hw_context.get("migrations") + % hw_context.get("preemption_frame_event") % hw_context.get("errors") % hw_context.get("priority")); - row_data.emplace_back(boost::format(" |%-20s|%-11s|%-12s|%-12s| |%-9s|") + row_data.emplace_back(boost::format(" |%-20s|%-11s|%-12s|%-12s|%-12s| |%-9s|") % hw_context.get("process_name") % hw_context.get("status") % hw_context.get("command_completions") % hw_context.get("suspensions") + % hw_context.get("preemption_layer_event") % hw_context.get("gops")); - row_data.emplace_back(boost::format(" |%-20s|%-11s| | | |%-9s|") + row_data.emplace_back(boost::format(" |%-20s|%-11s| | | | |%-9s|") % hw_context.get("memory_usage") % hw_context.get("instr_bo_mem") % hw_context.get("fps")); - row_data.emplace_back(boost::format(" | | | | | |%-9s|") + row_data.emplace_back(boost::format(" | | | | | | |%-9s|") % hw_context.get("latency")); - row_data.emplace_back(boost::format(" |--------------------|-----------|------------|------------|-----|---------|")); + row_data.emplace_back(boost::format(" |--------------------|-----------|------------|------------|------------|-----|---------|")); for (const auto& row : row_data) { _output << row << "\n";