示例#1
0
def get_dumps(args):
    if args.output_directory:
        out_dir = utils.create_specific_output_dir(args.output_directory)
    else:
        out_dir = utils.create_new_output_dir('about-memory-')

    # Do this function inside a try/catch which will delete out_dir if the
    # function throws and out_dir is empty.
    def do_work():
        signal = 'SIGRT0' if not args.minimize_memory_usage else 'SIGRT1'
        new_files = utils.send_signal_and_pull_files(
            signal=signal,
            outfiles_prefixes=['memory-report-'],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir,
            optional_outfiles_prefixes=['dmd-'])

        memory_report_files = [
            f for f in new_files if f.startswith('memory-report-')
        ]
        dmd_files = [f for f in new_files if f.startswith('dmd-')]
        merged_reports_path = merge_files(out_dir, memory_report_files)
        utils.pull_procrank_etc(out_dir)

        if not args.keep_individual_reports:
            for f in memory_report_files:
                os.remove(os.path.join(out_dir, f))

        return (os.path.abspath(merged_reports_path),
                [os.path.join(out_dir, f) for f in dmd_files])

    return utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#2
0
def get_dumps(args):
    if args.output_directory:
        out_dir = utils.create_specific_output_dir(args.output_directory)
    else:
        out_dir = utils.create_new_output_dir("about-memory-")
    args.output_directory = out_dir

    # Do this function inside a try/catch which will delete out_dir if the
    # function throws and out_dir is empty.
    def do_work():
        fifo_msg = "memory report" if not args.minimize_memory_usage else "minimize memory report"
        new_files = utils.notify_and_pull_files(
            fifo_msg=fifo_msg,
            outfiles_prefixes=["memory-report-"],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir,
            optional_outfiles_prefixes=["dmd-"],
        )

        memory_report_files = [f for f in new_files if f.startswith("memory-report-")]
        dmd_files = [f for f in new_files if f.startswith("dmd-")]
        merged_reports_path = merge_files(out_dir, memory_report_files)
        utils.pull_procrank_etc(out_dir)

        if not args.keep_individual_reports:
            for f in memory_report_files:
                os.remove(os.path.join(out_dir, f))

        return (out_dir, os.path.abspath(merged_reports_path), [os.path.join(out_dir, f) for f in dmd_files])

    return utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#3
0
def get_logs(args, out_dir=None, get_procrank_etc=True):
    if not out_dir:
        if args.output_directory:
            out_dir = utils.create_specific_output_dir(args.output_directory)
        else:
            out_dir = utils.create_new_output_dir('gc-cc-logs-')

    if args.abbreviated_gc_cc_log:
        fifo_msg = 'abbreviated gc log'
    else:
        fifo_msg = 'gc log'

    def do_work():
        log_filenames = utils.notify_and_pull_files(
            fifo_msg=fifo_msg,
            outfiles_prefixes=['cc-edges.', 'gc-edges.'],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir)

        if get_procrank_etc:
            utils.pull_procrank_etc(out_dir)

        compress_logs(log_filenames, out_dir)

    utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#4
0
def get_logs(args, out_dir=None, get_procrank_etc=True):
    if not out_dir:
        if args.output_directory:
            out_dir = utils.create_specific_output_dir(args.output_directory)
        else:
            out_dir = utils.create_new_output_dir('gc-cc-logs-')

    if args.abbreviated_gc_cc_log:
        fifo_msg='abbreviated gc log'
    else:
        fifo_msg='gc log'

    def do_work():
        log_filenames = utils.notify_and_pull_files(
            fifo_msg=fifo_msg,
            outfiles_prefixes=['cc-edges.', 'gc-edges.'],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir)

        if get_procrank_etc:
            utils.pull_procrank_etc(out_dir)

        if args.compress_gc_cc_logs:
            compress_logs(log_filenames, out_dir)

    utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#5
0
def get_dumps(args):
    if args.output_directory:
        out_dir = utils.create_specific_output_dir(args.output_directory)
    else:
        out_dir = utils.create_new_output_dir('about-memory-')

    # Do this function inside a try/catch which will delete out_dir if the
    # function throws and out_dir is empty.
    def do_work():
        signal = 'SIGRT0' if not args.minimize_memory_usage else 'SIGRT1'
        new_files = utils.send_signal_and_pull_files(
            signal=signal,
            outfiles_prefixes=['memory-report-'],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir,
            optional_outfiles_prefixes=['dmd-'])

        memory_report_files = [f for f in new_files if f.startswith('memory-report-')]
        dmd_files = [f for f in new_files if f.startswith('dmd-')]
        merged_reports_path = merge_files(out_dir, memory_report_files)
        utils.pull_procrank_etc(out_dir)

        if not args.keep_individual_reports:
            for f in memory_report_files:
                os.remove(os.path.join(out_dir, f))

        return (os.path.abspath(merged_reports_path),
                [os.path.join(out_dir, f) for f in dmd_files])

    return utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#6
0
def get_dumps(args):
    if args.output_directory:
        out_dir = utils.create_specific_output_dir(args.output_directory)
    else:
        out_dir = utils.create_new_output_dir("about-memory-")

    # Do this function inside a try/catch which will delete out_dir if the
    # function throws and out_dir is empty.
    def do_work():
        signal = "SIGRT0" if not args.minimize_memory_usage else "SIGRT1"
        new_files = utils.send_signal_and_pull_files(
            signal=signal,
            outfiles_prefixes=["memory-report-"],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir,
        )

        merged_reports_path = merge_files(out_dir, new_files)
        utils.pull_procrank_etc(out_dir)

        if not args.keep_individual_reports:
            for f in new_files:
                os.remove(os.path.join(out_dir, f))

        return os.path.abspath(merged_reports_path)

    return utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#7
0
def get_logs(args):
    if args.output_directory:
        out_dir = utils.create_specific_output_dir(args.output_directory)
    else:
        out_dir = utils.create_new_output_dir('gc-cc-logs-')

    def do_work():
        log_filenames = utils.send_signal_and_pull_files(
            signal='SIGRT2',
            outfiles_prefixes=['cc-edges.', 'gc-edges.'],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir)

        compress_logs(log_filenames, out_dir)
        utils.pull_procrank_etc(out_dir)

    utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#8
0
def get_dumps(args):
    if args.output_directory:
        out_dir = utils.create_specific_output_dir(args.output_directory)
    else:
        out_dir = utils.create_new_output_dir('about-memory-')
    args.output_directory = out_dir

    # Do this function inside a try/catch which will delete out_dir if the
    # function throws and out_dir is empty.
    def do_work():
        fifo_msg = 'memory report' if not args.minimize_memory_usage else \
                   'minimize memory report'
        new_files = utils.notify_and_pull_files(
            fifo_msg=fifo_msg,
            outfiles_prefixes=['memory-report-'],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir,
            optional_outfiles_prefixes=['dmd-'])

        memory_report_files = [f for f in new_files
                               if f.startswith('memory-report-') or
                                  f.startswith('unified-memory-report-')]
        dmd_files = [f for f in new_files if f.startswith('dmd-')]
        if memory_report_files:
            merged_reports_path = os.path.abspath(merge_files(out_dir, memory_report_files))
        else:
            # NB: It's possible this can happen if all child processes
            #     die/restart during measurement.
            merged_reports_path = None

        utils.pull_procrank_etc(out_dir)

        if not args.keep_individual_reports:
            for f in memory_report_files:
                os.remove(os.path.join(out_dir, f))

        return (out_dir,
                merged_reports_path,
                [os.path.join(out_dir, f) for f in dmd_files])

    return utils.run_and_delete_dir_on_exception(do_work, out_dir)
示例#9
0
def get_dumps(args):
    if args.output_directory:
        out_dir = utils.create_specific_output_dir(args.output_directory)
    else:
        out_dir = utils.create_new_output_dir("about-memory-")

    # Do this function inside a try/catch which will delete out_dir if the
    # function throws and out_dir is empty.
    def do_work():
        signal = "SIGRT0" if not args.minimize_memory_usage else "SIGRT1"
        new_files = utils.send_signal_and_pull_files(
            signal=signal,
            outfiles_prefixes=["memory-report-"],
            remove_outfiles_from_device=not args.leave_on_device,
            out_dir=out_dir,
        )

        merged_reports_path = merge_files(out_dir, new_files)
        utils.pull_procrank_etc(out_dir)

        if not args.keep_individual_reports:
            for f in new_files:
                os.remove(os.path.join(out_dir, f))

        print()
        print(
            textwrap.fill(
                textwrap.dedent(
                    """\
            To view this report, open Firefox on your desktop, load
            about:memory, click "read reports from a file" at the bottom, and
            open %s"""
                    % os.path.abspath(merged_reports_path)
                )
            )
        )

    utils.run_and_delete_dir_on_exception(do_work, out_dir)