X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Ftest_rewrite_latency.cc;fp=src%2Fceph%2Fsrc%2Ftest%2Ftest_rewrite_latency.cc;h=fd76e8d147bd87eaa3eabf0d7f25ecc89ccabb26;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/test/test_rewrite_latency.cc b/src/ceph/src/test/test_rewrite_latency.cc new file mode 100644 index 0000000..fd76e8d --- /dev/null +++ b/src/ceph/src/test/test_rewrite_latency.cc @@ -0,0 +1,47 @@ + +#include +#include +#include + +#include "include/utime.h" +#include "common/Clock.h" +#include "common/errno.h" + +using namespace std; + +int main(int argc, const char **argv) +{ + const char *fn = argv[1]; + multimap latency; + unsigned max = 10; + + int fd = ::open(fn, O_CREAT|O_RDWR, 0644); + if (fd < 1) { + int err = errno; + cerr << "failed to open " << fn << " with " << cpp_strerror(err) << std::endl; + return -1; + } + + while (true) { + utime_t now = ceph_clock_now(); + int r = ::pwrite(fd, fn, strlen(fn), 0); + assert(r >= 0); + utime_t lat = ceph_clock_now(); + lat -= now; + utime_t oldmin; + if (!latency.empty()) + oldmin = latency.begin()->first; + latency.insert(make_pair(lat, now)); + utime_t newmin = latency.begin()->first; + while (latency.size() > max) + latency.erase(latency.begin()); + if (oldmin == newmin) { + cout << "latency\tat" << std::endl; + for (multimap::reverse_iterator p = latency.rbegin(); + p != latency.rend(); + ++p) { + cout << p->first << "\t" << p->second << std::endl; + } + } + } +}