52 lines
3.7 KiB
Plaintext
52 lines
3.7 KiB
Plaintext
Wrote profile results to 'main.py.lprof'
|
|
Timer unit: 1e-06 s
|
|
|
|
Total time: 0.465667 s
|
|
File: main.py
|
|
Function: get_process_swap_usage at line 29
|
|
|
|
Line # Hits Time Per Hit % Time Line Contents
|
|
==============================================================
|
|
29 @profile
|
|
30 def get_process_swap_usage() -> None:
|
|
31 1 4.7 4.7 0.0 print(f"{'PID':>6} {'Name':<25} {'Swap (MB)':>10}")
|
|
32 1 1.9 1.9 0.0 print("-" * 45)
|
|
33
|
|
34 1 1.5 1.5 0.0 total_swap_used = 0
|
|
35
|
|
36 1 1.5 1.5 0.0 swap_used: list[ProcessSwapInfo] = []
|
|
37
|
|
38 476 428514.1 900.2 92.0 for proc in psutil.process_iter(['pid', 'name', 'memory_full_info']):
|
|
39 475 894.0 1.9 0.2 try:
|
|
40 950 19757.6 20.8 4.2 with proc.oneshot():
|
|
41 475 878.1 1.8 0.2 mem_info = proc.info['memory_full_info']
|
|
42 475 942.4 2.0 0.2 s: int = getattr(mem_info, "swap", 0)
|
|
43 475 880.2 1.9 0.2 if s > 0:
|
|
44 167 10376.3 62.1 2.2 swap_used.append(ProcessSwapInfo(proc.pid, proc.name(), s))
|
|
45 167 320.2 1.9 0.1 total_swap_used += s
|
|
46 except (psutil.NoSuchProcess, psutil.AccessDenied):
|
|
47 continue
|
|
48
|
|
49 1 97.1 97.1 0.0 swap_used.sort(key=lambda x: x.swap)
|
|
50
|
|
51 1 2.4 2.4 0.0 def add_to_group(groups: dict[ProcessName, ProcessSwapGroup], process: ProcessSwapInfo) -> dict[ProcessName, ProcessSwapGroup]:
|
|
52 if process.name not in groups:
|
|
53 groups[process.name] = ProcessSwapGroup(process.name)
|
|
54 groups[process.name].processes.append(process)
|
|
55 return groups
|
|
56
|
|
57 2 247.9 124.0 0.1 swap_used_groups: list[ProcessSwapGroup] = sorted(
|
|
58 1 548.6 548.6 0.1 (item for item in reduce(add_to_group, swap_used, dict()).values()),
|
|
59 1 2.4 2.4 0.0 key=lambda x: x.total_swap
|
|
60 )
|
|
61
|
|
62 103 191.7 1.9 0.0 for group in swap_used_groups:
|
|
63 102 617.0 6.0 0.1 print(f"{group.name:<32} {bytes_to_mb(group.total_swap):10.2f}")
|
|
64 269 489.7 1.8 0.1 for item in group.processes:
|
|
65 167 679.6 4.1 0.1 print(f"{item.pid:>32} {bytes_to_mb(item.swap):10.2f}")
|
|
66 102 210.4 2.1 0.0 print()
|
|
67
|
|
68 1 2.4 2.4 0.0 print("-" * 45)
|
|
69 1 5.2 5.2 0.0 print(f"{'Total swap used by processes:':<32} {bytes_to_mb(total_swap_used):10.2f} MB")
|
|
|