]>
git.proxmox.com Git - ceph.git/blob - ceph/src/test/mon/test_mon_memory_target.cc
7 #include <system_error>
9 #include <boost/process.hpp>
10 #include <boost/tokenizer.hpp>
12 namespace bp
= boost::process
;
15 int main(int argc
, char** argv
)
17 cout
<< "Mon Memory Target Test" << endl
;
21 << "ceph_test_mon_memory_target <mon-memory-target-bytes>"
26 string
target_directory("/var/log/ceph/");
27 unsigned long maxallowed
= stoul(argv
[1], nullptr, 10);
28 regex
reg(R
"(cache_size:(\d*)\s)");
30 string
grep_command("grep _set_new_cache_sizes " + target_directory
34 bp::child
grep(grep_command
, bp::std_out
> is
, ec
);
36 cout
<< "Error grepping logs! Exiting" << endl
;
37 cout
<< "Error: " << ec
.value() << " " << ec
.message() << endl
;
42 vector
<unsigned long> results
;
43 while (grep
.running() && getline(is
, line
) && !line
.empty()) {
45 if (regex_search(line
, match
, reg
)) {
46 results
.push_back(stoul(match
[1].str()));
50 if (results
.empty()) {
51 cout
<< "Error: No grep results found!" << endl
;
55 auto maxe
= *(max_element(results
.begin(), results
.end()));
56 cout
<< "Results for mon_memory_target:" << endl
;
57 cout
<< "Max: " << maxe
<< endl
;
58 cout
<< "Min: " << *(min_element(results
.begin(), results
.end())) << endl
;
59 auto sum
= accumulate(results
.begin(), results
.end(),
60 static_cast<unsigned long long>(0));
61 auto mean
= sum
/ results
.size();
62 cout
<< "Mean average: " << mean
<< endl
;
63 vector
<unsigned long> diff(results
.size());
64 transform(results
.begin(), results
.end(), diff
.begin(),
65 [mean
](unsigned long x
) { return x
- mean
; });
66 auto sump
= inner_product(diff
.begin(), diff
.end(), diff
.begin(), 0.0);
67 auto stdev
= sqrt(sump
/ results
.size());
68 cout
<< "Standard deviation: " << stdev
<< endl
;
70 if (maxe
> maxallowed
) {
71 cout
<< "Error: Mon memory consumption exceeds maximum allowed!" << endl
;
77 cout
<< "Completed successfully" << endl
;