MCPcopy Create free account
hub / github.com/adny-code/fastgrind / query_series

Method query_series

tools/fastgrind.py:844–925  ·  view source on GitHub ↗
(
        self,
        thread_ids: Sequence[int] | None = None,
        function_ids: Sequence[int] | None = None,
        start_ms: int | None = None,
        end_ms: int | None = None,
        metric: str = "malloc",
        scope: str = "inclusive",
        split: str = "auto",
        resolution: int | None = None,
    )

Source from the content-addressed store, hash-verified

842 return items
843
844 def query_series(
845 self,
846 thread_ids: Sequence[int] | None = None,
847 function_ids: Sequence[int] | None = None,
848 start_ms: int | None = None,
849 end_ms: int | None = None,
850 metric: str = "malloc",
851 scope: str = "inclusive",
852 split: str = "auto",
853 resolution: int | None = None,
854 ) -> SeriesResponse:
855 metric = _normalize_metric_name(metric)
856 start_tick, end_tick = self._normalize_window(start_ms, end_ms)
857 selected_threads = self._normalize_thread_ids(thread_ids)
858 selected_functions = self._normalize_function_ids(function_ids)
859 selected_threads = self._narrow_thread_ids_by_functions(selected_threads, selected_functions)
860 split_mode = self._infer_split(split, selected_threads, selected_functions)
861 leaf_match_lookup = self._build_leaf_match_lookup(selected_functions, scope)
862 leaf_filter = frozenset(leaf_match_lookup) if leaf_match_lookup else None
863
864 if end_tick < start_tick:
865 end_tick = start_tick
866 tick_count = ((end_tick - start_tick) // self.reader.sample_interval_ms) + 1 if self.reader.sample_interval_ms else 1
867 ticks = [start_tick + index * self.reader.sample_interval_ms for index in range(tick_count)]
868 raw_metric = "net" if metric == "live" else metric
869
870 accumulator: dict[tuple[Any, ...], list[float]] = {}
871 baselines: dict[tuple[Any, ...], float] = defaultdict(float)
872
873 if metric == "live" and start_tick > self.reader.default_start_tick():
874 for _tick_ms, thread_id, leaf_node_id, malloc_bytes, free_bytes in self._iter_records(
875 self.reader.default_start_tick(),
876 start_tick - self.reader.sample_interval_ms,
877 selected_threads,
878 leaf_filter=leaf_filter,
879 ):
880 keys = self._series_keys(
881 thread_id,
882 leaf_node_id,
883 selected_functions,
884 split_mode,
885 leaf_match_lookup,
886 )
887 if not keys:
888 continue
889 delta = float(malloc_bytes - free_bytes)
890 for key in keys:
891 baselines[key] += delta
892
893 for tick_ms, thread_id, leaf_node_id, malloc_bytes, free_bytes in self._iter_records(
894 start_tick, end_tick, selected_threads, leaf_filter=leaf_filter
895 ):
896 keys = self._series_keys(
897 thread_id,
898 leaf_node_id,
899 selected_functions,
900 split_mode,
901 leaf_match_lookup,

Callers 1

query_multi_seriesMethod · 0.95

Calls 15

_normalize_windowMethod · 0.95
_normalize_thread_idsMethod · 0.95
_infer_splitMethod · 0.95
_iter_recordsMethod · 0.95
_series_keysMethod · 0.95
_metric_valueMethod · 0.95
_format_series_keyMethod · 0.95
_downsampleMethod · 0.95

Tested by

no test coverage detected