pmonitor 1.1.6__py3-none-any.whl → 1.1.8__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.
Binary file
Binary file
File without changes
Binary file
monitor/DLL/bcrypt.dll ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
monitor/DLL/ntdll.dll ADDED
Binary file
monitor/DLL/pdh.dll ADDED
Binary file
monitor/DLL/rpcrt4.dll ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
monitor/monitor_pids.py CHANGED
@@ -6,6 +6,7 @@ import sys
6
6
  import asyncio
7
7
  import platform
8
8
  import ctypes
9
+ import os
9
10
 
10
11
 
11
12
  class PidsPerf:
@@ -85,8 +86,8 @@ class PidsPerf:
85
86
  return 0, 0
86
87
 
87
88
  def get_win_perf(self):
88
- from monitor.WinPidUtil import PidWinPerformance,FILETIME
89
- from ctypes import byref
89
+ from monitor.WinPidUtil import PidWinPerformance, FILETIME
90
+ from ctypes import CDLL, c_int, c_char_p, byref
90
91
  pidWinPerf = PidWinPerformance()
91
92
  system_time_pre = pidWinPerf.filetime_to_100nano_seconds(FILETIME())
92
93
  p_pid = self.processUtil.find_main_process_pid(self.process_name)
@@ -94,7 +95,11 @@ class PidsPerf:
94
95
  child_pids.add(p_pid) # app内所有pid
95
96
  process_cpu_times_pre = {pid: pidWinPerf.get_process_cpu_time(pid) for pid in child_pids}
96
97
  process_io_counters_pre = {pid: pidWinPerf.get_io_counters(pid) for pid in child_pids}
97
- monitor_interval_seconds = 1 # 监控间隔(秒)
98
+
99
+ dll_path = os.path.join(os.path.dirname(__file__), 'DLL', 'GpuMonitorLib.dll')
100
+ gpu_monitor_dll = CDLL(dll_path)
101
+ gpu_monitor_dll.GetGpuUtilizationByPid.argtypes = [c_int]
102
+ gpu_monitor_dll.GetGpuUtilizationByPid.restype = c_char_p
98
103
  while True:
99
104
  minor_cpu_sum = 0
100
105
  minor_workSet_mem_sum = 0
@@ -103,6 +108,10 @@ class PidsPerf:
103
108
  minor_thread_count_sum = 0
104
109
  minor_io_read_sum = 0
105
110
  minor_io_write_sum = 0
111
+ minor_gpu_dedicated_sum = 0 # (专用内存)
112
+ minor_gpu_system_sum = 0 # (共享内存)
113
+ minor_gpu_committed_sum = 0 # (总使用内存)
114
+ minor_gpu_percent_sum = 0 # (GPU内存占比)
106
115
 
107
116
  current_pids = self.processUtil.get_children_pids(p_pid) # 获取所有子进程
108
117
  current_pids.add(p_pid) # 将主进程及子进程添加到list中
@@ -143,9 +152,11 @@ class PidsPerf:
143
152
  memory_info = pidWinPerf.get_process_memory(pid)
144
153
  io_counters = pidWinPerf.get_io_counters(pid)
145
154
  read_bytes_sec = (io_counters.ReadTransferCount - process_io_counters_pre[
146
- pid].ReadTransferCount) / monitor_interval_seconds
155
+ pid].ReadTransferCount) / self.interval
147
156
  write_bytes_sec = (io_counters.WriteTransferCount - process_io_counters_pre[
148
- pid].WriteTransferCount) / monitor_interval_seconds
157
+ pid].WriteTransferCount) / self.interval
158
+ gpu_info_json = gpu_monitor_dll.GetGpuUtilizationByPid(pid).decode()
159
+ gpu_info = json.loads(gpu_info_json)
149
160
  if process_cpu_time_post:
150
161
  # 计算CPU使用率
151
162
  cpu_usage = round((process_cpu_time_post - process_cpu_times_pre[pid]) / (
@@ -155,7 +166,29 @@ class PidsPerf:
155
166
  workSet_mem = round(memory_info.WorkingSetSize / 1024 / 1024, 2) # MB
156
167
  private_mem = round(memory_info.PrivateUsage / 1024 / 1024, 2) # MB
157
168
  if pid == p_pid:
158
- main_data = {'cpu': cpu_usage, 'private': private_mem, "workset": workSet_mem}
169
+ if gpu_info['GPUUtilizationPercent'] < 0:
170
+ gpu_Dedicated = 0
171
+ gpu_System = 0
172
+ gpu_Committed = 0
173
+ gpu_Usage = 0
174
+ # print('主进程pid:', gpu_info['ProcessID'], 'Dedicated:', 0,
175
+ # 'System:', 0,
176
+ # 'Committed:', 0, 'GPU Usage:',
177
+ # 0)
178
+ else:
179
+ gpu_Dedicated = gpu_info['GPUProcessMemoryLocalUsage']
180
+ gpu_System = gpu_info['GPUProcessMemorySharedUsage']
181
+ gpu_Committed = gpu_info['GPUProcessMemoryTotalCommitted']
182
+ gpu_Usage = gpu_info['GPUUtilizationPercent']
183
+ # print('主进程pid:', gpu_info['ProcessID'], 'Dedicated:',
184
+ # gpu_info['GPUProcessMemoryLocalUsage'],
185
+ # 'System:', gpu_info['GPUProcessMemorySharedUsage'],
186
+ # 'Committed:', gpu_info['GPUProcessMemoryTotalCommitted'], 'GPU Usage:',
187
+ # gpu_info['GPUUtilizationPercent'])
188
+ main_data = {'cpu': cpu_usage, 'private': private_mem, "workset": workSet_mem,
189
+ 'gpu_Dedicated': round(gpu_Dedicated, 2), 'gpu_System': round(gpu_System, 2),
190
+ 'gpu_Committed': round(gpu_Committed, 2), 'gpu_Usage': round(gpu_Usage, 2)}
191
+
159
192
  # print(
160
193
  # f'主进程数据:cpu:{cpu_usage},workSet:{workSet_mem},private:{private_mem},mem_percent:{mem_percent},thread_count:{thread_count}')
161
194
  else:
@@ -164,6 +197,25 @@ class PidsPerf:
164
197
  minor_private_mem_sum += private_mem # 子进程private内存
165
198
  minor_mem_percent_sum += mem_percent # 子进程内存使用率
166
199
  minor_thread_count_sum += thread_count # 子进程线程总数
200
+ if gpu_info['GPUUtilizationPercent'] < 0:
201
+ # print('子进程pid:', gpu_info['ProcessID'], 'Dedicated:', 0,
202
+ # 'System:', 0,
203
+ # 'Committed:', 0, 'GPU Usage:',
204
+ # 0)
205
+ minor_gpu_dedicated_sum += 0
206
+ minor_gpu_system_sum += 0
207
+ minor_gpu_committed_sum += 0
208
+ minor_gpu_percent_sum += 0
209
+ else:
210
+ # print('子进程pid:', gpu_info['ProcessID'], 'Dedicated:',
211
+ # gpu_info['GPUProcessMemoryLocalUsage'],
212
+ # 'System:', gpu_info['GPUProcessMemorySharedUsage'],
213
+ # 'Committed:', gpu_info['GPUProcessMemoryTotalCommitted'], 'GPU Usage:',
214
+ # gpu_info['GPUUtilizationPercent'])
215
+ minor_gpu_dedicated_sum += gpu_info['GPUProcessMemoryLocalUsage']
216
+ minor_gpu_system_sum += gpu_info['GPUProcessMemorySharedUsage']
217
+ minor_gpu_committed_sum += gpu_info['GPUProcessMemoryTotalCommitted']
218
+ minor_gpu_percent_sum += gpu_info['GPUUtilizationPercent']
167
219
  minor_io_read_sum += read_bytes_sec # 所有进程IO读取速率总数
168
220
  minor_io_write_sum += write_bytes_sec # 所有进程IO写入速率总数
169
221
 
@@ -174,7 +226,11 @@ class PidsPerf:
174
226
  other_data = {'cpu': minor_cpu_sum, 'private': round(float(minor_private_mem_sum), 2),
175
227
  'workset': round(float(minor_workSet_mem_sum), 2),
176
228
  'memory percent': round(float(minor_mem_percent_sum), 2),
177
- 'thread count': minor_thread_count_sum}
229
+ 'thread count': minor_thread_count_sum,
230
+ 'gpu_Dedicated': round(minor_gpu_dedicated_sum, 2),
231
+ 'gpu_System': round(minor_gpu_system_sum, 2),
232
+ 'gpu_Committed': round(minor_gpu_committed_sum, 2),
233
+ 'gpu_Usage': round(minor_gpu_percent_sum, 2)}
178
234
  data = {'main': main_data, 'other': other_data, 'disk': disk_data}
179
235
  json_data = json.dumps(data)
180
236
  print(json_data)
@@ -183,11 +239,10 @@ class PidsPerf:
183
239
  system_time_pre = system_time_post
184
240
  # 等待以确保大约每秒更新一次
185
241
  elapsed = time.time() - start_time
186
- time.sleep(max(0, monitor_interval_seconds - elapsed))
242
+ time.sleep(max(0, self.interval - elapsed))
187
243
 
188
244
  async def start_perf(self):
189
245
  if platform.system() == 'Windows':
190
246
  await asyncio.gather(self.get_win_perf())
191
247
  else:
192
248
  await asyncio.gather(self.get_mac_perf())
193
-
monitor/run_monitor.py CHANGED
@@ -1,8 +1,7 @@
1
1
  import argparse
2
- import sys
3
2
 
4
3
  from monitor.sys_info import SysInfo
5
- from monitor. monitor_pids import *
4
+ from monitor.monitor_pids import *
6
5
  from monitor.get_process_name import *
7
6
  import asyncio
8
7
 
@@ -18,7 +17,6 @@ def main():
18
17
  if args.info:
19
18
  print(SysInfo().get_device_info())
20
19
  exit()
21
-
22
20
  process = None
23
21
  if args.name:
24
22
  process = args.name
@@ -29,6 +27,8 @@ def main():
29
27
  if args.time:
30
28
  interval = args.time
31
29
 
30
+ # process = 'ColorByte.exe'
31
+ # interval = 1
32
32
  process_name = ProcessName()
33
33
  if process is not None:
34
34
  print('监测进程<{}>,采集数据间隔<{}s>'.format(process, interval))
@@ -47,21 +47,6 @@ def main():
47
47
  print('开始监测进程<{}>,主进程pid<{}>'.format(process, pid))
48
48
  pidsPerf = PidsPerf(process, interval)
49
49
  asyncio.run(pidsPerf.start_perf())
50
- # if platform.system() == 'Windows':
51
- # monitor = WinPerformance(pid=int(pid))
52
- # else:
53
- # monitor = MacPerformance(pid=int(pid))
54
- # print(f'{" ".join(monitor.header)}')
55
- # while True:
56
- # try:
57
- # result = asyncio.run(monitor.get_all_monitor())
58
- # except Exception as e:
59
- # result = monitor.get_all_usage()
60
- # result.insert(0, time.strftime('%H:%M:%S'))
61
- # line = [str(item) for item in result]
62
- # info = " ".join(line)
63
- # print(info)
64
- # sys.stdout.flush()
65
50
 
66
51
 
67
52
  if __name__ == '__main__':
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pmonitor
3
- Version: 1.1.6
3
+ Version: 1.1.8
4
4
  Summary: pc monitor
5
5
  Home-page: UNKNOWN
6
6
  Author: cfr
@@ -0,0 +1,29 @@
1
+ monitor/WinPidUtil.py,sha256=NGkit8UoDAW7dz1vrwsb50QFroO-0hZ44fd_fykJ3WM,8523
2
+ monitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ monitor/get_process_name.py,sha256=eUElEd6chW-gw416o3VZg3UZPi8ZCG9rcw8ayrpVcz4,3620
4
+ monitor/monitor_mac.py,sha256=OoptTTXTZQupzBwgGOfKNjyYAKBxDy-wI3l6T7XVE8s,4651
5
+ monitor/monitor_pids.py,sha256=lXeh4gQzAd6fEUk0ETGT4vEr4L1sx9TEHK-KN77uvLo,13951
6
+ monitor/monitor_win.py,sha256=xs5nzqqEPoDmJTegh3lQhVjjpPcOWnruWKK65ttqnTo,6161
7
+ monitor/run_monitor.py,sha256=s9JSFu5olh3VhrEqj_CZ5l25nvBtd2cN0NhU9R2KOKM,1581
8
+ monitor/sys_info.py,sha256=aNultuRoQuRYPkYo397xAXVDXP07Qx5JOHtYzNmEvuc,3208
9
+ monitor/DLL/GpuMonitorLib.dll,sha256=zg7h0nJ43RIdQjc776BxgspHHPtT7IiR_y0ZW3wHyCc,64000
10
+ monitor/DLL/KernelBase.dll,sha256=MSJ2WSh-2Lk6yFVLX_a8G2EnNuaOtJGpfg-Vw9HY_go,3860744
11
+ monitor/DLL/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ monitor/DLL/advapi32.dll,sha256=vJ0GuBFvanFrmj45Sp4N3W80qGdmJYy0VBdleZPSA2A,737040
13
+ monitor/DLL/bcrypt.dll,sha256=MIiXQo4a8vPhAAGSfYgUErxMBU6hmb38iwg9vc-CXlA,175000
14
+ monitor/DLL/kernel.appcore.dll,sha256=MOeBitvCu468l-pui4nytbKxANq-An7ZDiLS1nrMq4c,108856
15
+ monitor/DLL/kernel32.dll,sha256=Z4V2hgdw5BTh-iEs4ZRCDEtEhmLmEcKPlzjwB48wKbQ,815448
16
+ monitor/DLL/msvcirt.dll,sha256=VWHerWDF7sKuRsWY5w3viUizsbSxC8ZIPl08wvd5ot8,106496
17
+ monitor/DLL/msvcp140.dll,sha256=pMIim9wqKmMKzcCVtNhgCOXD47x3cxdDVPPaT1vrnN4,575056
18
+ monitor/DLL/ntdll.dll,sha256=WhBKHy2EmdXHhEtVPUCUdwKjawm5aU_v37P9BSa1HwU,2187272
19
+ monitor/DLL/pdh.dll,sha256=blY9j45YQYs0gBc9IwQDIJZ20epEreNOd2c3jlXpqRo,327680
20
+ monitor/DLL/rpcrt4.dll,sha256=Lbh03vMY8lNyE9UNnJAbD9FfiutwrVtx795dfMg-ZHE,1150264
21
+ monitor/DLL/sechost.dll,sha256=1mXCrgNDRBiZ2XZk7eTpDm4oPG-x9BW4uYUVkrfvBkk,699864
22
+ monitor/DLL/ucrtbased.dll,sha256=vtmKFPEHyr2OXkrUOu3Qs1dlbKG1dxZ8ItKCkTTU5S4,2238056
23
+ monitor/DLL/vcruntime140.dll,sha256=AsaqDm5iRBGp8ZsDYKeGWrFZCOJgJFEOXDipwINiw1o,119888
24
+ monitor/DLL/vcruntime140_1.dll,sha256=fdmqAuJxxoym1fGNZR0joV1yWXFa9DMmV4993ifzdjc,49640
25
+ pmonitor-1.1.8.dist-info/METADATA,sha256=knPtIE0MnNfc9cCtgVcg0IA1IfgyqWGLLe_IeIEVsGI,215
26
+ pmonitor-1.1.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
27
+ pmonitor-1.1.8.dist-info/entry_points.txt,sha256=vmlLEANgf2fZar9BeXYiKdF6GMJbVXip-SIZx5yPXDo,55
28
+ pmonitor-1.1.8.dist-info/top_level.txt,sha256=tGkQDkVeyKgP5Rr7acpp0df83NBAnI8up0sGwRxuuQ4,8
29
+ pmonitor-1.1.8.dist-info/RECORD,,
@@ -1,13 +0,0 @@
1
- monitor/WinPidUtil.py,sha256=NGkit8UoDAW7dz1vrwsb50QFroO-0hZ44fd_fykJ3WM,8523
2
- monitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- monitor/get_process_name.py,sha256=eUElEd6chW-gw416o3VZg3UZPi8ZCG9rcw8ayrpVcz4,3620
4
- monitor/monitor_mac.py,sha256=OoptTTXTZQupzBwgGOfKNjyYAKBxDy-wI3l6T7XVE8s,4651
5
- monitor/monitor_pids.py,sha256=5KTqqwUtvaOi5BSu4W3bPHiGcqu4wj1Ry8xgmD2MnQY,10188
6
- monitor/monitor_win.py,sha256=xs5nzqqEPoDmJTegh3lQhVjjpPcOWnruWKK65ttqnTo,6161
7
- monitor/run_monitor.py,sha256=5oUD_yuFkrKRO_-gGbs2IKuGd5lRqUEihRTeWihxOHk,2106
8
- monitor/sys_info.py,sha256=aNultuRoQuRYPkYo397xAXVDXP07Qx5JOHtYzNmEvuc,3208
9
- pmonitor-1.1.6.dist-info/METADATA,sha256=2dVZApFR6bYzfFpiwS3aoPl2FR0-L0FK1qGs-IW1Ko8,215
10
- pmonitor-1.1.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
11
- pmonitor-1.1.6.dist-info/entry_points.txt,sha256=vmlLEANgf2fZar9BeXYiKdF6GMJbVXip-SIZx5yPXDo,55
12
- pmonitor-1.1.6.dist-info/top_level.txt,sha256=tGkQDkVeyKgP5Rr7acpp0df83NBAnI8up0sGwRxuuQ4,8
13
- pmonitor-1.1.6.dist-info/RECORD,,