Skip to content

Latest commit

 

History

History
157 lines (119 loc) · 4.77 KB

README.md

File metadata and controls

157 lines (119 loc) · 4.77 KB

GIMPS Monitor

A simple command-line tool to monitor multiple GIMPS machines progress on LL/PRP assignments.

License Platform Platform

Table of Contents


Installation

Clone

  • Clone this repo to your local machine using https://github.com/Caboose700/gimps-monitor

Setup

The only external requirement needed for this project is the wonderful python-tabulate.

$ pip install tabulate

Don't forget to edit the configuration files provided. These config files must be in the same directory level as the Client.py or Server.py.

client.config.json

{
  "client": {
    "name": "Client Name",
    "workers": 1,
    "data_directory": "",
    "data_update_interval": 1800
  },
  "server": {
    "ip": "127.0.0.1",
    "port": 1168
  }
}
Client
  • "name" - Name of the computer you'd like displayed on the server.
  • "workers" - Number of the prime95 client is running.
  • "data_directory" - Absolute path to the prime95 working directory
  • "data_update_interval" - How often the program should update. This should be set to the value found in "Options" -> "Preferences" -> "Minutes between writing save files" converted to seconds. For example, 30 minutes would be 1800 seconds.
Server
  • "ip" - IP Address of the server.
  • "port" - Port that the server is listening for.

server.config.json

{
  "server": {
    "host": "",
    "port": 1168
  },
  "display": {
    "date_format": "%B %d, %Y at %I:%M:%S %p",
    "clear_command": "cls",
    "table_type": "grid",
    "print_to_file": false,
    "print_to_file_name": "output.txt",
    "print_to_file_ftp": false
  },
  "ftp": {
    "host": "",
    "user": "",
    "pass": "",
    "path": ""
  }
}
Server
  • host - IP address on the server for the socket to listen for connections. By default, leave this blank.
  • ip - Port that you want the server to listen on.
Display
  • date_format - Specify the desired python datetime format for how you want the "Estimated Completion" and "Last Updated" dates to be displayed.
  • clear_command - If on Windows, leave this to "cls". If you're on Linux, change this to "clear".
  • table_type - Specify the desired format of the table that will be generated by python-tabulate. Supported values can be found on the at the python-tabulate github repo.
  • print_to_file - Specify whether the program should also generate and print the table to a file on the hard disk.
  • print_to_file_name - Specify the name for the file where the table will be dumped to.
  • print_to_file_ftp - Specify whether the program should automatically upload the file to a FTP server.
FTP (only valid if print_to_file_ftp is true)
  • host - IP or Domain Name of FTP Server.
  • user - FTP Username.
  • pass - FTP Password.
  • path - Path on the FTP Server to place the file.

Features

  • Monitors LL/PRP and LL-DC/PRP-DC
  • Digit Length of Exponent
  • Progress Indicator with Completed Iteration Count
  • Average Speed (Iterations Per Second)
  • Estimated Completion Date

Usage (Optional)

Optional: For ease of use it's recommended to use the amazing PyInstaller to create a portable binary so that each machine doesn't require Python 2 to be installed.

For each computer that you want to monitor, copy over the following files and edit the configuration.

  • Modules
  • Client.py
  • client.config.json

On the computer that you will be running the server on, copy over the following files and edit the configuration.

  • Modules
  • Server.py
  • server.config.json

Note: The same computer can be both the client and the server.

Once all the files are copied over and configuration files are modified, you can now start the server script.

python Server.py

Once the server is started, you can start the clients.

python Client.py

FAQ

  • What GIMPS worktypes are supported?

    • Only LL and PRP tests are supported (and their double checks).
  • Mac Support?

    • This program in theory should work correctly on Mac OS, but I haven't personally tested this.
  • How do I clear a client from the server?

    • At the moment, you will have to close and re-open the server. In the future I plan on adding support to the server to have it check and automatically remove clients that haven't checked in for a while.