1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "include/types.h"
5 #include "common/Thread.h"
6 #include "common/debug.h"
7 #include "common/Clock.h"
8 #include "common/config.h"
9 #include "common/ceph_argparse.h"
10 #include "global/global_init.h"
12 #define dout_context g_ceph_context
16 struct T
: public Thread
{
19 map
<int,string
> mymap
;
20 explicit T(int n
) : num(n
) {
27 void *entry() override
{
29 generic_dout(0) << "this is a typical log line. set "
30 << myset
<< " and map " << mymap
<< dendl
;
35 void usage(const char *name
) {
36 cout
<< name
<< " <threads> <lines>\n"
37 << "\t threads: the number of threads for this test.\n"
38 << "\t lines: the number of log entries per thread.\n";
41 int main(int argc
, const char **argv
)
48 int threads
= atoi(argv
[1]);
49 int num
= atoi(argv
[2]);
51 cout
<< threads
<< " threads, " << num
<< " lines per thread" << std::endl
;
53 auto args
= argv_to_vec(argc
, argv
);
55 auto cct
= global_init(NULL
, args
, CEPH_ENTITY_TYPE_OSD
,
56 CODE_ENVIRONMENT_UTILITY
,
57 CINIT_FLAG_NO_DEFAULT_CONFIG_FILE
);
59 utime_t start
= ceph_clock_now();
62 for (int i
=0; i
<threads
; i
++) {
68 for (int i
=0; i
<threads
; i
++) {
75 utime_t t
= ceph_clock_now();
77 cout
<< " flushing.. " << t
<< " so far ..." << std::endl
;
79 g_ceph_context
->_log
->flush();
81 utime_t end
= ceph_clock_now();
82 utime_t dur
= end
- start
;
84 cout
<< dur
<< std::endl
;