implement usage and fan speed monitoring (#728)
This commit is contained in:
parent
25fba049d0
commit
d3317c0664
11
.idea/i3pystatus.iml
generated
Normal file
11
.idea/i3pystatus.iml
generated
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.7" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
|
||||
</component>
|
||||
</module>
|
4
.idea/misc.xml
generated
Normal file
4
.idea/misc.xml
generated
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
|
||||
</project>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/i3pystatus.iml" filepath="$PROJECT_DIR$/.idea/i3pystatus.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
268
.idea/workspace.xml
generated
Normal file
268
.idea/workspace.xml
generated
Normal file
@ -0,0 +1,268 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="848840fa-bdfb-4c27-8cdc-2934df369f91" name="Default Changelist" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/i3pystatus/calendar/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/i3pystatus/calendar/__init__.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/i3pystatus/calendar/google.py" beforeDir="false" afterPath="$PROJECT_DIR$/i3pystatus/calendar/google.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/battery.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="5115">
|
||||
<caret line="341" column="9" selection-start-line="341" selection-start-column="9" selection-end-line="341" selection-end-column="9" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/core/util.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="7575">
|
||||
<caret line="513" column="12" selection-start-line="513" selection-start-column="12" selection-end-line="513" selection-end-column="12" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/spaceapi.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="525">
|
||||
<caret line="35" column="10" selection-start-line="35" selection-start-column="10" selection-end-line="35" selection-end-column="10" />
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/calendar/google.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="550">
|
||||
<caret line="113" column="57" selection-start-line="113" selection-start-column="57" selection-end-line="113" selection-end-column="57" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/calendar/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1815">
|
||||
<caret line="205" column="32" selection-start-line="205" selection-start-column="32" selection-end-line="205" selection-end-column="32" />
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/ci-build.sh">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="375">
|
||||
<caret line="25" selection-start-line="25" selection-end-line="25" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/i3pystatus/battery.py" />
|
||||
<option value="$PROJECT_DIR$/i3pystatus/core/util.py" />
|
||||
<option value="$PROJECT_DIR$/i3pystatus/spaceapi.py" />
|
||||
<option value="$PROJECT_DIR$/i3pystatus/calendar/google.py" />
|
||||
<option value="$PROJECT_DIR$/i3pystatus/calendar/__init__.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectConfigurationFiles">
|
||||
<option name="files">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/.idea/i3pystatus.iml" />
|
||||
<option value="$PROJECT_DIR$/.idea/misc.xml" />
|
||||
<option value="$PROJECT_DIR$/.idea/modules.xml" />
|
||||
<option value="$PROJECT_DIR$/.idea/vcs.xml" />
|
||||
<option value="$PROJECT_DIR$/.idea/i3pystatus.iml" />
|
||||
<option value="$PROJECT_DIR$/.idea/misc.xml" />
|
||||
<option value="$PROJECT_DIR$/.idea/modules.xml" />
|
||||
<option value="$PROJECT_DIR$/.idea/vcs.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="3214" />
|
||||
<option name="y" value="970" />
|
||||
<option name="width" value="1572" />
|
||||
<option name="height" value="1153" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
<path>
|
||||
<item name="i3pystatus" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="i3pystatus" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="i3pystatus" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="i3pystatus" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="ci-build" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="i3pystatus" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="i3pystatus" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="i3pystatus" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="i3pystatus" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="i3pystatus" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="i3pystatus" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="calendar" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="i3pystatus" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="i3pystatus" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="tests" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="848840fa-bdfb-4c27-8cdc-2934df369f91" name="Default Changelist" comment="" />
|
||||
<created>1552567658841</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1552567658841</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="3214" y="970" width="1572" height="1153" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24951519" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info id="Project Explorer" order="2" />
|
||||
<window_info id="Job Explorer" order="3" />
|
||||
<window_info id="Favorites" order="4" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Console" order="7" />
|
||||
<window_info anchor="bottom" id="Terminal" order="8" />
|
||||
<window_info anchor="bottom" id="Python Console" order="9" />
|
||||
<window_info anchor="bottom" id="Version Control" order="10" />
|
||||
<window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/battery.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="5115">
|
||||
<caret line="341" column="9" selection-start-line="341" selection-start-column="9" selection-end-line="341" selection-end-column="9" />
|
||||
<folding>
|
||||
<element signature="e#0#13#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/core/util.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="7575">
|
||||
<caret line="513" column="12" selection-start-line="513" selection-start-column="12" selection-end-line="513" selection-end-column="12" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/ci-build.sh">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="375">
|
||||
<caret line="25" selection-start-line="25" selection-end-line="25" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/spaceapi.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="525">
|
||||
<caret line="35" column="10" selection-start-line="35" selection-start-column="10" selection-end-line="35" selection-end-column="10" />
|
||||
<folding>
|
||||
<element signature="e#0#11#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/calendar/google.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="550">
|
||||
<caret line="113" column="57" selection-start-line="113" selection-start-column="57" selection-end-line="113" selection-end-column="57" />
|
||||
<folding>
|
||||
<element signature="e#0#15#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/i3pystatus/calendar/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1815">
|
||||
<caret line="205" column="32" selection-start-line="205" selection-start-column="32" selection-end-line="205" selection-end-column="32" />
|
||||
<folding>
|
||||
<element signature="e#0#14#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
@ -10,8 +10,10 @@ class Amdgpu(IntervalModule):
|
||||
.. rubric :: Available formatters
|
||||
|
||||
* `{temp}`
|
||||
* `{sclk}` - Gpu clock speed
|
||||
* `{mclk}` - Memory clock speed
|
||||
* `{sclk}` - Gpu clock speed
|
||||
* `{mclk}` - Memory clock speed
|
||||
* `{fan_speed}` - Fan speed
|
||||
* `{gpu_usage}` - Gpu Usage percent
|
||||
"""
|
||||
|
||||
settings = (
|
||||
@ -23,19 +25,33 @@ class Amdgpu(IntervalModule):
|
||||
format = '{temp} {mclk} {sclk}'
|
||||
|
||||
def init(self):
|
||||
self.info_gatherers = []
|
||||
self.dev_path = '/sys/class/drm/card{}/device/'.format(self.card)
|
||||
self.detect_hwmon()
|
||||
if 'sclk' in self.format:
|
||||
self.info_gatherers.append(self.get_sclk)
|
||||
|
||||
if 'mclk' in self.format:
|
||||
self.info_gatherers.append(self.get_mclk)
|
||||
|
||||
if 'temp' in self.format:
|
||||
self.info_gatherers.append(self.get_temp)
|
||||
|
||||
if 'fan_speed' in self.format:
|
||||
self.info_gatherers.append(self.get_fan_speed)
|
||||
|
||||
if 'gpu_usage' in self.format:
|
||||
self.info_gatherers.append(self.get_gpu_usage)
|
||||
|
||||
def detect_hwmon(self):
|
||||
hwmon_base = self.dev_path + 'hwmon/'
|
||||
self.hwmmon_path = hwmon_base + os.listdir(hwmon_base)[0] + '/'
|
||||
self.hwmon_path = hwmon_base + os.listdir(hwmon_base)[0] + '/'
|
||||
|
||||
def run(self):
|
||||
self.data = dict(
|
||||
sclk=self.get_sclk(),
|
||||
mclk=self.get_mclk(),
|
||||
temp=self.get_temp()
|
||||
)
|
||||
self.data = dict()
|
||||
|
||||
for gatherer in self.info_gatherers:
|
||||
gatherer()
|
||||
|
||||
self.output = {
|
||||
'full_text': self.format.format(**self.data)
|
||||
@ -49,12 +65,20 @@ class Amdgpu(IntervalModule):
|
||||
|
||||
def get_mclk(self):
|
||||
with open(self.dev_path + 'pp_dpm_mclk') as f:
|
||||
return self.parse_clk_reading(f.read())
|
||||
self.data['mclk'] = self.parse_clk_reading(f.read())
|
||||
|
||||
def get_sclk(self):
|
||||
with open(self.dev_path + 'pp_dpm_sclk') as f:
|
||||
return self.parse_clk_reading(f.read())
|
||||
self.data['sclk'] = self.parse_clk_reading(f.read())
|
||||
|
||||
def get_temp(self):
|
||||
with open(self.hwmmon_path + 'temp1_input') as f:
|
||||
return float(f.read()) / 1000
|
||||
with open(self.hwmon_path + 'temp1_input') as f:
|
||||
self.data['temp'] = float(f.read()) / 1000
|
||||
|
||||
def get_fan_speed(self):
|
||||
with open(self.hwmon_path + 'fan1_input') as f:
|
||||
self.data['fan_speed'] = f.read().strip()
|
||||
|
||||
def get_gpu_usage(self):
|
||||
with open(self.dev_path + 'gpu_busy_percent') as f:
|
||||
self.data['gpu_usage'] = f.read().strip()
|
||||
|
Loading…
Reference in New Issue
Block a user