Configuration

PenchY provides a framework for using a configuration file. The configuration file, by default located at ~/.penchyrc, is actually a Python file itself. The following options are required in order to run PenchY:

  • SERVER_HOST describes the hostname or IP address of the server penchy will be run on. This is not one of the nodes where the benchmark will be run, but the one deploying PenchY and collecting the resuts.
  • SERVER_PORT describes the port on which penchy will listen on for incoming benchmark results.

The following option is optional:

  • LOGFILE path of logfile to log to. The logfile will be rotated in each run.

In addition to the options above, you can define whatever options you like and use them in your jobs. Just make sure to import config in your jobs and then use config.MY_SETTING.

Node Configuration

It is recommended to put node definition in the configuration rather than the job. A node setup could look like this:

x86NODE = NodeSetting('192.168.56.10', SSH_PORT, USERNAME, '/home/bench', '/usr/bin')
x64NODE = NodeSetting('192.168.56.11', SSH_PORT, USERNAME, '/home/bench', '/usr/bin')

Please consoult the NodeSetting documentation in order to learn what arguments can be passed.

Public Key Authentication

The above will only work if you use passphraseless SSH public key authentication. If your private key happens to have a passphrase and you are not running ssh-agent, you can specify the passphrase like so:

x86NODE = NodeSetting('192.168.56.10', SSH_PORT, USERNAME, '/home/bench', '/usr/bin',
                      keyfile='/home/me/.ssh/foo.x86', password='foo')
x64NODE = NodeSetting('192.168.56.11', SSH_PORT, USERNAME, '/home/bench', '/usr/bin',
                      password='bar')

In the former case, the password foo is used to unlock the private key located in /home/me/.ssh/foo.x86 and in the latter case, the password bar is used to unlock the default private key.

Password Authentication

If you don’t use public key authentication, you can use simple passwords as well:

x86NODE = NodeSetting('192.168.56.10', SSH_PORT, USERNAME, '/home/bench', '/usr/bin',
                      password='foo')

In this case, the password foo is used to authenticate with this node. If you are not willing to put your password into your configuration file, you can, of course, also use getpass to enter the password on demand:

from getpass import getpass
x86NODE = NodeSetting('192.168.56.10', SSH_PORT, USERNAME, '/home/bench', '/usr/bin',
                      password=getpass())