From 6ea8a0f7b685469637f0118a692090ebc9d10a5e Mon Sep 17 00:00:00 2001 From: Petr Stefan Date: Thu, 29 Mar 2018 14:50:01 +0200 Subject: [PATCH] Add new isolate meta values --- src/config/task_results.h | 12 +++++++++++- src/job/job_evaluator.cpp | 2 ++ src/sandbox/isolate_sandbox.cpp | 4 ++++ src/tasks/external_task.cpp | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/config/task_results.h b/src/config/task_results.h index cc5f2bbf..7bc27a9d 100644 --- a/src/config/task_results.h +++ b/src/config/task_results.h @@ -65,13 +65,23 @@ struct sandbox_results { * Default: "" */ std::string message; + /** + * Number of voluntary context switches. + * Default: 0 + */ + size_t csw_voluntary; + /** + * Number of forced context switches. + * Default: 0 + */ + size_t csw_forced; /** * Constructor with default values initialization. */ sandbox_results() : exitcode(0), time(0), wall_time(0), memory(0), max_rss(0), status(isolate_status::OK), exitsig(0), - killed(false), message() + killed(false), message(), csw_voluntary(0), csw_forced(0) { } diff --git a/src/job/job_evaluator.cpp b/src/job/job_evaluator.cpp index fe50bc3f..e10bda77 100644 --- a/src/job/job_evaluator.cpp +++ b/src/job/job_evaluator.cpp @@ -308,6 +308,8 @@ void job_evaluator::push_result() subnode["exitsig"] = sandbox->exitsig; subnode["killed"] = sandbox->killed; subnode["message"] = sandbox->message; + subnode["csw-voluntary"] = sandbox->csw_voluntary; + subnode["csw-forced"] = sandbox->csw_forced; node["sandbox_results"] = subnode; } diff --git a/src/sandbox/isolate_sandbox.cpp b/src/sandbox/isolate_sandbox.cpp index 6f355274..0f5e7d37 100644 --- a/src/sandbox/isolate_sandbox.cpp +++ b/src/sandbox/isolate_sandbox.cpp @@ -456,6 +456,10 @@ sandbox_results isolate_sandbox::process_meta_file() results.memory = std::stoul(second); } else if (first == "max-rss") { results.max_rss = std::stoul(second); + } else if (first == "csw-voluntary") { + results.csw_voluntary = std::stoul(second); + } else if (first == "csw-forced") { + results.csw_forced = std::stoul(second); } } return results; diff --git a/src/tasks/external_task.cpp b/src/tasks/external_task.cpp index bd58a715..b9a58ae4 100644 --- a/src/tasks/external_task.cpp +++ b/src/tasks/external_task.cpp @@ -79,7 +79,7 @@ std::shared_ptr external_task::run() // check if binary is executable and set it otherwise make_binary_executable(task_meta_->binary); - std::shared_ptr res(new task_results()); + auto res = std::make_shared(); res->sandbox_status = std::unique_ptr(new sandbox_results(sandbox_->run(task_meta_->binary, task_meta_->cmd_args)));