Exemple #1
0
def _more_custom(trace: ProcessedTrace) -> None:
    rows: List[Row] = []
    for gc in trace.gcs:
        if not gc.IsBackground:
            continue
        rows.append((Cell(gc.Number), Cell(str(gc.reason))))

    handle_doc(single_table_document(Table(headers=("number", "reason"), rows=rows)))
Exemple #2
0
def _custom2(trace: ProcessedTrace) -> None:
    gen_to_suspension_datas: List[List[_SuspensionData]] = [[] for _ in range(3)]

    for gc in trace.gcs:
        if gc.PauseDurationMSec < 50:
            continue

        gen_to_suspension_datas[enum_value(gc.Generation)].append(
            _SuspensionData(
                PauseToStartMSec=gc.SuspendToGCStartMSec,
                DurationMSec=gc.DurationMSec,
                PauseDurationMSec=gc.PauseDurationMSec,
                SuspendDurationMSec=gc.SuspendDurationMSec,
                PromotedMB=gc.PromotedMB,
            )
        )

    for gen in ALL_GC_GENS:
        print(f"\n=== {gen.name} suspensions ===\n")
        rows = []
        for susp_data in sorted(
            gen_to_suspension_datas[0], key=lambda sd: sd.DurationMSec, reverse=True
        ):
            rows.append(
                [
                    Cell(x)
                    for x in (
                        susp_data.PauseDurationMSec,
                        susp_data.DurationMSec,
                        # susp_data.PctPauseFromSuspend,
                        # susp_data.PauseToStartMSec,
                        susp_data.SuspendDurationMSec,
                        # susp_data.SuspensionPercent,
                        susp_data.PromotedMB,
                        susp_data.PromotedMBPerSec,
                    )
                ]
            )
        handle_doc(
            single_table_document(
                Table(
                    headers=(
                        "pause msec",
                        "duration msec",
                        # "pause %",
                        # "pause to start",
                        "suspend msec",
                        # "suspend %",
                        "promoted mb",
                        "promoted mb/sec",
                    ),
                    rows=rows,
                )
            )
        )
def _custom(trace: ProcessedTrace) -> None:
    gen2_gcs = [gc for gc in trace.gcs if gc.IsGen2]
    datas: List[_GCData] = []
    for gc in gen2_gcs:
        bytes_since_last_same_gen_gc = (unwrap(
            get_bytes_allocated_since_last_gc(trace.gcs, trace.gcs.index(gc),
                                              Gens.GenLargeObj))
                                        if gc.IsGen2 else None)

        datas.append(
            _GCData(
                Number=gc.Number,
                MBSOHSinceLastGen2=bytes_to_mb(
                    unwrap(
                        get_bytes_allocated_since_last_gc(
                            trace.gcs, trace.gcs.index(gc), Gens.Gen2)))
                if gc.IsGen2 else None,
                MBLOHSinceLastGen2=bytes_to_mb(
                    non_null(bytes_since_last_same_gen_gc))
                if gc.IsGen2 else None,
                Gen2BudgetMB=gc.Gen2BudgetMB if gc.IsGen2 else None,
                LOHBudgetMB=gc.LOHBudgetMB if gc.IsGen2 else None,
            ))

    rows = []
    for data in datas:
        rows.append([
            Cell(str(int(x))) if x is not None else Cell() for x in (
                data.Number,
                data.MBSOHSinceLastGen2,
                data.MBLOHSinceLastGen2,
                data.Gen2BudgetMB,
                data.LOHBudgetMB,
            )
        ])

    g2_numbers = ", ".join(str(gc.Number) for gc in gen2_gcs)
    gens = f"Gen2 numbers are: {g2_numbers}"

    doc = single_table_document(
        Table(
            text=gens,
            headers=(
                "number",
                "MB on SOH since last gen2",
                "MB on LOH since last gen2",
                "gen2 budget MB",
                "loh budget MB",
            ),
            rows=rows,
        ))
    handle_doc(doc)
)

#%% show summary

show_summary(_TRACE)

#%% analyze-single

handle_doc(
    analyze_single_for_processed_trace(
        _TRACE,
        print_events=False,
        run_metrics=parse_run_metrics_arg(("important", )),
        gc_where_filter=lambda gc: True,
        sort_gcs_by=SortGCsBy(metric=parse_single_gc_metric_arg("Number"),
                              sort_reverse=False),
        single_gc_metrics=parse_single_gc_metrics_arg(
            ("DurationMSec", "Generation", "Number", "StartMSec")),
        single_heap_metrics=parse_single_heap_metrics_arg(("InMB", "OutMB")),
        show_first_n_gcs=5,
        show_last_n_gcs=None,
        show_reasons=False,
    ))

#%% analyze-single-gc

handle_doc(
    analyze_single_gc_for_processed_trace_file(
        _TRACE,
        gc_number=42,
        single_gc_metrics=parse_single_gc_metrics_arg(