summaryrefslogtreecommitdiff
path: root/psutil/_psosx.py
diff options
context:
space:
mode:
authorAlex Manuskin <amanusk@protonmail.com>2018-06-26 16:19:54 +0300
committerGiampaolo Rodola <g.rodola@gmail.com>2018-06-26 06:19:54 -0700
commit196802dd34b7134c1fff99ad4755d0bc0e04cc98 (patch)
tree6afb9396ae0231bef6df741b6b136f4a9f1e6b90 /psutil/_psosx.py
parentd20b9939b985d871177bee2c1271a04a1810a100 (diff)
downloadpsutil-196802dd34b7134c1fff99ad4755d0bc0e04cc98.tar.gz
Osx temps (#1284)
OSX: add temperatures() and fans()
Diffstat (limited to 'psutil/_psosx.py')
-rw-r--r--psutil/_psosx.py146
1 files changed, 146 insertions, 0 deletions
diff --git a/psutil/_psosx.py b/psutil/_psosx.py
index 7cbf4032..90c8be43 100644
--- a/psutil/_psosx.py
+++ b/psutil/_psosx.py
@@ -6,6 +6,7 @@
import contextlib
import errno
+import collections
import functools
import os
from socket import AF_INET
@@ -62,6 +63,110 @@ PROC_STATUSES = {
cext.SZOMB: _common.STATUS_ZOMBIE,
}
+temperatures = (
+ # group, key, label
+
+ # --- CPU
+ ("CPU", "TCXC", "PECI CPU"),
+ ("CPU", "TCXc", "PECI CPU"),
+ ("CPU", "TC0P", "CPU 1 Proximity"),
+ ("CPU", "TC0H", "CPU 1 Heatsink"),
+ ("CPU", "TC0D", "CPU 1 Package"),
+ ("CPU", "TC0E", "CPU 1"),
+ ("CPU", "TC1C", "CPU Core 1"),
+ ("CPU", "TC2C", "CPU Core 2"),
+ ("CPU", "TC3C", "CPU Core 3"),
+ ("CPU", "TC4C", "CPU Core 4"),
+ ("CPU", "TC5C", "CPU Core 5"),
+ ("CPU", "TC6C", "CPU Core 6"),
+ ("CPU", "TC7C", "CPU Core 7"),
+ ("CPU", "TC8C", "CPU Core 8"),
+ ("CPU", "TCAH", "CPU 1 Heatsink Alt."),
+ ("CPU", "TCAD", "CPU 1 Package Alt."),
+ ("CPU", "TC1P", "CPU 2 Proximity"),
+ ("CPU", "TC1H", "CPU 2 Heatsink"),
+ ("CPU", "TC1D", "CPU 2 Package"),
+ ("CPU", "TC1E", "CPU 2"),
+ ("CPU", "TCBH", "CPU 2 Heatsink Alt."),
+ ("CPU", "TCBD", "CPU 2 Package Alt."),
+
+ ("CPU", "TCSC", "PECI SA"),
+ ("CPU", "TCSc", "PECI SA"),
+ ("CPU", "TCSA", "PECI SA"),
+
+ # --- GPU
+ ("GPU", "TCGC", "PECI GPU"),
+ ("GPU", "TCGc", "PECI GPU"),
+ ("GPU", "TG0P", "GPU Proximity"),
+ ("GPU", "TG0D", "GPU Die"),
+ ("GPU", "TG1D", "GPU Die"),
+ ("GPU", "TG0H", "GPU Heatsink"),
+ ("GPU", "TG1H", "GPU Heatsink"),
+
+ # --- Memory
+ ("Memory", "Ts0S", "Memory Proximity"),
+ ("Memory", "TM0P", "Mem Bank A1"),
+ ("Memory", "TM1P", "Mem Bank A2"),
+ ("Memory", "TM8P", "Mem Bank B1"),
+ ("Memory", "TM9P", "Mem Bank B2"),
+ ("Memory", "TM0S", "Mem Module A1"),
+ ("Memory", "TM1S", "Mem Module A2"),
+ ("Memory", "TM8S", "Mem Module B1"),
+ ("Memory", "TM9S", "Mem Module B2"),
+
+ # --- HDD
+ ("HDD", "TH0P", "HDD Bay 1"),
+ ("HDD", "TH1P", "HDD Bay 2"),
+ ("HDD", "TH2P", "HDD Bay 3"),
+ ("HDD", "TH3P", "HDD Bay 4"),
+
+ # --- Battery
+ ("Battery", "TB0T", "Battery TS_MAX"),
+ ("Battery", "TB1T", "Battery 1"),
+ ("Battery", "TB2T", "Battery 2"),
+ ("Battery", "TB3T", "Battery"),
+
+ # --- Others
+ ("Others", "TN0D", "Northbridge Die"),
+ ("Others", "TN0P", "Northbridge Proximity 1"),
+ ("Others", "TN1P", "Northbridge Proximity 2"),
+ ("Others", "TN0C", "MCH Die"),
+ ("Others", "TN0H", "MCH Heatsink"),
+ ("Others", "TP0D", "PCH Die"),
+ ("Others", "TPCD", "PCH Die"),
+ ("Others", "TP0P", "PCH Proximity"),
+
+ ("Others", "TA0P", "Airflow 1"),
+ ("Others", "TA1P", "Airflow 2"),
+ ("Others", "Th0H", "Heatpipe 1"),
+ ("Others", "Th1H", "Heatpipe 2"),
+ ("Others", "Th2H", "Heatpipe 3"),
+
+ ("Others", "Tm0P", "Mainboard Proximity"),
+ ("Others", "Tp0P", "Powerboard Proximity"),
+ ("Others", "Ts0P", "Palm Rest"),
+ ("Others", "Tb0P", "BLC Proximity"),
+
+ ("Others", "TL0P", "LCD Proximity"),
+ ("Others", "TW0P", "Airport Proximity"),
+ ("Others", "TO0P", "Optical Drive"),
+
+ ("Others", "Tp0P", "Power Supply 1"),
+ ("Others", "Tp0C", "Power Supply 1 Alt."),
+ ("Others", "Tp1P", "Power Supply 2"),
+ ("Others", "Tp1C", "Power Supply 2 Alt."),
+ ("Others", "Tp2P", "Power Supply 3"),
+ ("Others", "Tp3P", "Power Supply 4"),
+ ("Others", "Tp4P", "Power Supply 5"),
+ ("Others", "Tp5P", "Power Supply 6"),
+
+ ("Others", "TS0C", "Expansion Slots"),
+ ("Others", "TA0S", "PCI Slot 1 Pos 1"),
+ ("Others", "TA1S", "PCI Slot 1 Pos 2"),
+ ("Others", "TA2S", "PCI Slot 2 Pos 1"),
+ ("Others", "TA3S", "PCI Slot 2 Pos 2"),
+)
+
kinfo_proc_map = dict(
ppid=0,
ruid=1,
@@ -212,6 +317,35 @@ def disk_partitions(all=False):
# =====================================================================
+def sensors_temperatures():
+ """Returns a dictionary of regions of temperature sensors:
+ CPU/GPU/Memory/Others
+ Each entry contains a list of results of all the successfully polled
+ SMC keys from the system.
+
+ References for SMC keys and meaning:
+
+ https://stackoverflow.com/questions/28568775/
+ description-for-apples-smc-keys/31033665#31033665
+
+ https://github.com/Chris911/iStats/blob/
+ 09b159f85a9481b59f347a37259f6d272f65cc05/lib/iStats/smc.rb
+
+ http://web.archive.org/web/20140714090133/http://www.parhelia.ch:80/
+ blog/statics/k3_keys.html
+ """
+ ret = collections.defaultdict(list)
+
+ for group, key, label in temperatures:
+ result = cext.smc_get_temperature(key)
+ result = round(result, 1)
+ if result <= 0:
+ continue
+ ret[group].append((label, result, None, None))
+
+ return dict(ret)
+
+
def sensors_battery():
"""Return battery information.
"""
@@ -230,6 +364,18 @@ def sensors_battery():
return _common.sbattery(percent, secsleft, power_plugged)
+def sensors_fans():
+ """Return fans speed information.
+ """
+ ret = collections.defaultdict(list)
+ rawlist = cext.sensors_fans()
+ if rawlist is not None:
+ for fan in rawlist:
+ ret["Fans"].append(_common.sfan(fan[0], fan[1]))
+
+ return dict(ret)
+
+
# =====================================================================
# --- network
# =====================================================================