Example #1
0
 def __init__(self, ip, root_dir='/tmp/bench_dialog'):
     self.root_dir = root_dir
     self.ip = ip
     self.client = LightClient(
         ip=self.ip)  # ROOT DIRECTORY should be set here too
     self.log = LogWatchDialog(
         ip=self.ip,
         root_dir=self.root_dir)  # ROOT directory should be said her
     self.record = False
     self.receive = False
     self.printer = False
     self.store = False
     self.files = []
Example #2
0
 def __init__(self, ip, root_dir = '/tmp/bench_dialog'):
     self.root_dir = root_dir
     self.ip = ip
     self.client = LightClient(ip = self.ip)                             # ROOT DIRECTORY should be set here too
     self.log = LogWatchDialog(ip = self.ip, root_dir = self.root_dir)   # ROOT directory should be said her
     self.record = False
     self.receive = False
     self.printer = False
     self.store = False
     self.files = []
Example #3
0
class DialogBench(object):
    def __init__(self, ip, root_dir = '/tmp/bench_dialog'):
        self.root_dir = root_dir
        self.ip = ip
        self.client = LightClient(ip = self.ip)                             # ROOT DIRECTORY should be set here too
        self.log = LogWatchDialog(ip = self.ip, root_dir = self.root_dir)   # ROOT directory should be said her
        self.record = False
        self.receive = False
        self.printer = False
        self.store = False
        self.files = []

    def profile_compilation_performance(self, testID, visu = False):
        self.files = []
        self.log.start_watch()
        self.start_store(testID)
        self.testID = testID
        if visu:
            self.start_display()

    def get_compilation_performance_results(self):
        self.log.stop_watch()
        self.log.dump_logs(self.testID)
        self.stop_store()
        results = [ self.log.get_load_time(),
                    self.log.get_bundle_compile_time('welcome'),
                    self.log.get_model_compile_time('welcome'),
                    self.log.get_reco_compile_time('welcome', 'Japanese'),
                    self.log.get_reco_compile_time('welcome', 'English'),
                    self.get_naoqiservice_VmRSS_diff(),
                    self.get_naoqiservice_VmSize_diff(),
                    self.get_cpu_lavg1_max(),
                    self.get_cpu_iotime_mean(),
                    self.get_cpu_majflt_sum(),
                    self.get_naoqiservice_stime_mean(),
                    self.get_naoqiservice_utime_mean(),
                    ]
        self.stop_display()
        self.testID = 'none'
        return results

    def start_display(self):
        if not self.record:
           self._start_record()
        if not self.receive:
            self.client.start_receive()
        if not self.printer:
            self.client.start_print()
        self.record = True
        self.receive = True
        self.printer = True

    def stop_display(self):
        if self.printer:
            self.client.stop_print()
            self.printer = False
            if not self._check_action():
                self._stop_record()
                self.client.stop_process()
                self.receive = False
                self.record = False

    def start_store(self, dirname = 'remote_cpu'):
        if not self.record:
            self._start_record()
        if not self.receive:
            self.client.start_receive()
        if not self.store:
            self.files = self.client.start_store(dirname = dirname)
        self.store = True
        self.record = True
        self.receive = True

    def stop_store(self):
        if self.store:
            self.client.stop_store()
            self.store = False
            if not self._check_action():
                self._stop_record()
                self.client.stop_process()
                self.receive = False
                self.record = False

    def get_naoqiservice_VmRSS_diff(self):
        try:
            data = self.get_data('naoqi-service', 'VmRSS')
            result = data[-1] - data[0]
        except Exception:
            return None
        return result

    def get_naoqiservice_VmSize_diff(self):
        try:
            data = self.get_data('naoqi-service', 'VmSize')
            result = data[-1] - data[0]
        except Exception:
            return None
        return result

    def get_naoqiservice_utime_mean(self):
        try:
            data = self.get_data('naoqi-service', 'utime')
            result = np.mean(data)
        except Exception:
            return None
        return result

    def get_naoqiservice_stime_mean(self):
        try:
            data = self.get_data('naoqi-service', 'stime')
            result = np.mean(data)
        except Exception:
            return None
        return result

    def get_cpu_iotime_mean(self):
        try:
            data = self.get_data('system', 'io_time')
            result = np.mean(data)
        except Exception:
            return None
        return result

    def get_cpu_lavg1_max(self):
        try:
            data = self.get_data('system', 'lavg_1')
            result = np.max(data)
        except Exception:
            return None
        return result

    def get_cpu_majflt_sum(self):
        try:
            data = self.get_data('naoqi-service', 'majflt')
            result = np.sum(data)
        except Exception:
            return None
        return result

    ###
    ### Helpers
    ###
    def _start_record(self):
        self.client.start_record('system', 'system')
        self.client.start_record('process', 'naoqi-service')

    def _stop_record(self):
        self.client.stop_record('system', 'system')
        self.client.stop_record('process', 'naoqi-service')

    def _check_action(self):
        return self.printer or self.store

    def get_data(self, target, field):
        try:
            for files in self.files:
                if os.path.basename(files) == target:
                    with open(files) as csvfile:
                        reader = csv.DictReader(csvfile)
                        result = []
                        for row in reader:
                            result.append(float(row[field]))
                        return result
        except AttributeError as e:
            return None
Example #4
0
class DialogBench(object):
    def __init__(self, ip, root_dir='/tmp/bench_dialog'):
        self.root_dir = root_dir
        self.ip = ip
        self.client = LightClient(
            ip=self.ip)  # ROOT DIRECTORY should be set here too
        self.log = LogWatchDialog(
            ip=self.ip,
            root_dir=self.root_dir)  # ROOT directory should be said her
        self.record = False
        self.receive = False
        self.printer = False
        self.store = False
        self.files = []

    def profile_compilation_performance(self, testID, visu=False):
        self.files = []
        self.log.start_watch()
        self.start_store(testID)
        self.testID = testID
        if visu:
            self.start_display()

    def get_compilation_performance_results(self):
        self.log.stop_watch()
        self.log.dump_logs(self.testID)
        self.stop_store()
        results = [
            self.log.get_load_time(),
            self.log.get_bundle_compile_time('welcome'),
            self.log.get_model_compile_time('welcome'),
            self.log.get_reco_compile_time('welcome', 'Japanese'),
            self.log.get_reco_compile_time('welcome', 'English'),
            self.get_naoqiservice_VmRSS_diff(),
            self.get_naoqiservice_VmSize_diff(),
            self.get_cpu_lavg1_max(),
            self.get_cpu_iotime_mean(),
            self.get_cpu_majflt_sum(),
            self.get_naoqiservice_stime_mean(),
            self.get_naoqiservice_utime_mean(),
        ]
        self.stop_display()
        self.testID = 'none'
        return results

    def start_display(self):
        if not self.record:
            self._start_record()
        if not self.receive:
            self.client.start_receive()
        if not self.printer:
            self.client.start_print()
        self.record = True
        self.receive = True
        self.printer = True

    def stop_display(self):
        if self.printer:
            self.client.stop_print()
            self.printer = False
            if not self._check_action():
                self._stop_record()
                self.client.stop_process()
                self.receive = False
                self.record = False

    def start_store(self, dirname='remote_cpu'):
        if not self.record:
            self._start_record()
        if not self.receive:
            self.client.start_receive()
        if not self.store:
            self.files = self.client.start_store(dirname=dirname)
        self.store = True
        self.record = True
        self.receive = True

    def stop_store(self):
        if self.store:
            self.client.stop_store()
            self.store = False
            if not self._check_action():
                self._stop_record()
                self.client.stop_process()
                self.receive = False
                self.record = False

    def get_naoqiservice_VmRSS_diff(self):
        try:
            data = self.get_data('naoqi-service', 'VmRSS')
            result = data[-1] - data[0]
        except Exception:
            return None
        return result

    def get_naoqiservice_VmSize_diff(self):
        try:
            data = self.get_data('naoqi-service', 'VmSize')
            result = data[-1] - data[0]
        except Exception:
            return None
        return result

    def get_naoqiservice_utime_mean(self):
        try:
            data = self.get_data('naoqi-service', 'utime')
            result = np.mean(data)
        except Exception:
            return None
        return result

    def get_naoqiservice_stime_mean(self):
        try:
            data = self.get_data('naoqi-service', 'stime')
            result = np.mean(data)
        except Exception:
            return None
        return result

    def get_cpu_iotime_mean(self):
        try:
            data = self.get_data('system', 'io_time')
            result = np.mean(data)
        except Exception:
            return None
        return result

    def get_cpu_lavg1_max(self):
        try:
            data = self.get_data('system', 'lavg_1')
            result = np.max(data)
        except Exception:
            return None
        return result

    def get_cpu_majflt_sum(self):
        try:
            data = self.get_data('naoqi-service', 'majflt')
            result = np.sum(data)
        except Exception:
            return None
        return result

    ###
    ### Helpers
    ###
    def _start_record(self):
        self.client.start_record('system', 'system')
        self.client.start_record('process', 'naoqi-service')

    def _stop_record(self):
        self.client.stop_record('system', 'system')
        self.client.stop_record('process', 'naoqi-service')

    def _check_action(self):
        return self.printer or self.store

    def get_data(self, target, field):
        try:
            for files in self.files:
                if os.path.basename(files) == target:
                    with open(files) as csvfile:
                        reader = csv.DictReader(csvfile)
                        result = []
                        for row in reader:
                            result.append(float(row[field]))
                        return result
        except AttributeError as e:
            return None