pmonitor 1.3.6__py3-none-any.whl → 1.3.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
monitor/mac_gpu.py ADDED
@@ -0,0 +1,53 @@
1
+ import objc
2
+ import Foundation
3
+
4
+ IOKit = Foundation.NSBundle.bundleWithIdentifier_("com.apple.framework.IOKit")
5
+
6
+ functions = [
7
+ ("IOServiceGetMatchingService", b"II@"),
8
+ ("IOServiceMatching", b"@*"),
9
+ ("IORegistryEntryCreateCFProperties", b"IIo^@@I"),
10
+ ]
11
+
12
+ objc.loadBundleFunctions(IOKit, globals(), functions)
13
+
14
+
15
+ def accelerator_performance_statistics() -> dict[str, int]:
16
+ accelerator_info = IOServiceGetMatchingService(
17
+ 0, IOServiceMatching(b"IOAccelerator")
18
+ )
19
+ if accelerator_info == 0:
20
+ raise RuntimeError("IOAccelerator not found")
21
+ # else...
22
+ err, props = IORegistryEntryCreateCFProperties(accelerator_info, None, None, 0)
23
+ if err != 0:
24
+ raise RuntimeError("IOAccelerator properties not found")
25
+ # else...
26
+ return dict(props)
27
+
28
+
29
+ def get_gpu_memory():
30
+ try:
31
+ gpu_info = accelerator_performance_statistics()
32
+ use_gpu_memory = 0
33
+ device_usage = 0
34
+ print(f"gpu_info: {gpu_info['PerformanceStatistics']}")
35
+ for key, value in gpu_info["PerformanceStatistics"].items():
36
+ if key == "In use system memory":
37
+ use_gpu_memory = int(value) / 1024 / 1024
38
+ print(f"{key}: {value}")
39
+ elif key == "inUseSysMemoryBytes":
40
+ use_gpu_memory = int(value) / 1024 / 1024
41
+ print(f"{key}: {value}")
42
+ elif key == "Device Utilization %":
43
+ device_usage = int(value)
44
+ print('device usage', device_usage)
45
+ # use_gpu_memory = gpu_info["PerformanceStatistics"]["In use system memory"]
46
+ # total_gpu_memory = gpu_info["PerformanceStatistics"]["Alloc system memory"]
47
+ except Exception as e:
48
+ print(f"Mac端在arm64平台通过接口获取Gpu Memory失败:{e}")
49
+ use_gpu_memory = 0
50
+ return use_gpu_memory, device_usage
51
+
52
+
53
+ print(get_gpu_memory())
monitor/monitor_pids.py CHANGED
@@ -10,6 +10,7 @@ import os
10
10
  import stat
11
11
  import subprocess
12
12
  import re
13
+ import mac_gpu
13
14
 
14
15
 
15
16
  class PidsPerf:
@@ -21,14 +22,6 @@ class PidsPerf:
21
22
 
22
23
  def get_mac_perf(self):
23
24
  current_pid = self.processUtil.find_main_process_pid(self.process_name)
24
- gpu_tool = os.path.join(os.path.dirname(__file__), 'exec', 'GpuMonitor')
25
- if os.path.exists(gpu_tool):
26
- if not os.access(gpu_tool, os.X_OK):
27
- try:
28
- current_permissions = os.stat(gpu_tool).st_mode
29
- os.chmod(gpu_tool, current_permissions | stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH)
30
- except Exception as e:
31
- raise e
32
25
  while True:
33
26
  minor_cpu_sum = 0
34
27
  minor_real_mem_sum = 0
@@ -42,19 +35,7 @@ class PidsPerf:
42
35
  current_pids.add(current_pid) # 将主进程及子进程添加到list中
43
36
  pids_process = self.processUtil.get_pids_process(current_pids) # 获取所有进程
44
37
 
45
- result = subprocess.run([gpu_tool], stdout=subprocess.PIPE, text=True)
46
- for line in result.stdout.split('\n'):
47
- pattern = r"GPU Name:(.*?),Device Percent:(.*?),Dedicated Usage:(\d+)"
48
- matches = re.findall(pattern, line)
49
- for match in matches:
50
- gpu_name, device_percent, dedicated_usage = match
51
- if 'driver' in gpu_name or 'Apple' in gpu_name:
52
- gpu_memory_usage_0 = round(float(dedicated_usage) / 1024 / 1024, 2)
53
- gpu_memory_percent_0 = round(float(device_percent), 2)
54
- else:
55
- gpu_memory_usage_1 = round(float(dedicated_usage) / 1024 / 1024, 2)
56
- gpu_memory_percent_1 = round(float(device_percent), 2)
57
-
38
+ gpu_memory_usage_0, gpu_memory_percent_0 = mac_gpu.get_gpu_memory()
58
39
  for process in pids_process:
59
40
  try:
60
41
  cpu_percent = process.cpu_percent()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pmonitor
3
- Version: 1.3.6
3
+ Version: 1.3.7
4
4
  Summary: pc monitor
5
5
  Home-page: UNKNOWN
6
6
  Author: cfr
@@ -1,8 +1,9 @@
1
1
  monitor/WinPidUtil.py,sha256=0vu2cqcQRrBTb5t_9HOmUoOfbe9KRrI-cyDlJX9bcrw,8753
2
2
  monitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  monitor/get_process_name.py,sha256=HxePo2gdrTo2Ukg4DTnYzUMdczVWywCeLCXQ-RRWyu8,3913
4
+ monitor/mac_gpu.py,sha256=0gR5MUlx0wXkkETDHcJCsH_R_pul9mBF2bK_RIyAKyU,1861
4
5
  monitor/monitor_mac.py,sha256=OoptTTXTZQupzBwgGOfKNjyYAKBxDy-wI3l6T7XVE8s,4651
5
- monitor/monitor_pids.py,sha256=Fsh0GZKW1GJpWd98hTkalRA5JJ6_XbC_0Iy9fx4iYh4,15700
6
+ monitor/monitor_pids.py,sha256=YeW0BtT6toY7ut5LFk1a0gKrKdCGnAbipS6gROB67IQ,14549
6
7
  monitor/monitor_win.py,sha256=xs5nzqqEPoDmJTegh3lQhVjjpPcOWnruWKK65ttqnTo,6161
7
8
  monitor/run_monitor.py,sha256=JKjb0X2tjPECFg_k7oby7Yg5Xhs8UNmbjCBP_6oXqMk,1579
8
9
  monitor/sys_info.py,sha256=aNultuRoQuRYPkYo397xAXVDXP07Qx5JOHtYzNmEvuc,3208
@@ -22,10 +23,9 @@ monitor/DLL/sechost.dll,sha256=1mXCrgNDRBiZ2XZk7eTpDm4oPG-x9BW4uYUVkrfvBkk,69986
22
23
  monitor/DLL/ucrtbased.dll,sha256=vtmKFPEHyr2OXkrUOu3Qs1dlbKG1dxZ8ItKCkTTU5S4,2238056
23
24
  monitor/DLL/vcruntime140.dll,sha256=AsaqDm5iRBGp8ZsDYKeGWrFZCOJgJFEOXDipwINiw1o,119888
24
25
  monitor/DLL/vcruntime140_1.dll,sha256=fdmqAuJxxoym1fGNZR0joV1yWXFa9DMmV4993ifzdjc,49640
25
- monitor/exec/GpuMonitor,sha256=C2I_EYswJ8m6LODAJc6Rqpnc4hM-eTmN9q0WVNLTE8w,111568
26
26
  monitor/exec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- pmonitor-1.3.6.dist-info/METADATA,sha256=lBCe_9MJ5oi5e9dPZC38QWoplGJ6YvizQ1PNnmH8JtA,215
28
- pmonitor-1.3.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
29
- pmonitor-1.3.6.dist-info/entry_points.txt,sha256=vmlLEANgf2fZar9BeXYiKdF6GMJbVXip-SIZx5yPXDo,55
30
- pmonitor-1.3.6.dist-info/top_level.txt,sha256=tGkQDkVeyKgP5Rr7acpp0df83NBAnI8up0sGwRxuuQ4,8
31
- pmonitor-1.3.6.dist-info/RECORD,,
27
+ pmonitor-1.3.7.dist-info/METADATA,sha256=ZvRXJSu78CzsXM8mZhHRw3GtREilcFJJe5XLR4uo0zY,215
28
+ pmonitor-1.3.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
29
+ pmonitor-1.3.7.dist-info/entry_points.txt,sha256=vmlLEANgf2fZar9BeXYiKdF6GMJbVXip-SIZx5yPXDo,55
30
+ pmonitor-1.3.7.dist-info/top_level.txt,sha256=tGkQDkVeyKgP5Rr7acpp0df83NBAnI8up0sGwRxuuQ4,8
31
+ pmonitor-1.3.7.dist-info/RECORD,,
monitor/exec/GpuMonitor DELETED
Binary file