From b786ded5b799878936d51c93aaf786eedc520084 Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 7 Dec 2018 18:59:31 +0000 Subject: [PATCH] CPU expandability and MDs --- CMakeLists.txt | 2 -- CODE_OF_CONDUCT.md | 55 ++++++++++++++++++++++++++++++ CONTRIBUTING.md | 23 +++++++++++++ README.md | 0 bin/resource-monitor | Bin 36384 -> 40328 bytes include/cpu.h | 9 +++-- platform/linux/monitoring/cpu.cpp | 44 ++++++++++++++++++------ src/main.cpp | 4 +-- 8 files changed, 118 insertions(+), 19 deletions(-) create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 README.md diff --git a/CMakeLists.txt b/CMakeLists.txt index e6d833b..870d7b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,4 @@ add_executable(${Build} ${PlatformDepSource} ) -target_link_libraries(${Build} ${CMAKE_THREAD_LIBS_INIT}) -target_link_libraries(${Build} pthread) target_link_libraries(${Build} Threads::Threads) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..e824a1e --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,55 @@ +# "No Ideologies" Code of Conduct + +The following are the guidelines we expect our community members and maintainers to follow. + +* * * + +## Terminology and Scope + +**What defines a "maintainer"?** + +* A maintainer is anyone that interacts with the community on behalf of this project. Amount of code written is not a qualifier. A maintainer may include those who solely help in support roles such as in resolving issues, improving documentation, running or participating in forums/chatrooms, or any other non-coding specific roles. Maintainers also include those that are responsible for the building and upkeep of the project. + +**What defines a "community member"?** + +* Anyone interacting with this project directly, including maintainers. + +**What is the scope of these guidelines?** + +* These guidelines apply only to this project and forms of communication directly related to it, such as issue trackers, forums, chatrooms, and in person events specific to this project. If a member is violating these guidelines outside of this project or on other platforms, that is beyond our scope and any grievances should be handled on those platforms. + +**Discussing the guidelines:** + +* Discussions around these guidelines, improving, updating, or altering them, is permitted so long as the discussions do not violate any existing guidelines. + +* * * + +## Guidelines + +### Guidelines for community members + +This project is technical in nature and not based around any particular non-technical ideology. As such, communication that is based primarily around ideologies unrelated to the technologies used by this repository are not permitted. + +Any discussion or communication that is primarily focused around an ideology, be it about race, gender, politics, religion, or anything else non-technical, is not allowed. Everyone has their own ideological preferences, beliefs, and opinions. We do not seek to marginalize, exclude, or judge anyone for their ideologies. To prevent conflict between those with differing or opposing ideologies, all communication on these subjects are prohibited. Some discussions around these topics may be important, however this project is not the proper channel for these discussions. + +### Guidelines for maintainers + +* Maintainers must abide by the same rules as all other community members mentioned above. However, in addition, maintainers are held to a higher standard, explained below. +* Maintainers should answer all questions politely. +* If someone is upset or angry about something, it's probably because it's difficult to use, so thank them for bringing it to your attention and address ways to solve the problem. Maintainers should focus on the content of the message, and not on how it was delivered. +* A maintainer should seek to update members when an issue they brought up is resolved. + +* * * + +## Appropriate response to violations + +How to respond to a community member or maintainer violating a guideline. + +1. If an issue is created that violates a guideline a maintainer should close and lock the issue, explaining "This issue is in violation of our code of conduct. Please review it before posting again." with a link to this document. +1. If a member repeatedly violates the guidelines established in this document, they should be politely warned that continuing to violate the rules may result in being banned from the community. This means revoking access and support to interactions relating directly to the project (issue trackers, chatrooms, forums, in person events, etc.). However, they may continue to use the technology in accordance with its license. +1. If a maintainer is in violation of a guideline, they should be informed of such with a link to this document. If additional actions are required of the maintainer but not taken, then other maintainers should be informed of these inactions. +1. If a maintainer repeatedly violates the guidelines established in this document, they should be politely warned that continuing to violate the rules may result in being banned from the community. This means revoking access and support to interactions relating directly to the project (issue trackers, chatrooms, forums, in person events, etc.). However, they may continue to use the technology in accordance with its license. In addition, future contributions to this project may be ignored as well. + +* * * + +Based on version 1.0.2 from https://github.com/CodifiedConduct/coc-no-ideologies diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..64cfbde --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,23 @@ +# Contributing +First off, we thank you for taking the time to contribute to the universal resource monitor project. + +When contributing or submitting pull requests follow these guidelines or your contribution will not be taken seriously. + +If you want to contribute but don't know what to do, see TODO.txt for a list of tasks that need to be complete, but make sure when you complete one you mark it as such, do not remove it from the list. + +## Make sure your code is +- Functional +- Maintainable and Scalable +- Readable + +## Linting +- Tabs - 4 spaces +- Same line bracing +- Honestly just look around the code base and imitate the style +- Keep code well commented + +## Guidelines +- See CODE_OF_CONDUCT.md + +## Pull requests we reject +Anything from b_boy_ww diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/bin/resource-monitor b/bin/resource-monitor index 545aa941dd7cfe443501e663ee696ccf141106ee..4813aaabd15f9e1957e8fb869b3ad7bbf91f1c05 100755 GIT binary patch literal 40328 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 E502LrkpKVy delta 9935 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 Jp({HQ{sZP?Ab0=( diff --git a/include/cpu.h b/include/cpu.h index 51ac75d..13bdabc 100644 --- a/include/cpu.h +++ b/include/cpu.h @@ -1,6 +1,6 @@ #pragma once -#include +#include #include #include @@ -9,18 +9,21 @@ public: CPU(); std::mutex CPU_Mutex; - int CPU_PREVIOUS_IDLE; + int CPU_PREVIOUS_WORK; int CPU_PREVIOUS_TOTAL; - int CPU_IDLE; + int CPU_WORK; int CPU_TOTAL; int UPDATE_INTERVAL; // s + std::vector> CPU_CORES_WORK_AND_TOTAL; + void START_CPU_POLLING(); static void CPU_POLL(CPU* cpu); void END_CPU_POLLING(); double CPU_PERCENT(); + std::vector CPU_CORE_PERCENT(); virtual ~CPU(); private: diff --git a/platform/linux/monitoring/cpu.cpp b/platform/linux/monitoring/cpu.cpp index cc1a537..29675ff 100644 --- a/platform/linux/monitoring/cpu.cpp +++ b/platform/linux/monitoring/cpu.cpp @@ -1,15 +1,13 @@ #include #include -#include -#include #include #include +#include CPU::CPU() { this->UPDATE_INTERVAL = 1000; this->m_isPolling = false; - std::cout << "CPU Class Instantated" << std::endl; } void CPU::START_CPU_POLLING() { @@ -17,23 +15,38 @@ void CPU::START_CPU_POLLING() { return; } this->m_isPolling = true; + std::cout << "Starting CPU worker thread" << std::endl; std::thread* t = new std::thread(&CPU::CPU_POLL, this); this->m_pollThread = t; - std::cout << "Worker CPU thread started" << std::endl; } void CPU::CPU_POLL(CPU* cpu) { - std::cout << "From CPU Thread Start" << std::endl; + std::cout << "New CPU worker thread" << std::endl; + while (true) { cpu->CPU_Mutex.lock(); if (!cpu->m_isPolling) { cpu->CPU_Mutex.unlock(); return; } - cpu->CPU_PREVIOUS_IDLE++; - cpu->CPU_PREVIOUS_TOTAL++; - cpu->CPU_IDLE++; - cpu->CPU_TOTAL++; + cpu->CPU_Mutex.unlock(); + + // READ TOTAL CPU + unsigned long long luser, nice, system, idle, iowait, + irq, softirq; + FILE* file = fopen("/proc/stat", "r"); + fscanf(file, "cpu %llu %llu %llu %llu %llu %llu %llu", &luser, + &nice, &system, &idle, &iowait, &irq, &softirq); + fclose(file); + + cpu->CPU_Mutex.lock(); + + // CALCULATE TOTAL CPU + cpu->CPU_PREVIOUS_TOTAL = cpu->CPU_TOTAL; + cpu->CPU_PREVIOUS_WORK = cpu->CPU_WORK; + cpu->CPU_TOTAL = luser + nice + system + idle + iowait + irq + softirq; + cpu->CPU_WORK = luser + nice + system; + cpu->CPU_Mutex.unlock(); sleep(1); } @@ -50,9 +63,18 @@ void CPU::END_CPU_POLLING() { double CPU::CPU_PERCENT() { this->CPU_Mutex.lock(); - + long double workOverTime = this->CPU_PREVIOUS_WORK - this->CPU_WORK; + long double totalOverTime = this->CPU_PREVIOUS_TOTAL - this->CPU_TOTAL; this->CPU_Mutex.unlock(); - return (double)this->CPU_TOTAL; + + double percent = (workOverTime / totalOverTime) * 100; + if (isnan(percent)) percent = -1; + return (double)percent; +} + +std::vector CPU::CPU_CORE_PERCENT() { + std::vector output; + return output; } CPU::~CPU() { diff --git a/src/main.cpp b/src/main.cpp index 8eb5e17..b4c6799 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,10 +8,8 @@ int main(int argc, char** argv) { cpu->START_CPU_POLLING(); - usleep(1000000); while(1) { - std::cout << cpu->CPU_PERCENT() << std::endl; - + std::cout << "TOTAL CPU USAGE: " << cpu->CPU_PERCENT() << std::endl; sleep(1); } }