Пример #1
0
    def run(self, outputdir=None):
        # set output path of perf data
        full_outputdir = fileutils.build_full_output_dir(basedir=outputdir,
                                                         subdir=self.data_dir)

        if full_outputdir is None:
            # something went wrong when setting output dir, exit without perfing
            # TODO: unified output: "Error when setting up output dir of perf data"
            return

        if len(self.process_info) > 0:
            # perf on given process(es)
            for pid, pname in self.process_info.items():
                cmd = self.build_cmd(pid, pname, full_outputdir)
                # TODO: unified output: "Now perf recording %s(%d)..." % (pname, pid)
                stdout, stderr = util.run_cmd(cmd)
                if stdout:
                    fileutils.write_file(
                        path.join(full_outputdir, "%s.stdout" % pname), stdout)
                if stderr:
                    fileutils.write_file(
                        path.join(full_outputdir, "%s.stderr" % pname), stderr)
        else:
            # perf the entire system
            cmd = self.build_cmd()
            stdout, stderr = util.run_cmd(cmd)
            if stdout:
                fileutils.write_file(path.join(full_outputdir, "perf.stdout"),
                                     stdout)
            if stderr:
                fileutils.write_file(path.join(full_outputdir, "perf.stderr"),
                                     stderr)
Пример #2
0
 def save_tidb_configs(self, proc_cmdline=None, outputdir=None):
     full_outputdir = fileutils.build_full_output_dir(
         basedir=outputdir, subdir=self.config_dir)
     for pid, cmdline in proc_cmdline.items():
         proc_configfile = self.find_tidb_configfiles(cmdline)
         if not proc_configfile:
             continue
         shutil.copyfile(proc_configfile,
                         os.path.join(full_outputdir, "%s.conf" % pid))
Пример #3
0
 def save_logfile_to_dir(self, logfile=None, savename=None, outputdir=None):
     if not logfile:
         return
     # set full output path for log files
     full_outputdir = fileutils.build_full_output_dir(basedir=outputdir,
                                                      subdir=self.log_dir)
     if not savename:
         shutil.copy(logfile, full_outputdir)
     else:
         shutil.copyfile(logfile, os.path.join(full_outputdir, savename))
Пример #4
0
    def save_info(self, basedir=None):
        full_outputdir = fileutils.build_full_output_dir(
            basedir=basedir, subdir=self.pdctl_dir)
        pd_health = self.read_health()
        if pd_health:
            fileutils.write_file(os.path.join(
                full_outputdir, "%s-health.json" % self.pd_host), pd_health)
        pd_diagnose = self.read_diagnose()
        if pd_diagnose:
            fileutils.write_file(os.path.join(
                full_outputdir, "%s-diagnose.json" % self.pd_host), pd_diagnose)

        for key, info in self.read_runtime_info().items():
            if not info:
                continue
            fileutils.write_file(os.path.join(
                full_outputdir, "%s-%s.json" % (self.pd_host, key)), info)
Пример #5
0
    def save_sysconf(self, outputdir=None):
        cmd = ["sysctl", "-a"]
        path_limit_file = "/etc/security/limits.conf"

        # save output of `sysctl -a`
        full_outputdir = fileutils.build_full_output_dir(
            basedir=outputdir, subdir=self.config_dir)
        stdout, stderr = util.run_cmd(cmd)
        if stdout:
            fileutils.write_file(os.path.join(full_outputdir, "sysctl.conf"),
                                 stdout)
        if stderr:
            fileutils.write_file(os.path.join(full_outputdir, "sysctl.err"),
                                 stderr)

        # save system limits.conf
        shutil.copy(path_limit_file, full_outputdir)