equal
deleted
inserted
replaced
68 } |
68 } |
69 |
69 |
70 const char* text() const { return _buf; } |
70 const char* text() const { return _buf; } |
71 |
71 |
72 const char* get_prefixed_line(const char* prefix) const { |
72 const char* get_prefixed_line(const char* prefix) const { |
73 const char* p = ::strstr(_buf, prefix); |
73 return ::strstr(_buf, prefix); |
74 if (p != NULL) { |
|
75 return p; |
|
76 } |
|
77 return NULL; |
|
78 } |
74 } |
79 |
75 |
80 value_t parsed_prefixed_value(const char* prefix, size_t scale = 1) const { |
76 value_t parsed_prefixed_value(const char* prefix, size_t scale = 1) const { |
81 value_t value = INVALID_VALUE; |
77 value_t value = INVALID_VALUE; |
82 const char* const s = get_prefixed_line(prefix); |
78 const char* const s = get_prefixed_line(prefix); |
83 if (s != NULL) { |
79 if (s != NULL) { |
84 errno = 0; |
80 errno = 0; |
85 const char* p = s + ::strlen(prefix); |
81 const char* p = s + ::strlen(prefix); |
86 value = (value_t)::strtoll(p, NULL, 10); |
82 char* endptr = NULL; |
87 if (value == 0 && errno != 0) { |
83 value = (value_t)::strtoll(p, &endptr, 10); |
|
84 if (p == endptr || errno != 0) { |
88 value = INVALID_VALUE; |
85 value = INVALID_VALUE; |
89 } else { |
86 } else { |
90 value *= scale; |
87 value *= scale; |
91 } |
88 } |
92 } |
89 } |
160 const uint64_t value_ms = (value * 1000) / _clk_tck; |
157 const uint64_t value_ms = (value * 1000) / _clk_tck; |
161 const uint64_t last_value_ms = (last_value * 1000) / _clk_tck; |
158 const uint64_t last_value_ms = (last_value * 1000) / _clk_tck; |
162 const uint64_t delta_ms = value_ms - last_value_ms; |
159 const uint64_t delta_ms = value_ms - last_value_ms; |
163 |
160 |
164 // Calculate the number of wallclock milliseconds for the delta interval... |
161 // Calculate the number of wallclock milliseconds for the delta interval... |
165 const int age_ms = last_value_age * 1000; |
162 const uint64_t age_ms = last_value_age * 1000; |
166 |
163 |
167 // times number of available cores. |
164 // times number of available cores. |
168 const int total_cpu_time_ms = age_ms * _num_cores; |
165 const uint64_t total_cpu_time_ms = age_ms * _num_cores; |
169 |
166 |
170 // Put the spent cpu time in reference to the total available cpu time. |
167 // Put the spent cpu time in reference to the total available cpu time. |
171 const float percentage = (100.0f * delta_ms) / total_cpu_time_ms; |
168 const double percentage = (100.0f * delta_ms) / total_cpu_time_ms; |
172 |
169 |
173 char buf[32]; |
170 char buf[32]; |
174 l = jio_snprintf(buf, sizeof(buf), "%.0f", percentage); |
171 l = jio_snprintf(buf, sizeof(buf), "%.0f", percentage); |
175 if (st != NULL) { |
172 if (st != NULL) { |
176 st->print_raw(buf); |
173 st->print_raw(buf); |