| 101 | self.default_data_source: str = 'bpf' # bpf, systemtap, dtrace, oracle |
| 102 | |
| 103 | def parse_cli(self, argv: list[str] | None = None) -> None: |
| 104 | parser = argparse.ArgumentParser( |
| 105 | prog="LatencyMap.py", |
| 106 | description="Plot CLI heatmaps (frequency & intensity) from latency histograms." |
| 107 | ) |
| 108 | parser.add_argument("--num_records", "-n", type=int, default=self.num_latency_records, |
| 109 | help="Number of time intervals displayed (default: 90).") |
| 110 | parser.add_argument("--min_bucket", type=int, default=self.min_latency_bkt, |
| 111 | help="Lower bucket exponent (log2). -1 = autotune (default).") |
| 112 | parser.add_argument("--max_bucket", type=int, default=self.max_latency_bkt, |
| 113 | help="Upper bucket exponent (log2). 64 = autotune (default).") |
| 114 | parser.add_argument("--frequency_maxval", type=float, default=self.frequency_maxval, |
| 115 | help="Max color scale for frequency map; -1 = auto (default).") |
| 116 | parser.add_argument("--intensity_maxval", type=float, default=self.intensity_maxval, |
| 117 | help="Max color scale for intensity map; -1 = auto (default).") |
| 118 | parser.add_argument("--screen_delay", type=float, default=self.screen_delay, |
| 119 | help="Delay (sec) between screens (default: 0.1).") |
| 120 | parser.add_argument("--debug_level", "-d", type=int, default=self.debug_level, |
| 121 | help="Debug level 0..5 (default: 0).") |
| 122 | |
| 123 | # Parse provided argv or default to sys.argv[1:] |
| 124 | args = parser.parse_args(argv) |
| 125 | |
| 126 | self.num_latency_records = args.num_records |
| 127 | self.min_latency_bkt = args.min_bucket |
| 128 | self.max_latency_bkt = args.max_bucket |
| 129 | self.frequency_maxval = -1 if args.frequency_maxval is None else args.frequency_maxval |
| 130 | self.intensity_maxval = -1 if args.intensity_maxval is None else args.intensity_maxval |
| 131 | self.screen_delay = args.screen_delay |
| 132 | self.debug_level = args.debug_level |
| 133 | |
| 134 | def usage_banner(self) -> None: |
| 135 | print("LatencyMap.py v1.3 - Luca.Canali@cern.ch") |