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
14 struct T
: public Thread
{
17 map
<int,string
> mymap
;
18 explicit T(int n
) : num(n
) {
25 void *entry() override
{
27 generic_dout(0) << "this is a typical log line. set "
28 << myset
<< " and map " << mymap
<< dendl
;
33 void usage(const char *name
) {
34 cout
<< name
<< " <threads> <lines>\n"
35 << "\t threads: the number of threads for this test.\n"
36 << "\t lines: the number of log entries per thread.\n";
39 int main(int argc
, const char **argv
)
46 int threads
= atoi(argv
[1]);
47 int num
= atoi(argv
[2]);
49 cout
<< threads
<< " threads, " << num
<< " lines per thread" << std::endl
;
51 vector
<const char*> args
;
52 argv_to_vec(argc
, argv
, args
);
54 auto cct
= global_init(NULL
, args
, CEPH_ENTITY_TYPE_OSD
,
55 CODE_ENVIRONMENT_UTILITY
,
56 CINIT_FLAG_NO_DEFAULT_CONFIG_FILE
);
58 utime_t start
= ceph_clock_now();
61 for (int i
=0; i
<threads
; i
++) {
67 for (int i
=0; i
<threads
; i
++) {
74 utime_t t
= ceph_clock_now();
76 cout
<< " flushing.. " << t
<< " so far ..." << std::endl
;
78 g_ceph_context
->_log
->flush();
80 utime_t end
= ceph_clock_now();
81 utime_t dur
= end
- start
;
83 cout
<< dur
<< std::endl
;