Host identification and merging


We haven't found a universal hardware-level mechanism (CPU chip ID, MAC address) for uniquely identifying computers. So we do it in software as follows: When a computer first contacts a project's scheduling server, the server creates a database record for the computer, which includes an integer ID and an RPC sequence number. The ID and RPC sequence number are also stored in the client's client_state.xml file. The client increments the RPC sequence number on each scheduler RPC request.

If the scheduling server receives an RPC with a sequence number less than the expected sequence number (usually indicating that the you have copied the client_state.xml file between computers) it creates a new database record and returns a new ID.

Merging duplicate computer records

This mechanism can lead to situations where a project's server has multiple database records for a single computer. For example, this will occur if the user deletes the client_state.xml file. The user can merge these duplicates into a single record via a web interface.

You may only merge two computer records if

  • They have the same processor type (Intel, AMD etc.) and operating system.
  • They don't overlap in time; i.e. computer 1's last RPC happened before computer 2's first RPC, or vice-versa.

There are two ways of merging computer records:

  • To merge a single computer, open its Summary page, and click on "Merge this computer". You will see a list of computers eligible to be merged with this one, and you can select any or all of them.
  • The "Your computers" page has a link Merge computers by name. This feature lets you automatically merge all eligible computers having the same domain name. This is handy if you run a "computer farm" and periodically reformat all the drives.

Alternate identification method at World Community Grid

WCG uses a different method to recognize existing devices to prevent duplicate registrations. The server compares the following host information:

  • user name (network name of host)
  • domain_name (The default on Windows is "WORKGROUP")
  • ip_addr (the ip of the client on the local network)
  • operating system name
  • processor vendor
  • memory

The most recent record that matches these attributes (if found) will be re-used. It will cancel any results currently assigned to the client, and then issue new work. This is because a user might be trying to clear out some work that was causing some form of trouble. If any of this information is hidden through for instance setting the <suppress_net_info> flag in the cc_config.xml file suppressing the IP address or domain_name, the method fails and will create a new device registration.