www.schorsch.com

Rayfront 1.0 User Manual

Contact | Sitemap | Search

Host Configuration

(not supported with demo version)

Background

In order to enable processing of simulations on remote hosts, all systems involved need some information about how they see the data they want to work on. The assumption here is that the project data are located on a file server, and each client (or processing server) may have mounted that networked volume with a different name.

To overcome this confusion, a Rayfront installation allows to define internal names for any number of "locations" on the network. An editor process will then check if the current project has one of those named locations as among it's parent directories. If this is the case, then it will enable networking, and check if the configuration contains any systems that are declared as servers. If this is the case, then the simulation setup dialog will offer those systems as target hosts for remote simulations.

If a Rayserer receives a request to run a simulation, then it will check if it can translate the location name given into a physical path name on it's system. If so, then it has all the information it needs to find the project directory from its viewpoint, and will start the simulation. If not, then it will automatically reload the host configuration file and try again. If it still can't find the name after this, then it will refuse to serve the request.

The host configuration file is located in the installation directory as rayfront/config/hosts.

If an editor process doesn't find a host configuration file, if there is no record for it's hostname in there, or no name that covers the location of the current project, then it will disable networking and operate in local mode only. If a server finds not host configuration file or no record for it's hostname, then it will refuse to run.

File Format

The syntax of the file consists of any number of records. A record can have one of the following forms:

  <hostname> <#_of_cpus> [<pathname>="<localpath>" ...]

  __include__ <path_of_other_hostfile>

  __library__ <relative_path_of_library_file> <pathname>

  __library__ <absolute_path_of_library_file>

where the whitespace seperated items have the follwing meaning:

<hostname>

is the name the application gets from the local system with the gethostname(2) system call. This should be just the plain hostname, without any domain. If gethostname returns the fully qualified domain name, then your system is misconfigured. Still just use the simple hostname here. This makes it impossible to render on hosts outside your current domain. Is this a good idea?

<#_of_cpus>

is the number of CPUs that we can use on that system. This is currently ignored, but will limit the maximum number of concurrent processes on that host eventually.

<pathname>

is a name you specify for a network location. This must be unique and should only contain printable characters. For simpler configuration, use the upmost position of each file system subtree that can be reached by all hosts involved. However, you should try to avoid a situation where a project can be reached by more than one of the paths, eg. where one specifies a subtree of the another one.

<localpath>

is the path under which the host <hostname> sees this network location. It should be in the syntax that is returned by the "getcwd(3)" system call. If the path contains whitespace characters, then it must be enclosed in double quotes, such as "<localpath>".

__include__

This literal entry starts a special record, which gets replaced by the contents of another host file as referenced. It is recommended to use a fully qualified path for the spefification of that file. Relative path names will be interpreted as being relative to either the directory where Rayfront was started, or the current project directory, either of which may give unexpected results.

The purpose of this record is to make configuration of larger networks more convenient. Typically, there will be one central hosts file in a network (most likely with the rayserver installation), that is visible to and included by all local Rayfront installations. This helps to make sure that each installation always sees configuration changes immediately, whithout the need to load Rayfront over the network, as working with a local installation is much faster.

__library__

This literal entry starts a special record, which specifies the location of the system library. If there is no such entry, then the standard location within the current installation is assumed. If there is one argument with a absolute path to an existing directory, then Rayfront will assume that the system library is located there. If the first argument is a relative path, then a second argument is required with a pathname. The pathname must be defined elsewhere in the file (or an included/parent file), and defines the root for the relative path of the first argument.

Specifying a relative path is especially useful if the entry is located in an included file that can be seen by several hosts on the local network, each of which may access the library directory through a different physical path. The pathname used will then resolve those differences for each system. If the relative or the absolute path contains any whitespace characters, then it must be enclosed in double quotes.

There may be several <pathname>="<path>" pairs, or none, which disables remote simulation. If a record doesn't fit well on a single line, it may be wrapped to following lines, and the continuation line must start with one ore several tabs. Comments start with a "#" and go to the end of the line. Lines containing only whitespace are ignored.

Examples

In the directory rayfront/config, there is a file named hosts.dst, wich can be used as an example and copied to hosts in the same place. The following is an excerpt from that example file:

  # This will be the standard case.
  #
  somehost 1 path1=/home path2=/export/home2 example="/export/some place"


  # This is a high end multi cpu server (wish I had one ;).
  # The filesystem is organized differently here.
  #
  otherhost 4
      path1=/home
      path2=/nfs/somehost/home2
      example="/nfs/somehost/some place"


  # An example of a host running WindowsNT.
  # Both drive based and UNC paths are valid.
  #
  nt-host 1
      path1=h:\
      path2=\\somehost\home2 
      example="\\somehost\some place"

Notice:
On Windows, you can use both drive letter based paths like "F:\some\directory" and UNC paths like "\\<host>\some\directory". However, changing an existing configuration later from one path format to the other may cause confusion under certain circumstances.

Navigation:

Up:
User Manual Overview
     Installation Guide

Previous:
Program Configuration
http://www.schorsch.com/en/software/rayfront/manual/hostfile.html
Copyright © 2004-2020 schorsch.com