Move cpu usage from screen setup to tmux setup.
This commit is contained in:
parent
dc5fe29f1d
commit
83945d1a19
@ -1,10 +1,4 @@
|
||||
/**
|
||||
* @file cpuusage.cpp
|
||||
* @brief print out the percent cpu usage at a given interval
|
||||
* @author Matthew McCormick (thewtex)
|
||||
* @version
|
||||
* @date 2009-08-12
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
@ -13,125 +7,96 @@ using namespace std;
|
||||
|
||||
#include <unistd.h> // sleep
|
||||
|
||||
// in seconds
|
||||
const static unsigned int INTERVAL=1;
|
||||
|
||||
class CPUPercentage
|
||||
float cpu_percentage()
|
||||
{
|
||||
public:
|
||||
CPUPercentage();
|
||||
~CPUPercentage();
|
||||
string stat_line;
|
||||
size_t line_start_pos;
|
||||
size_t line_end_pos;
|
||||
unsigned long long current_user;
|
||||
unsigned long long current_system;
|
||||
unsigned long long current_nice;
|
||||
unsigned long long current_idle;
|
||||
unsigned long long next_user;
|
||||
unsigned long long next_system;
|
||||
unsigned long long next_nice;
|
||||
unsigned long long next_idle;
|
||||
unsigned long long diff_user;
|
||||
unsigned long long diff_system;
|
||||
unsigned long long diff_nice;
|
||||
unsigned long long diff_idle;
|
||||
|
||||
const float& get_percentage();
|
||||
|
||||
private:
|
||||
ifstream m_stat_file;
|
||||
unsigned long long m_current_user;
|
||||
unsigned long long m_current_system;
|
||||
unsigned long long m_current_nice;
|
||||
unsigned long long m_current_idle;
|
||||
unsigned long long m_next_user;
|
||||
unsigned long long m_next_system;
|
||||
unsigned long long m_next_nice;
|
||||
unsigned long long m_next_idle;
|
||||
unsigned long long m_diff_user;
|
||||
unsigned long long m_diff_system;
|
||||
unsigned long long m_diff_nice;
|
||||
unsigned long long m_diff_idle;
|
||||
|
||||
string m_stat_line;
|
||||
size_t m_line_start_pos;
|
||||
size_t m_line_end_pos;
|
||||
istringstream m_iss;
|
||||
|
||||
float m_percentage;
|
||||
};
|
||||
|
||||
CPUPercentage::CPUPercentage():
|
||||
m_current_user(0),
|
||||
m_current_system(0),
|
||||
m_current_nice(0),
|
||||
m_current_idle(0),
|
||||
m_next_user(0),
|
||||
m_next_system(0),
|
||||
m_next_nice(0),
|
||||
m_next_idle(0),
|
||||
m_diff_user(0),
|
||||
m_diff_system(0),
|
||||
m_diff_nice(0),
|
||||
m_diff_idle(0)
|
||||
{
|
||||
m_stat_file.exceptions(ifstream::eofbit|ifstream::failbit|ifstream::badbit);
|
||||
}
|
||||
|
||||
CPUPercentage::~CPUPercentage()
|
||||
{
|
||||
if(m_stat_file.is_open())
|
||||
m_stat_file.close();
|
||||
}
|
||||
|
||||
const float& CPUPercentage::get_percentage()
|
||||
{
|
||||
m_stat_file.open("/proc/stat");
|
||||
getline(m_stat_file, m_stat_line);
|
||||
m_stat_file.close();
|
||||
ifstream stat_file("/proc/stat");
|
||||
getline(stat_file, stat_line);
|
||||
stat_file.close();
|
||||
|
||||
// skip "cpu"
|
||||
m_line_start_pos = m_stat_line.find_first_not_of(" ", 3);
|
||||
m_line_end_pos = m_stat_line.find_first_of(' ', m_line_start_pos);
|
||||
m_line_end_pos = m_stat_line.find_first_of(' ', m_line_end_pos + 1);
|
||||
m_line_end_pos = m_stat_line.find_first_of(' ', m_line_end_pos + 1);
|
||||
m_line_end_pos = m_stat_line.find_first_of(' ', m_line_end_pos + 1);
|
||||
m_iss.str(m_stat_line.substr(m_line_start_pos, m_line_end_pos - m_line_start_pos));
|
||||
m_iss >> m_next_user >> m_next_nice >> m_next_system >> m_next_idle;
|
||||
m_iss.clear();
|
||||
line_start_pos = stat_line.find_first_not_of(" ", 3);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_start_pos);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_end_pos + 1);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_end_pos + 1);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_end_pos + 1);
|
||||
|
||||
m_diff_user = m_next_user - m_current_user;
|
||||
m_diff_system = m_next_system - m_current_system;
|
||||
m_diff_nice = m_next_nice - m_current_nice;
|
||||
m_diff_idle = m_next_idle - m_current_idle;
|
||||
m_percentage = static_cast<float>(m_diff_user + m_diff_system + m_diff_nice)/static_cast<float>(m_diff_user + m_diff_system + m_diff_nice + m_diff_idle)*100.0;
|
||||
istringstream iss;
|
||||
iss.str( stat_line.substr( line_start_pos, line_end_pos - line_start_pos ) );
|
||||
iss >> current_user >> current_nice >> current_system >> current_idle;
|
||||
iss.clear();
|
||||
|
||||
m_current_user = m_next_user;
|
||||
m_current_system = m_next_system;
|
||||
m_current_nice = m_next_nice;
|
||||
m_current_idle = m_next_idle;
|
||||
sleep(1);
|
||||
|
||||
return m_percentage;
|
||||
stat_file.open("/proc/stat");
|
||||
getline(stat_file, stat_line);
|
||||
stat_file.close();
|
||||
|
||||
// skip "cpu"
|
||||
line_start_pos = stat_line.find_first_not_of(" ", 3);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_start_pos);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_end_pos + 1);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_end_pos + 1);
|
||||
line_end_pos = stat_line.find_first_of(' ', line_end_pos + 1);
|
||||
|
||||
iss.str( stat_line.substr( line_start_pos, line_end_pos - line_start_pos ) );
|
||||
iss >> next_user >> next_nice >> next_system >> next_idle;
|
||||
iss.clear();
|
||||
|
||||
diff_user = next_user - current_user;
|
||||
diff_system = next_system - current_system;
|
||||
diff_nice = next_nice - current_nice;
|
||||
diff_idle = next_idle - current_idle;
|
||||
|
||||
return static_cast<float>(diff_user + diff_system + diff_nice)/static_cast<float>(diff_user + diff_system + diff_nice + diff_idle)*100.0;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char** argv)
|
||||
string cpu_string()
|
||||
{
|
||||
string meter = "[ ]";
|
||||
int meter_count = 0;
|
||||
float percentage = 0.0;
|
||||
CPUPercentage cpu_per;
|
||||
cout.precision(1);
|
||||
cout.setf(ios::fixed | ios::right);
|
||||
cout.width(5);
|
||||
try
|
||||
{
|
||||
while(true)
|
||||
{
|
||||
percentage = cpu_per.get_percentage();
|
||||
float percentage;
|
||||
ostringstream oss;
|
||||
oss.precision( 1 );
|
||||
oss.setf( ios::fixed | ios::right );
|
||||
|
||||
percentage = cpu_percentage();
|
||||
meter_count = 1;
|
||||
while(meter_count*9.99 < percentage)
|
||||
{
|
||||
meter[meter_count] = '|';
|
||||
meter_count++;
|
||||
}
|
||||
while(meter_count <= 10)
|
||||
|
||||
oss << "CPU:";
|
||||
oss << meter;
|
||||
oss.width( 5 );
|
||||
oss << percentage;
|
||||
oss << "%";
|
||||
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
meter[meter_count] = ' ';
|
||||
meter_count++;
|
||||
}
|
||||
cout << meter << ' ';
|
||||
cout.width(5);
|
||||
cout << percentage << endl;
|
||||
sleep(1);
|
||||
}
|
||||
try
|
||||
{
|
||||
std::cout << cpu_string();
|
||||
}
|
||||
catch(const exception &e)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user