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)
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)
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)
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)
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)
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)
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)
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)
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)