CLIENT_METRIC_TYPE_OPENED_INODES,
CLIENT_METRIC_TYPE_READ_IO_SIZES,
CLIENT_METRIC_TYPE_WRITE_IO_SIZES,
+ CLIENT_METRIC_TYPE_AVG_READ_LATENCY,
+ CLIENT_METRIC_TYPE_STDEV_READ_LATENCY,
+ CLIENT_METRIC_TYPE_AVG_WRITE_LATENCY,
+ CLIENT_METRIC_TYPE_STDEV_WRITE_LATENCY,
+ CLIENT_METRIC_TYPE_AVG_METADATA_LATENCY,
+ CLIENT_METRIC_TYPE_STDEV_METADATA_LATENCY,
};
inline std::ostream &operator<<(std::ostream &os, const ClientMetricType &type) {
switch(type) {
case ClientMetricType::CLIENT_METRIC_TYPE_WRITE_IO_SIZES:
os << "WRITE_IO_SIZES";
break;
+ case ClientMetricType::CLIENT_METRIC_TYPE_AVG_READ_LATENCY:
+ os << "AVG_READ_LATENCY";
+ break;
+ case ClientMetricType::CLIENT_METRIC_TYPE_STDEV_READ_LATENCY:
+ os << "STDEV_READ_LATENCY";
+ break;
+ case ClientMetricType::CLIENT_METRIC_TYPE_AVG_WRITE_LATENCY:
+ os << "AVG_WRITE_LATENCY";
+ break;
+ case ClientMetricType::CLIENT_METRIC_TYPE_STDEV_WRITE_LATENCY:
+ os << "STDEV_WRITE_LATENCY";
+ break;
+ case ClientMetricType::CLIENT_METRIC_TYPE_AVG_METADATA_LATENCY:
+ os << "AVG_METADATA_LATENCY";
+ break;
+ case ClientMetricType::CLIENT_METRIC_TYPE_STDEV_METADATA_LATENCY:
+ os << "STDEV_METADATA_LATENCY";
+ break;
default:
os << "(UNKNOWN:" << static_cast<std::underlying_type<ClientMetricType>::type>(type) << ")";
break;
struct ReadLatencyPayload : public ClientMetricPayloadBase {
utime_t lat;
+ utime_t mean;
+ uint64_t sq_sum; // sum of squares
+ uint64_t count; // IO count
ReadLatencyPayload()
: ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_READ_LATENCY) { }
- ReadLatencyPayload(utime_t lat)
- : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_READ_LATENCY), lat(lat) {
+ ReadLatencyPayload(utime_t lat, utime_t mean, uint64_t sq_sum, uint64_t count)
+ : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_READ_LATENCY),
+ lat(lat),
+ mean(mean),
+ sq_sum(sq_sum),
+ count(count) {
}
void encode(bufferlist &bl) const {
using ceph::encode;
- ENCODE_START(1, 1, bl);
+ ENCODE_START(2, 1, bl);
encode(lat, bl);
+ encode(mean, bl);
+ encode(sq_sum, bl);
+ encode(count, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::const_iterator &iter) {
using ceph::decode;
- DECODE_START(1, iter);
+ DECODE_START(2, iter);
decode(lat, iter);
+ if (struct_v >= 2) {
+ decode(mean, iter);
+ decode(sq_sum, iter);
+ decode(count, iter);
+ }
DECODE_FINISH(iter);
}
void dump(Formatter *f) const {
f->dump_int("latency", lat);
+ f->dump_int("avg_latency", mean);
+ f->dump_unsigned("sq_sum", sq_sum);
+ f->dump_unsigned("count", count);
}
void print(std::ostream *out) const {
- *out << "latency: " << lat;
+ *out << "latency: " << lat << ", avg_latency: " << mean
+ << ", sq_sum: " << sq_sum << ", count=" << count;
}
};
struct WriteLatencyPayload : public ClientMetricPayloadBase {
utime_t lat;
+ utime_t mean;
+ uint64_t sq_sum; // sum of squares
+ uint64_t count; // IO count
WriteLatencyPayload()
: ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_WRITE_LATENCY) { }
- WriteLatencyPayload(utime_t lat)
- : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_WRITE_LATENCY), lat(lat) {
+ WriteLatencyPayload(utime_t lat, utime_t mean, uint64_t sq_sum, uint64_t count)
+ : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_WRITE_LATENCY),
+ lat(lat),
+ mean(mean),
+ sq_sum(sq_sum),
+ count(count){
}
void encode(bufferlist &bl) const {
using ceph::encode;
- ENCODE_START(1, 1, bl);
+ ENCODE_START(2, 1, bl);
encode(lat, bl);
+ encode(mean, bl);
+ encode(sq_sum, bl);
+ encode(count, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::const_iterator &iter) {
using ceph::decode;
- DECODE_START(1, iter);
+ DECODE_START(2, iter);
decode(lat, iter);
+ if (struct_v >= 2) {
+ decode(mean, iter);
+ decode(sq_sum, iter);
+ decode(count, iter);
+ }
DECODE_FINISH(iter);
}
void dump(Formatter *f) const {
f->dump_int("latency", lat);
+ f->dump_int("avg_latency", mean);
+ f->dump_unsigned("sq_sum", sq_sum);
+ f->dump_unsigned("count", count);
}
void print(std::ostream *out) const {
- *out << "latency: " << lat;
+ *out << "latency: " << lat << ", avg_latency: " << mean
+ << ", sq_sum: " << sq_sum << ", count=" << count;
}
};
struct MetadataLatencyPayload : public ClientMetricPayloadBase {
utime_t lat;
+ utime_t mean;
+ uint64_t sq_sum; // sum of squares
+ uint64_t count; // IO count
MetadataLatencyPayload()
- : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY) { }
- MetadataLatencyPayload(utime_t lat)
- : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY), lat(lat) {
+ : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY) { }
+ MetadataLatencyPayload(utime_t lat, utime_t mean, uint64_t sq_sum, uint64_t count)
+ : ClientMetricPayloadBase(ClientMetricType::CLIENT_METRIC_TYPE_METADATA_LATENCY),
+ lat(lat),
+ mean(mean),
+ sq_sum(sq_sum),
+ count(count) {
}
void encode(bufferlist &bl) const {
using ceph::encode;
- ENCODE_START(1, 1, bl);
+ ENCODE_START(2, 1, bl);
encode(lat, bl);
+ encode(mean, bl);
+ encode(sq_sum, bl);
+ encode(count, bl);
ENCODE_FINISH(bl);
}
void decode(bufferlist::const_iterator &iter) {
using ceph::decode;
- DECODE_START(1, iter);
+ DECODE_START(2, iter);
decode(lat, iter);
+ if (struct_v >= 2) {
+ decode(mean, iter);
+ decode(sq_sum, iter);
+ decode(count, iter);
+ }
DECODE_FINISH(iter);
}
void dump(Formatter *f) const {
f->dump_int("latency", lat);
+ f->dump_int("avg_latency", mean);
+ f->dump_unsigned("sq_sum", sq_sum);
+ f->dump_unsigned("count", count);
}
void print(std::ostream *out) const {
- *out << "latency: " << lat;
+ *out << "latency: " << lat << ", avg_latency: " << mean
+ << ", sq_sum: " << sq_sum << ", count=" << count;
}
};