This plugin controls slave NanoHive-1 instances via sockets, and transfers work units to/from them via FTP, or NFS. It manages a slave pool that removes failing or non-accessible slaves, and re-adds them if they become operational again (after a configurable time.)
The libcURL URL transfer library was used to implement the FTP work unit transport method.
The following is an example Physical Interaction Calculator section in the NanoHive-1 configuration file showing how to configure the SocketsPIC_Control plugin.
nanohive.stagingDirectory=/scratch_local/bhelfric/wutemp
...
pic.0.name=neu-farm
pic.0.type=distributed
pic.0.picPlugin=SocketsPIC_Control
pic.0.communicationTimeout=5
pic.0.badSlaveRepoolInterval=300
pic.0.transportMethod=NFS
pic.0.slaveDescriptors=
192.168.18.114;3001;/scratch_global/bhelfric/wutemp/slave1,
192.168.18.115;3002;/scratch_global/bhelfric/wutemp/slave2,
192.168.18.116;3003;/scratch_global/bhelfric/wutemp/slave3,
192.168.18.117;3004;/scratch_global/bhelfric/wutemp/slave4,
192.168.18.118;3005;/scratch_global/bhelfric/wutemp/slave5
-- or --
pic.0.transportMethod=FTP
pic.0.ftpConnectionPoolSize=10
pic.0.slaveDescriptors=
192.168.18.114;3001;slave1:slave1;slave1,
192.168.18.115;3002;slave2:slave2;slave2,
192.168.18.116;3003;slave3:slave3;slave3,
192.168.18.117;3004;slave4:slave4;slave4,
192.168.18.118;3005;slave5:slave5;slave5
pic.0.pipPlugin.0=REBO_MBM
pic.0.pipPlugin.1=MPQC_SClib
Table 5.8. SocketsPIC_Control Configuration Parameters
| Parameter | Description |
|---|---|
nanohive.stagingDirectory | Specifies in which directory to initially write work units that are to be processed. This should be a fast, local directory to the master, not an NFS mount. |
name | A name for the distributed computing network. |
type | Set to distributed. |
picPlugin | Set to SocketsPIC_Control. |
communicationTimeout | How long, in seconds, to give communication attempts before timing them out. |
badSlaveRepoolInterval | How long, in seconds, to keep a non-operational slave out of the slave pool before checking if it has since become operational. |
transportMethod | Either NFS or FTP. |
slaveDescriptors | A list of slave descriptions, one per slave, comma-separated. For transportMethod=NFS slaves, the form is:
slaveIpAddress;tcpPort;workUnitDirectoryFor transportMethod=FTP slaves, the form is:
slaveIpAddress;tcpPort;ftpLogin:password;workUnitDirectoryNote that a colon separates the ftpLogin and password. |
ftpConnectionPoolSize | When transportMethod=FTP, this parameter sets the number of FTP connections that can be in operation at the same time. |
pipPlugin.N | Specifies the plugins available on these slaves. |