"""cache hit/miss ratio and usage statistics"""
+from __future__ import absolute_import
import pkg_resources
import logging
import re
import yardstick.ssh as ssh
from yardstick.benchmark.scenarios import base
+from six.moves import zip
LOG = logging.getLogger(__name__)
class CACHEstat(base.Scenario):
- '''Collect cache statistics.
+ """Collect cache statistics.
This scenario reads system cache hit/miss ratio and other statistics on
a Linux host.
some error margin depending on unusual workload types.
REQUIREMENTS: CONFIG_FUNCTION_PROFILER, awk.
- '''
+ """
__scenario_type__ = "CACHEstat"
TARGET_SCRIPT = "cache_stat.bash"
CACHEstat.TARGET_SCRIPT)
host = self.context_cfg['host']
- user = host.get('user', 'ubuntu')
- ssh_port = host.get("ssh_port", ssh.DEFAULT_PORT)
- ip = host.get('ip', None)
- key_filename = host.get('key_filename', '~/.ssh/id_rsa')
-
- LOG.info("user:%s, host:%s", user, ip)
- self.client = ssh.SSH(user, ip, key_filename=key_filename,
- port=ssh_port)
+
+ self.client = ssh.SSH.from_node(host, defaults={"user": "ubuntu"})
self.client.wait(timeout=600)
# copy scripts to host
- self.client.run("cat > ~/cache_stat.sh",
- stdin=open(self.target_script, 'rb'))
+ self.client._put_file_shell(self.target_script, '~/cache_stat.sh')
self.setup_done = True
def _execute_command(self, cmd):
"""Execute a command on server."""
- LOG.info("Executing: %s" % cmd)
+ LOG.info("Executing: %s", cmd)
status, stdout, stderr = self.client.execute(cmd)
if status:
raise RuntimeError("Failed executing command: ",
def _filtrate_result(self, result):
fields = []
cachestat = {}
- data_marker = re.compile("\d+")
+ data_marker = re.compile(r"\d+")
ite = 0
average = {'HITS': 0, 'MISSES': 0, 'DIRTIES': 0, 'RATIO': 0,
'BUFFERS_MB': 0, 'CACHE_MB': 0}
ite += 1
values = line[:]
if values and len(values) == len(fields):
- cachestat[cache] = dict(zip(fields, values))
+ cachestat[cache] = dict(list(zip(fields, values)))
for entry in cachestat:
for item in average: