Loading include/common/statistics/stats.hpp +11 −4 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ #include <iostream> #include <iomanip> #include <fstream> #include <atomic> #include <mutex> #include <config.hpp> Loading Loading @@ -115,11 +117,14 @@ private: start; ///< When we started the server std::map<IopsOp, unsigned long> std::map<IopsOp, std::atomic<unsigned long>> IOPS; ///< Stores total value for global mean std::map<SizeOp, unsigned long> std::map<SizeOp, std::atomic<unsigned long>> SIZE; ///< Stores total value for global mean std::mutex time_iops_mutex; std::mutex size_iops_mutex; std::map<IopsOp, std::deque<std::chrono::time_point<std::chrono::steady_clock>>> TimeIops; ///< Stores timestamp when an operation comes removes if Loading Loading @@ -152,9 +157,11 @@ private: void output(std::chrono::seconds d, std::string file_output); std::map<std::pair<std::string, unsigned long long>, unsigned int> std::map<std::pair<std::string, unsigned long long>, std::atomic<unsigned int>> chunkRead; ///< Stores the number of times a chunk/file is read std::map<std::pair<std::string, unsigned long long>, unsigned int> std::map<std::pair<std::string, unsigned long long>, std::atomic<unsigned int>> chunkWrite; ///< Stores the number of times a chunk/file is write /** Loading src/common/statistics/stats.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -143,11 +143,11 @@ Stats::output_map(std::ofstream& output) { map<unsigned int, std::set<pair<std::string, unsigned long long>>> orderRead; for(auto i : chunkRead) { for(const auto& i : chunkRead) { orderRead[i.second].insert(i.first); } for(auto i : chunkWrite) { for(const auto& i : chunkWrite) { orderWrite[i.second].insert(i.first); } Loading @@ -174,7 +174,7 @@ Stats::add_value_iops(enum IopsOp iop) { IOPS[iop]++; auto now = std::chrono::steady_clock::now(); const std::lock_guard<std::mutex> lock(time_iops_mutex); if((now - TimeIops[iop].front()) > std::chrono::duration(10s)) { TimeIops[iop].pop_front(); } else if(TimeIops[iop].size() >= gkfs::config::stats::max_stats) Loading @@ -192,6 +192,7 @@ void Stats::add_value_size(enum SizeOp iop, unsigned long long value) { auto now = std::chrono::steady_clock::now(); SIZE[iop] += value; const std::lock_guard<std::mutex> lock(size_iops_mutex); if((now - TimeSize[iop].front().first) > std::chrono::duration(10s)) { TimeSize[iop].pop_front(); } else if(TimeSize[iop].size() >= gkfs::config::stats::max_stats) Loading Loading @@ -237,6 +238,7 @@ std::vector<double> Stats::get_four_means(enum SizeOp sop) { std::vector<double> results = {0, 0, 0, 0}; auto now = std::chrono::steady_clock::now(); const std::lock_guard<std::mutex> lock(size_iops_mutex); for(auto e : TimeSize[sop]) { auto duration = std::chrono::duration_cast<std::chrono::minutes>(now - e.first) Loading Loading @@ -266,6 +268,7 @@ std::vector<double> Stats::get_four_means(enum IopsOp iop) { std::vector<double> results = {0, 0, 0, 0}; auto now = std::chrono::steady_clock::now(); const std::lock_guard<std::mutex> lock(time_iops_mutex); for(auto e : TimeIops[iop]) { auto duration = std::chrono::duration_cast<std::chrono::minutes>(now - e) Loading Loading
include/common/statistics/stats.hpp +11 −4 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ #include <iostream> #include <iomanip> #include <fstream> #include <atomic> #include <mutex> #include <config.hpp> Loading Loading @@ -115,11 +117,14 @@ private: start; ///< When we started the server std::map<IopsOp, unsigned long> std::map<IopsOp, std::atomic<unsigned long>> IOPS; ///< Stores total value for global mean std::map<SizeOp, unsigned long> std::map<SizeOp, std::atomic<unsigned long>> SIZE; ///< Stores total value for global mean std::mutex time_iops_mutex; std::mutex size_iops_mutex; std::map<IopsOp, std::deque<std::chrono::time_point<std::chrono::steady_clock>>> TimeIops; ///< Stores timestamp when an operation comes removes if Loading Loading @@ -152,9 +157,11 @@ private: void output(std::chrono::seconds d, std::string file_output); std::map<std::pair<std::string, unsigned long long>, unsigned int> std::map<std::pair<std::string, unsigned long long>, std::atomic<unsigned int>> chunkRead; ///< Stores the number of times a chunk/file is read std::map<std::pair<std::string, unsigned long long>, unsigned int> std::map<std::pair<std::string, unsigned long long>, std::atomic<unsigned int>> chunkWrite; ///< Stores the number of times a chunk/file is write /** Loading
src/common/statistics/stats.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -143,11 +143,11 @@ Stats::output_map(std::ofstream& output) { map<unsigned int, std::set<pair<std::string, unsigned long long>>> orderRead; for(auto i : chunkRead) { for(const auto& i : chunkRead) { orderRead[i.second].insert(i.first); } for(auto i : chunkWrite) { for(const auto& i : chunkWrite) { orderWrite[i.second].insert(i.first); } Loading @@ -174,7 +174,7 @@ Stats::add_value_iops(enum IopsOp iop) { IOPS[iop]++; auto now = std::chrono::steady_clock::now(); const std::lock_guard<std::mutex> lock(time_iops_mutex); if((now - TimeIops[iop].front()) > std::chrono::duration(10s)) { TimeIops[iop].pop_front(); } else if(TimeIops[iop].size() >= gkfs::config::stats::max_stats) Loading @@ -192,6 +192,7 @@ void Stats::add_value_size(enum SizeOp iop, unsigned long long value) { auto now = std::chrono::steady_clock::now(); SIZE[iop] += value; const std::lock_guard<std::mutex> lock(size_iops_mutex); if((now - TimeSize[iop].front().first) > std::chrono::duration(10s)) { TimeSize[iop].pop_front(); } else if(TimeSize[iop].size() >= gkfs::config::stats::max_stats) Loading Loading @@ -237,6 +238,7 @@ std::vector<double> Stats::get_four_means(enum SizeOp sop) { std::vector<double> results = {0, 0, 0, 0}; auto now = std::chrono::steady_clock::now(); const std::lock_guard<std::mutex> lock(size_iops_mutex); for(auto e : TimeSize[sop]) { auto duration = std::chrono::duration_cast<std::chrono::minutes>(now - e.first) Loading Loading @@ -266,6 +268,7 @@ std::vector<double> Stats::get_four_means(enum IopsOp iop) { std::vector<double> results = {0, 0, 0, 0}; auto now = std::chrono::steady_clock::now(); const std::lock_guard<std::mutex> lock(time_iops_mutex); for(auto e : TimeIops[iop]) { auto duration = std::chrono::duration_cast<std::chrono::minutes>(now - e) Loading