]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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); | |
11fdf7f2 | 28 | ceph_assert(r >= 0); |
7c673cae FG |
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 | } |