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() {
97
97
// TODO: run this just after child exit
98
98
auto time = getTimeUsage ();
99
99
outputBuilder_->setRealTimeMicroseconds (time->realTimeUs );
100
+ outputBuilder_->setUserTimeMicroseconds (time->processTimeUs .uTimeUs );
101
+ outputBuilder_->setSysTimeMicroseconds (time->processTimeUs .sTimeUs );
100
102
verifyTimeUsage (move (time));
101
103
}
102
104
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) {
24
24
return *this ;
25
25
}
26
26
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
+
27
37
OutputBuilder& OIModelOutputBuilder::setMemoryPeak (uint64_t memoryPeakKb) {
28
38
memoryPeakKb_ = memoryPeakKb;
29
39
return *this ;
Original file line number Diff line number Diff line change @@ -13,6 +13,8 @@ class OIModelOutputBuilder : public OutputBuilder {
13
13
14
14
OutputBuilder& setCyclesUsed (uint64_t cyclesUsed) override ;
15
15
OutputBuilder& setRealTimeMicroseconds (uint64_t time) override ;
16
+ OutputBuilder& setUserTimeMicroseconds (uint64_t time) override ;
17
+ OutputBuilder& setSysTimeMicroseconds (uint64_t time) override ;
16
18
OutputBuilder& setMemoryPeak (uint64_t memoryPeakKb) override ;
17
19
OutputBuilder& setExitStatus (uint32_t exitStatus) override ;
18
20
OutputBuilder& setKillSignal (uint32_t killSignal) override ;
@@ -24,6 +26,8 @@ class OIModelOutputBuilder : public OutputBuilder {
24
26
25
27
uint64_t milliSecondsElapsed_;
26
28
uint64_t realMilliSecondsElapsed_;
29
+ uint64_t userMilliSecondsElapsed_;
30
+ uint64_t sysMilliSecondsElapsed_;
27
31
uint64_t memoryPeakKb_;
28
32
uint64_t syscallsCounter_;
29
33
uint32_t exitStatus_;
Original file line number Diff line number Diff line change @@ -36,6 +36,12 @@ class OutputBuilder {
36
36
virtual OutputBuilder& setRealTimeMicroseconds (uint64_t time) {
37
37
return *this ;
38
38
}
39
+ virtual OutputBuilder& setUserTimeMicroseconds (uint64_t time) {
40
+ return *this ;
41
+ }
42
+ virtual OutputBuilder& setSysTimeMicroseconds (uint64_t time) {
43
+ return *this ;
44
+ }
39
45
virtual OutputBuilder& setMemoryPeak (uint64_t memoryPeakKb) {
40
46
return *this ;
41
47
}
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 4
4
5
5
#include " common/Utils.h"
6
6
#include " printer/AugmentedOIOutputBuilder.h"
7
+ #include " printer/HumanReadableOIOutputBuilder.h"
7
8
#include " printer/OITimeToolOutputBuilder.h"
8
9
#include " printer/RealTimeOIOutputBuilder.h"
10
+ #include " printer/UserTimeOIOutputBuilder.h"
9
11
#include " seccomp/policy/DefaultPolicy.h"
10
12
#include " seccomp/policy/PermissivePolicy.h"
11
13
@@ -91,8 +93,12 @@ const FactoryMap<s2j::printer::OutputBuilder>
91
93
ApplicationSettings::OUTPUT_FORMATS (
92
94
{{" oitt" ,
93
95
std::make_shared<s2j::printer::OITimeToolOutputBuilder>},
96
+ {" human" ,
97
+ std::make_shared<s2j::printer::HumanReadableOIOutputBuilder>},
94
98
{" oiaug" ,
95
99
std::make_shared<s2j::printer::AugmentedOIOutputBuilder>},
100
+ {" oiuser" ,
101
+ std::make_shared<s2j::printer::UserTimeOIOutputBuilder>},
96
102
{" oireal" ,
97
103
std::make_shared<s2j::printer::RealTimeOIOutputBuilder>}});
98
104
const std::string ApplicationSettings::DEFAULT_OUTPUT_FORMAT = " oitt" ;
You can’t perform that action at this time.
0 commit comments