From: Nilay Vaish Date: Sun, 9 Jun 2013 12:29:59 +0000 (-0500) Subject: ruby: remove periodic event from Profiler X-Git-Tag: stable_2013_10_14~58 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=27b321f2f7d230dfc84ee742fd415f0828e1d862;p=gem5.git ruby: remove periodic event from Profiler The Profiler class does not need an event for dumping statistics periodically. This is because there is a method for dumping statistics for all the sim objects periodically. Since Ruby is a sim object, its statistics are also included. --- diff --git a/src/mem/ruby/profiler/Profiler.cc b/src/mem/ruby/profiler/Profiler.cc index e9c2aed29..c608358f7 100644 --- a/src/mem/ruby/profiler/Profiler.cc +++ b/src/mem/ruby/profiler/Profiler.cc @@ -68,14 +68,11 @@ static double process_memory_total(); static double process_memory_resident(); Profiler::Profiler(const Params *p) - : SimObject(p), m_event(this) + : SimObject(p) { m_inst_profiler_ptr = NULL; m_address_profiler_ptr = NULL; - m_real_time_start_time = time(NULL); // Not reset in clearStats() - m_stats_period = 1000000; // Default - m_periodic_output_file_ptr = &cerr; m_hot_lines = p->hot_lines; m_all_instructions = p->all_instructions; @@ -100,69 +97,6 @@ Profiler::Profiler(const Params *p) Profiler::~Profiler() { - if (m_periodic_output_file_ptr != &cerr) { - delete m_periodic_output_file_ptr; - } -} - -void -Profiler::wakeup() -{ - // FIXME - avoid the repeated code - - vector perProcCycleCount(m_num_of_sequencers); - - for (int i = 0; i < m_num_of_sequencers; i++) { - perProcCycleCount[i] = - g_system_ptr->curCycle() - m_cycles_executed_at_start[i] + 1; - // The +1 allows us to avoid division by zero - } - - ostream &out = *m_periodic_output_file_ptr; - - out << "ruby_cycles: " << g_system_ptr->curCycle()-m_ruby_start << endl - << "mbytes_resident: " << process_memory_resident() << endl - << "mbytes_total: " << process_memory_total() << endl; - - if (process_memory_total() > 0) { - out << "resident_ratio: " - << process_memory_resident() / process_memory_total() << endl; - } - - out << "miss_latency: " << m_allMissLatencyHistogram << endl; - - out << endl; - - if (m_all_instructions) { - m_inst_profiler_ptr->printStats(out); - } - - //g_system_ptr->getNetwork()->printStats(out); - schedule(m_event, g_system_ptr->clockEdge(Cycles(m_stats_period))); -} - -void -Profiler::setPeriodicStatsFile(const string& filename) -{ - cout << "Recording periodic statistics to file '" << filename << "' every " - << m_stats_period << " Ruby cycles" << endl; - - if (m_periodic_output_file_ptr != &cerr) { - delete m_periodic_output_file_ptr; - } - - m_periodic_output_file_ptr = new ofstream(filename.c_str()); - schedule(m_event, g_system_ptr->clockEdge(Cycles(1))); -} - -void -Profiler::setPeriodicStatsInterval(int64_t period) -{ - cout << "Recording periodic statistics every " << m_stats_period - << " Ruby cycles" << endl; - - m_stats_period = period; - schedule(m_event, g_system_ptr->clockEdge(Cycles(1))); } void diff --git a/src/mem/ruby/profiler/Profiler.hh b/src/mem/ruby/profiler/Profiler.hh index 6bd9deee5..ce11f7a7b 100644 --- a/src/mem/ruby/profiler/Profiler.hh +++ b/src/mem/ruby/profiler/Profiler.hh @@ -159,9 +159,6 @@ class Profiler : public SimObject std::vector m_instructions_executed_at_start; std::vector m_cycles_executed_at_start; - std::ostream* m_periodic_output_file_ptr; - int64_t m_stats_period; - Cycles m_ruby_start; time_t m_real_time_start_time; @@ -208,20 +205,6 @@ class Profiler : public SimObject bool m_all_instructions; int m_num_of_sequencers; - - protected: - class ProfileEvent : public Event - { - public: - ProfileEvent(Profiler *_profiler) - { - profiler = _profiler; - } - private: - void process() { profiler->wakeup(); } - Profiler *profiler; - }; - ProfileEvent m_event; }; inline std::ostream&