File tree Expand file tree Collapse file tree 9 files changed +112
-0
lines changed Expand file tree Collapse file tree 9 files changed +112
-0
lines changed Original file line number Diff line number Diff line change @@ -97,6 +97,8 @@ void TimeLimitListener::onPostExecute() {
9797 // TODO: run this just after child exit
9898 auto time = getTimeUsage ();
9999 outputBuilder_->setRealTimeMicroseconds (time->realTimeUs );
100+ outputBuilder_->setUserTimeMicroseconds (time->processTimeUs .uTimeUs );
101+ outputBuilder_->setSysTimeMicroseconds (time->processTimeUs .sTimeUs );
100102 verifyTimeUsage (move (time));
101103}
102104
Original file line number Diff line number Diff line change 1+ #include " HumanReadableOIOutputBuilder.h"
2+
3+ #include < sstream>
4+
5+ namespace s2j {
6+ namespace printer {
7+
8+ const std::string HumanReadableOIOutputBuilder::FORMAT_NAME = " human" ;
9+
10+ std::string HumanReadableOIOutputBuilder::dump () const {
11+ // This is inspired by the oiejq script
12+ std::stringstream ss;
13+ ss << std::endl << " -------------------------" << std::endl << " Result: " ;
14+ dumpStatus (ss);
15+ ss << std::endl
16+ << " Time used: " << static_cast <float >(milliSecondsElapsed_) / 1000
17+ << " s" << std::endl
18+ << " Memory used: " << memoryPeakKb_ / 1024 << " MiB" << std::endl;
19+ return ss.str ();
20+ }
21+
22+ } // namespace printer
23+ } // namespace s2j
Original file line number Diff line number Diff line change 1+ #pragma once
2+
3+ #include " OIModelOutputBuilder.h"
4+
5+ namespace s2j {
6+ namespace printer {
7+
8+ class HumanReadableOIOutputBuilder : public OIModelOutputBuilder {
9+ public:
10+ std::string dump () const override ;
11+
12+ const static std::string FORMAT_NAME;
13+ };
14+
15+ } // namespace printer
16+ } // namespace s2j
Original file line number Diff line number Diff line change @@ -24,6 +24,16 @@ OutputBuilder& OIModelOutputBuilder::setRealTimeMicroseconds(uint64_t time) {
2424 return *this ;
2525}
2626
27+ OutputBuilder& OIModelOutputBuilder::setUserTimeMicroseconds (uint64_t time) {
28+ userMilliSecondsElapsed_ = time / 1000 ;
29+ return *this ;
30+ }
31+
32+ OutputBuilder& OIModelOutputBuilder::setSysTimeMicroseconds (uint64_t time) {
33+ sysMilliSecondsElapsed_ = time / 1000 ;
34+ return *this ;
35+ }
36+
2737OutputBuilder& OIModelOutputBuilder::setMemoryPeak (uint64_t memoryPeakKb) {
2838 memoryPeakKb_ = memoryPeakKb;
2939 return *this ;
Original file line number Diff line number Diff line change @@ -13,6 +13,8 @@ class OIModelOutputBuilder : public OutputBuilder {
1313
1414 OutputBuilder& setCyclesUsed (uint64_t cyclesUsed) override ;
1515 OutputBuilder& setRealTimeMicroseconds (uint64_t time) override ;
16+ OutputBuilder& setUserTimeMicroseconds (uint64_t time) override ;
17+ OutputBuilder& setSysTimeMicroseconds (uint64_t time) override ;
1618 OutputBuilder& setMemoryPeak (uint64_t memoryPeakKb) override ;
1719 OutputBuilder& setExitStatus (uint32_t exitStatus) override ;
1820 OutputBuilder& setKillSignal (uint32_t killSignal) override ;
@@ -24,6 +26,8 @@ class OIModelOutputBuilder : public OutputBuilder {
2426
2527 uint64_t milliSecondsElapsed_;
2628 uint64_t realMilliSecondsElapsed_;
29+ uint64_t userMilliSecondsElapsed_;
30+ uint64_t sysMilliSecondsElapsed_;
2731 uint64_t memoryPeakKb_;
2832 uint64_t syscallsCounter_;
2933 uint32_t exitStatus_;
Original file line number Diff line number Diff line change @@ -36,6 +36,12 @@ class OutputBuilder {
3636 virtual OutputBuilder& setRealTimeMicroseconds (uint64_t time) {
3737 return *this ;
3838 }
39+ virtual OutputBuilder& setUserTimeMicroseconds (uint64_t time) {
40+ return *this ;
41+ }
42+ virtual OutputBuilder& setSysTimeMicroseconds (uint64_t time) {
43+ return *this ;
44+ }
3945 virtual OutputBuilder& setMemoryPeak (uint64_t memoryPeakKb) {
4046 return *this ;
4147 }
Original file line number Diff line number Diff line change 1+ #include " UserTimeOIOutputBuilder.h"
2+ #include " common/Exception.h"
3+
4+ #include < sstream>
5+
6+ namespace s2j {
7+ namespace printer {
8+
9+ const std::string UserTimeOIOutputBuilder::FORMAT_NAME = " oiuser" ;
10+
11+ std::string UserTimeOIOutputBuilder::dump () const {
12+ KillReason reason = killReason_;
13+ if (reason == KillReason::NONE) {
14+ if (killSignal_ > 0 || exitStatus_ > 0 ) {
15+ reason = KillReason::RE;
16+ }
17+ }
18+
19+ std::stringstream ss;
20+ ss << killReasonName (reason) << " " << exitStatus_ << " "
21+ << userMilliSecondsElapsed_ << " " << 0ULL << " " << memoryPeakKb_ << " "
22+ << syscallsCounter_ << std::endl;
23+ dumpStatus (ss);
24+ ss << std::endl;
25+ return ss.str ();
26+ }
27+
28+ } // namespace printer
29+ } // namespace s2j
Original file line number Diff line number Diff line change 1+ #pragma once
2+
3+ #include " OIModelOutputBuilder.h"
4+
5+ namespace s2j {
6+ namespace printer {
7+
8+ class UserTimeOIOutputBuilder : public OIModelOutputBuilder {
9+ public:
10+ std::string dump () const override ;
11+
12+ const static std::string FORMAT_NAME;
13+ };
14+
15+ } // namespace printer
16+ } // namespace s2j
Original file line number Diff line number Diff line change 44
55#include " common/Utils.h"
66#include " printer/AugmentedOIOutputBuilder.h"
7+ #include " printer/HumanReadableOIOutputBuilder.h"
78#include " printer/OITimeToolOutputBuilder.h"
89#include " printer/RealTimeOIOutputBuilder.h"
10+ #include " printer/UserTimeOIOutputBuilder.h"
911#include " seccomp/policy/DefaultPolicy.h"
1012#include " seccomp/policy/PermissivePolicy.h"
1113
@@ -91,8 +93,12 @@ const FactoryMap<s2j::printer::OutputBuilder>
9193 ApplicationSettings::OUTPUT_FORMATS (
9294 {{" oitt" ,
9395 std::make_shared<s2j::printer::OITimeToolOutputBuilder>},
96+ {" human" ,
97+ std::make_shared<s2j::printer::HumanReadableOIOutputBuilder>},
9498 {" oiaug" ,
9599 std::make_shared<s2j::printer::AugmentedOIOutputBuilder>},
100+ {" oiuser" ,
101+ std::make_shared<s2j::printer::UserTimeOIOutputBuilder>},
96102 {" oireal" ,
97103 std::make_shared<s2j::printer::RealTimeOIOutputBuilder>}});
98104const std::string ApplicationSettings::DEFAULT_OUTPUT_FORMAT = " oitt" ;
You can’t perform that action at this time.
0 commit comments