예제 #1
0
def show_summary(trace: ProcessedTrace) -> None:
    print(f"{trace.NumberGCs} GCs")
    for k, v in trace.number_gcs_in_each_generation.items():
        print(f"  {k.name}: {v}")
    print(f"{trace.HeapCount} heaps")
    for m in ("HeapSizeAfterMB_Mean", "HeapSizeAfterMB_Max"):
        print(f"{m}: {trace.unwrap_metric_from_name(m)}")
    # TODO: how to get mean/max memory load? Is it possible?

    metrics: Sequence[str] = ("PauseDurationMSec", "PromotedMBPerSec",
                              "HeapSizeAfterMB")
    num_metrics = len(metrics)
    kind_to_metric_to_values: List[List[List[float]]] = [
        [[] for _ in range(num_metrics)] for _ in range(4)
    ]
    for gc in trace.gcs:
        gc_kind = get_gc_kind(gc)
        for metric_index, metric in enumerate(metrics):
            metric_index_to_values = kind_to_metric_to_values[enum_value(
                gc_kind)]
            values = metric_index_to_values[metric_index]
            values.append(gc.unwrap_metric_from_name(metric))

    for kind in GCKind:
        histograms: List[BasicHistogram] = []
        for metric_index, metric in enumerate(metrics):
            histograms.append(
                BasicHistogram(
                    values=kind_to_metric_to_values[enum_value(kind)]
                    [metric_index],
                    name=metric,
                    x_label=kind.name,
                ))

        basic_chart(histograms)
예제 #2
0
def _custom_chart() -> None:
    xs = tuple(range(8))
    basic_chart((
        BasicLineChart(
            lines=(
                BasicLine(name="linear", xs=xs, ys=xs),
                BasicLine(name="quadratic", xs=xs, ys=[x**2 for x in xs]),
            ),
            x_label="x",
            y_label="y",
        ),
        BasicHistogram(values=[x for n in range(4) for x in repeat(n, n)],
                       x_label="number"),
    ))