]> git.proxmox.com Git - ceph.git/blob - ceph/src/test/test_rewrite_latency.cc
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / test / test_rewrite_latency.cc
1
2 #include <unistd.h>
3 #include <map>
4 #include <errno.h>
5
6 #include "include/utime.h"
7 #include "common/Clock.h"
8 #include "common/errno.h"
9
10 using namespace std;
11
12 int main(int argc, const char **argv)
13 {
14 const char *fn = argv[1];
15 multimap<utime_t, utime_t> latency;
16 unsigned max = 10;
17
18 int fd = ::open(fn, O_CREAT|O_RDWR, 0644);
19 if (fd < 1) {
20 int err = errno;
21 cerr << "failed to open " << fn << " with " << cpp_strerror(err) << std::endl;
22 return -1;
23 }
24
25 while (true) {
26 utime_t now = ceph_clock_now();
27 int r = ::pwrite(fd, fn, strlen(fn), 0);
28 ceph_assert(r >= 0);
29 utime_t lat = ceph_clock_now();
30 lat -= now;
31 utime_t oldmin;
32 if (!latency.empty())
33 oldmin = latency.begin()->first;
34 latency.insert(make_pair(lat, now));
35 utime_t newmin = latency.begin()->first;
36 while (latency.size() > max)
37 latency.erase(latency.begin());
38 if (oldmin == newmin) {
39 cout << "latency\tat" << std::endl;
40 for (multimap<utime_t,utime_t>::reverse_iterator p = latency.rbegin();
41 p != latency.rend();
42 ++p) {
43 cout << p->first << "\t" << p->second << std::endl;
44 }
45 }
46 }
47 }