aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2020-10-14 18:33:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-10-14 18:33:54 +0000
commit64665f0233bcdbbb9c9dc5b0f441a7c1fa11137c (patch)
tree935e60c6698e64eed7992570e8340a116dbef282
parenta42ef0b5df875dad2707937ef77464ccbe1ea069 (diff)
parentd4937ad8940180c83736288ed890928605d8812f (diff)
downloadninja-64665f0233bcdbbb9c9dc5b0f441a7c1fa11137c.tar.gz
Merge changes Ie0345988,I4ceb53e3
* changes: Add more stats to EdgeFinished proto message Fix syntax error in frontend/native.py
-rw-r--r--frontend/frontend.pbbin1057 -> 1369 bytes
-rwxr-xr-xfrontend/native.py2
-rw-r--r--src/frontend.pb.h105
-rw-r--r--src/frontend.proto14
-rw-r--r--src/status.cc8
5 files changed, 128 insertions, 1 deletions
diff --git a/frontend/frontend.pb b/frontend/frontend.pb
index 718f173..f35d673 100644
--- a/frontend/frontend.pb
+++ b/frontend/frontend.pb
Binary files differ
diff --git a/frontend/native.py b/frontend/native.py
index 4862268..b77ed10 100755
--- a/frontend/native.py
+++ b/frontend/native.py
@@ -128,7 +128,7 @@ class NinjaNativeFrontend:
prefix = 'ninja: warning: '
elif msg.message.level == 2:
prefix = 'ninja: error: '
- else
+ else:
prefix = ''
self.printer.print_line(prefix + msg.message.message, LinePrinter.LINE_FULL)
diff --git a/src/frontend.pb.h b/src/frontend.pb.h
index 53d2431..5b3ac26 100644
--- a/src/frontend.pb.h
+++ b/src/frontend.pb.h
@@ -275,6 +275,20 @@ struct Status {
bool has_user_time_;
uint32_t system_time_;
bool has_system_time_;
+ uint64_t max_rss_kb_;
+ bool has_max_rss_kb_;
+ uint64_t minor_page_faults_;
+ bool has_minor_page_faults_;
+ uint64_t major_page_faults_;
+ bool has_major_page_faults_;
+ uint64_t io_input_kb_;
+ bool has_io_input_kb_;
+ uint64_t io_output_kb_;
+ bool has_io_output_kb_;
+ uint64_t voluntary_context_switches_;
+ bool has_voluntary_context_switches_;
+ uint64_t involuntary_context_switches_;
+ bool has_involuntary_context_switches_;
EdgeFinished() {
has_id_ = false;
@@ -288,6 +302,20 @@ struct Status {
user_time_ = static_cast< uint32_t >(0);
has_system_time_ = false;
system_time_ = static_cast< uint32_t >(0);
+ has_max_rss_kb_ = false;
+ max_rss_kb_ = static_cast< uint64_t >(0);
+ has_minor_page_faults_ = false;
+ minor_page_faults_ = static_cast< uint64_t >(0);
+ has_major_page_faults_ = false;
+ major_page_faults_ = static_cast< uint64_t >(0);
+ has_io_input_kb_ = false;
+ io_input_kb_ = static_cast< uint64_t >(0);
+ has_io_output_kb_ = false;
+ io_output_kb_ = static_cast< uint64_t >(0);
+ has_voluntary_context_switches_ = false;
+ voluntary_context_switches_ = static_cast< uint64_t >(0);
+ has_involuntary_context_switches_ = false;
+ involuntary_context_switches_ = static_cast< uint64_t >(0);
}
EdgeFinished(const EdgeFinished&);
@@ -300,6 +328,13 @@ struct Status {
WriteString(output__, 4, output_);
WriteVarint32(output__, 5, user_time_);
WriteVarint32(output__, 6, system_time_);
+ WriteVarint64(output__, 7, max_rss_kb_);
+ WriteVarint64(output__, 8, minor_page_faults_);
+ WriteVarint64(output__, 9, major_page_faults_);
+ WriteVarint64(output__, 10, io_input_kb_);
+ WriteVarint64(output__, 11, io_output_kb_);
+ WriteVarint64(output__, 12, voluntary_context_switches_);
+ WriteVarint64(output__, 13, involuntary_context_switches_);
}
size_t ByteSizeLong() const {
@@ -310,6 +345,13 @@ struct Status {
size += StringSize(output_) + 1;
size += VarintSize32(user_time_) + 1;
size += VarintSize32(system_time_) + 1;
+ size += VarintSize64(max_rss_kb_) + 1;
+ size += VarintSize64(minor_page_faults_) + 1;
+ size += VarintSize64(major_page_faults_) + 1;
+ size += VarintSize64(io_input_kb_) + 1;
+ size += VarintSize64(io_output_kb_) + 1;
+ size += VarintSize64(voluntary_context_switches_) + 1;
+ size += VarintSize64(involuntary_context_switches_) + 1;
return size;
}
@@ -320,6 +362,13 @@ struct Status {
output_.clear();
user_time_ = static_cast< uint32_t >(0);
system_time_ = static_cast< uint32_t >(0);
+ max_rss_kb_ = static_cast< uint64_t >(0);
+ minor_page_faults_ = static_cast< uint64_t >(0);
+ major_page_faults_ = static_cast< uint64_t >(0);
+ io_input_kb_ = static_cast< uint64_t >(0);
+ io_output_kb_ = static_cast< uint64_t >(0);
+ voluntary_context_switches_ = static_cast< uint64_t >(0);
+ involuntary_context_switches_ = static_cast< uint64_t >(0);
}
uint32_t* mutable_id() {
@@ -370,6 +419,62 @@ struct Status {
has_system_time_ = true;
system_time_ = value;
}
+ uint64_t* mutable_max_rss_kb() {
+ has_max_rss_kb_ = true;
+ return &max_rss_kb_;
+ }
+ void set_max_rss_kb(const uint64_t& value) {
+ has_max_rss_kb_ = true;
+ max_rss_kb_ = value;
+ }
+ uint64_t* mutable_minor_page_faults() {
+ has_minor_page_faults_ = true;
+ return &minor_page_faults_;
+ }
+ void set_minor_page_faults(const uint64_t& value) {
+ has_minor_page_faults_ = true;
+ minor_page_faults_ = value;
+ }
+ uint64_t* mutable_major_page_faults() {
+ has_major_page_faults_ = true;
+ return &major_page_faults_;
+ }
+ void set_major_page_faults(const uint64_t& value) {
+ has_major_page_faults_ = true;
+ major_page_faults_ = value;
+ }
+ uint64_t* mutable_io_input_kb() {
+ has_io_input_kb_ = true;
+ return &io_input_kb_;
+ }
+ void set_io_input_kb(const uint64_t& value) {
+ has_io_input_kb_ = true;
+ io_input_kb_ = value;
+ }
+ uint64_t* mutable_io_output_kb() {
+ has_io_output_kb_ = true;
+ return &io_output_kb_;
+ }
+ void set_io_output_kb(const uint64_t& value) {
+ has_io_output_kb_ = true;
+ io_output_kb_ = value;
+ }
+ uint64_t* mutable_voluntary_context_switches() {
+ has_voluntary_context_switches_ = true;
+ return &voluntary_context_switches_;
+ }
+ void set_voluntary_context_switches(const uint64_t& value) {
+ has_voluntary_context_switches_ = true;
+ voluntary_context_switches_ = value;
+ }
+ uint64_t* mutable_involuntary_context_switches() {
+ has_involuntary_context_switches_ = true;
+ return &involuntary_context_switches_;
+ }
+ void set_involuntary_context_switches(const uint64_t& value) {
+ has_involuntary_context_switches_ = true;
+ involuntary_context_switches_ = value;
+ }
};
struct Message {
diff --git a/src/frontend.proto b/src/frontend.proto
index 57423d8..8f03522 100644
--- a/src/frontend.proto
+++ b/src/frontend.proto
@@ -64,6 +64,20 @@ message Status {
optional uint32 user_time = 5;
// Number of milliseconds spent executing in kernel mode
optional uint32 system_time = 6;
+ // Max resident set size in kB
+ optional uint64 max_rss_kb = 7;
+ // Minor page faults
+ optional uint64 minor_page_faults = 8;
+ // Major page faults
+ optional uint64 major_page_faults = 9;
+ // IO input in kB
+ optional uint64 io_input_kb = 10;
+ // IO output in kB
+ optional uint64 io_output_kb = 11;
+ // Voluntary context switches
+ optional uint64 voluntary_context_switches = 12;
+ // Involuntary context switches
+ optional uint64 involuntary_context_switches = 13;
}
message Message {
diff --git a/src/status.cc b/src/status.cc
index c5a37e8..0b05ea0 100644
--- a/src/status.cc
+++ b/src/status.cc
@@ -363,6 +363,14 @@ void StatusSerializer::BuildEdgeFinished(Edge* edge, int64_t end_time_millis,
edge_finished->set_output(result->output);
edge_finished->set_user_time(timeval_to_ms(result->rusage.ru_utime));
edge_finished->set_system_time(timeval_to_ms(result->rusage.ru_stime));
+ edge_finished->set_max_rss_kb(result->rusage.ru_maxrss);
+ edge_finished->set_minor_page_faults(result->rusage.ru_minflt);
+ edge_finished->set_major_page_faults(result->rusage.ru_majflt);
+ // ru_inblock and ru_oublock are measured in blocks of 512 bytes.
+ edge_finished->set_io_input_kb(result->rusage.ru_inblock / 2);
+ edge_finished->set_io_output_kb(result->rusage.ru_oublock / 2);
+ edge_finished->set_voluntary_context_switches(result->rusage.ru_nvcsw);
+ edge_finished->set_involuntary_context_switches(result->rusage.ru_nivcsw);
Send();
}