Linux CLI client, no X
Moderators: Site Moderators, FAHC Science Team
Linux CLI client, no X
Hi all
I have 10x1080ti that I want to contribute.
Is there a way to run FAH as CLI only? I do not have X server. Using ubuntu 16.04.
I have 10x1080ti that I want to contribute.
Is there a way to run FAH as CLI only? I do not have X server. Using ubuntu 16.04.
Re: Linux CLI client, no X
FAHClient installs and runs as a service. You can manage it with FAHControl or WebControl if you have a GUI but that's not required. It can also be managed by sending and receiving telnet messages or equivalent. The service listens on port 36330.
Posting FAH's log:
How to provide enough info to get helpful support.
How to provide enough info to get helpful support.
Re: Linux CLI client, no X
Thanks Bruce. Is there a document explaining how to contribute GPU in this mode. I am completely new to the project.
Re: Linux CLI client, no X
I don't know of one that has been published.
There is a help file that can be obtained using the telnet interface but may of the options will be unfamiliar to you. Reading the questions and answers here on the forum will help.
FAHClient makes some reasonable assumptions when it sets up an initial configuration, so you won't need to do much except to define your folding name and an optional passkey.
There is a help file that can be obtained using the telnet interface but may of the options will be unfamiliar to you. Reading the questions and answers here on the forum will help.
FAHClient makes some reasonable assumptions when it sets up an initial configuration, so you won't need to do much except to define your folding name and an optional passkey.
Posting FAH's log:
How to provide enough info to get helpful support.
How to provide enough info to get helpful support.
Re: Linux CLI client, no X
I'm not sure if FAHClient --help is posted anywhere so here it is in case it helps:
Please note the following instructions should work on any Debian version of Linux but you may have to adjust them if you're using some other distribution. I use ubuntu 18.04 and I know they work for it.
You would, of course, have to install a fairly recent version of the nvidia driver and opencl. Depending on your version of linux those may be in your current repositories.If not you may have to add a repo that has the necessary software or download & install from http://www.nvidia.com/drivers
Very basically, you would need to create a config.xml file with your configuration:
e.g. for you to copy and modify to suit your needs ... Select All may not work but you can highlight the contents inside the box and copy/paste it to your editor.
Change the lan's IP range and User Information, using an editor of your choice, to look like your lan and identity and add slots as required. Do not remove 127.0.0.1 or the following comma.
Caution: be very careful when editing ... the .xml parser of FAHClient does not like mistakes and may refuse to run until you correct them.
Move your config.xml to /etc/fahclient before you actually install FAHClient ... the installer will pick up on the fact that your config is already there and won't ask for that information assuming you're using the .deb installer:
Install the FAHClient .deb
If you told the installer to start folding automatically (the preferred method - creates a service that starts after a reboot) then it should be running (reboot if it's not) and you can use commands like:
FAHClient --send-pause
FAHClient --send-unpause
FAHClient --send-finish
sudo service FAHClient stop
sudo service FAHClient start
If you told the installer not to start automatically then all you need on the command line is:
FAHClient
The folding log is called log.txt and should be in /var/lib/fahclient
p.s. if you don't already have one you can get a passkey @
https://apps.foldingathome.org/getpasskey.py
Code: Select all
Usage: FAHClient [[--config] <filename>] [OPTIONS]...
OPTIONS:
--chdir <string>
Change directory before starting server. All files opened after this
point, such as the configuration file, must have paths relative to the new
directory.
--configure
Create a basic configuration file, then exit.
--dump <string>
Dump either 'all' or a specific work unit, identified by its queue ID,
then exit.
--finish
Finish all current work units, send the results, then exit.
--lifeline <integer=0>
The application will watch for this process ID and exit if it goes away.
Usually the calling process' PID.
--lspci
List the PCI bus devices, which can be helpful for finding GPU vendor and
device IDs.
--queue-info
Print work unit queue then exit.
--send
Send all finished work units, then exit.
--send-command <string>
Send a command to an already running client.
--send-finish [string]
Finish a slot or all slots on an already running client.
--send-pause [string]
Pause a slot or all slots on an already running client.
--send-unpause [string]
Unpause a slot or all slots on an already running client.
Configuration:
--config <string=config.xml>
Set configuration file.
--print
Print configuration and exit.
Informational:
--help [string]
Print help screen or help on a particular option and exit.
--html-help
Print help in HTML format and exit.
--info
Print application and system information and exit.
--license
License information and exit.
-q|--quiet
Set verbosity to zero.
-v|--verbose
Increase verbosity level.
--version
Print application version and exit.
Configuration options:
The following options can be specified in a configuration file or on the command
line using the following syntax:
--<option> <value>
or:
--<option>=<value>
or when marking boolean values true:
--<option>
Client Control:
client-threads <integer=6>
The number of client processing threads.
cycle-rate <double=4>
The maximum cycle frequency in Hz of client threads.
cycles <integer=-1>
Run at most this many cycles. A value less than zero means run indefinitely.
data-directory <string=.>
The directory, relative to the current directory, where WU data and cores
are stored.
disable-sleep-when-active <boolean=true>
Attempt to keep the system from sleeping when folding, unless on battery.
exec-directory <string=/usr/bin>
The directory, relative to the current executable, where executables and
dynamic libraries are located.
exit-when-done <boolean=false>
Exit when all slots are paused.
fold-anon <boolean=false>
Start folding even if not configured.
idle-seconds <integer=300>
Number of seconds of system idle time before enabling idle folding. Set to
zero to ignore system idle time.
open-web-control <boolean=false>
Make an operating system specific call to open the Web Control in a browser
once client is fully loaded
Configuration:
config-rotate <boolean=true>
Rotate the configuration file to a backup when saving would overwrite the
previous configuration.
config-rotate-dir <string=configs>
Put rotated configs in this directory.
config-rotate-max <integer=16>
The maximum number of rotated configuration files to keep. A value of zero
will keep all configuration file backups.
Error Handling:
max-slot-errors <integer=10>
The maximum number of errors before a slot is paused.
max-unit-errors <integer=5>
The maximum number of errors before a work unit is dumped.
Folding Core:
checkpoint <integer=15>
Tell cores to checkpoint at least every # minutes.
core-dir <string=cores>
The directory to store core files in.
core-prep <string>
Run this command on cores after they are downloaded. This option is useful
for running Linux cores on BSD machines.
core-priority <string=idle>
Set the core priority. Valid values are: idle or low
cpu-affinity <boolean=false>
If true, try to lock core processes to a fixed CPU
cpu-usage <integer=100>
The maximum percentage of the CPU a core should use. Not implemented by all
cores.
gpu-usage <integer=100>
GPU usage as a percent from 10-100
no-assembly <boolean=false>
Tell cores to disable optimized assembly code.
Folding Slot Configuration:
cause <string=ANY>
The cause you prefer to support.
client-subtype <string=LINUX>
The client subtype
client-type <string=normal>
The client type. Can be 'normal', 'advanced' or 'beta'.
cpu-species <string=X86_PENTIUM_II>
CPU species.
cpu-type <string=AMD64>
CPU type.
cpus <integer=-1>
How many CPUs a slot should use. <= 0 will use all the CPUs detected in the
system.
cuda-index <string>
The CUDA device index of the GPU, counting starts from 0.
disable-viz <boolean=false>
Disable reading visualization data.
extra-core-args <string>
Pass extra arguments to the core.
gpu <boolean=true>
Enable or disable auto-confiugration of GPU slots, requires appropriate
hardware.
gpu-index <string>
The index of the GPU as detected by the client. This index corresponds
directly to the GPUs listed in the client's '--info' output.
max-packet-size <string=normal>
Max size in bytes of a work unit packet. Can be small=5MiB, normal=25MiB,
big=500MiB or a number.
memory <string>
Override memory, in bytes, reported to Folding@home.
opencl-index <string>
The OpenCL device index of the GPU, counting starts from 0.
os-species <string=UNKNOWN>
Operating system species.
os-type <string=LINUX>
Operating system type.
project-key <integer=0>
Key for access to restricted testing projects.
smp <boolean=true>
Enable or disable auto-configuration of SMP slots, requires appropriate
hardware.
GUI:
gui-enabled <boolean=true>
Set to false to disable the GUI. A GUI is not currently supported on all
operating systems.
HTTP Server:
allow <string=127.0.0.1>
Client addresses which are allowed to connect to this server. This option
overrides IPs which are denied in the deny option. The pattern 0/0 matches
all addresses.
connection-timeout <integer=60>
The maximum amount of time, in seconds, a connection can be idle before
being dropped.
deny <string=0/0>
Client address which are not allowed to connect to this server.
http-addresses <string=0:7396>
A space separated list of server address and port pairs to listen on in the
form <ip | hostname>[:<port>]
https-addresses <string=>
A space separated list of secure server address and port pairs to listen on
in the form <ip | hostname>[:<port>]
max-connect-time <integer=900>
The maximum amount of time, in seconds, a client can be connected to the
server.
max-connections <integer=800>
Sets the maximum number of simultaneous connections.
max-request-length <integer=52428800>
Sets the maximum length of a client request packet.
min-connect-time <integer=300>
The minimum amount of time, in seconds, a client must be connected to the
server before it can be dropped in favor or a new connection.
HTTP Server SSL:
certificate-file <string>
The servers certificate file in PEM format.
crl-file <string>
Supply a Certificate Revocation List. Overrides any internal CRL
private-key-file <string>
The servers private key file in PEM format.
Logging:
log <string=log.txt>
Set log file.
log-color <boolean=true>
Print log messages with ANSI color coding.
log-crlf <boolean=false>
Print carriage return and line feed at end of log lines.
log-date <boolean=false>
Print date information with log entries.
log-date-periodically <integer=21600>
Print date to log before new log entries if so many seconds have passed
since the last date was printed.
log-domain <boolean=false>
Print domain information with log entries.
log-domain-levels <string ...>
Set log levels by domain. Format is:
<domain>[:i|d|t]:<level> ...
Entries are separated by white-space and or commas.
i - info
For example: server:i:3 module:6
Set 'server' domain info messages to level 3 and 'module' info messages to
level 6. All other domains will follow the system wide log verbosity level.
If <level> is negative it is relative to the system wide verbosity.
log-header <boolean=true>
Enable log message headers.
log-level <boolean=true>
Print level information with log entries.
log-no-info-header <boolean=true>
Don't print 'INFO(#):' in header.
log-redirect <boolean=false>
Redirect all output to log file. Implies !log-to-screen.
log-rotate <boolean=true>
Rotate log files on each run.
log-rotate-dir <string=logs>
Put rotated logs in this directory.
log-rotate-max <integer=16>
Maximum number of rotated logs to keep.
log-short-level <boolean=false>
Print shortened level information with log entries.
log-simple-domains <boolean=true>
Remove any leading directories and trailing file extensions from domains so
that source code file names can be easily used as log domains.
log-thread-id <boolean=false>
Print id with log entries.
log-thread-prefix <boolean=true>
Print thread prefixes, if set, with log entries.
log-time <boolean=true>
Print time information with log entries.
log-to-screen <boolean=true>
Log to screen.
log-truncate <boolean=false>
Truncate log file.
verbosity <integer=3>
Set logging level for INFO messages.
Network:
proxy <string=>
Set proxy for outgoing HTTP connections
proxy-enable <boolean=false>
Enable proxy configuration
proxy-pass <string=>
Set password for proxy connections
proxy-user <string=>
Set user name for proxy connections
Process Control:
child <boolean=false>
Disable 'daemon', 'fork', 'pid' and 'respawn' options. Also defaults
'log-to-screen' to false. Used internally.
daemon <boolean=false>
Short for --pid --service --respawn --log='' --fork
fork <boolean=false>
Run in background.
pid <boolean=false>
Create PID file.
pid-file <string=Folding@home Client.pid>
Name of PID file.
priority <string>
Set the process priority. Valid values are: idle, low, normal, high or
realtime.
respawn <boolean=false>
Run the application as a child process and respawn if it is killed or exits.
run-as <string>
Run as specified user
service <boolean=false>
Ignore user logout or hangup and interrupt signals
Remote Command Server:
command-address <string=0.0.0.0>
The address to which the command server should be bound.
command-allow-no-pass <string=127.0.0.1>
IP address ranges that are allowed access to the command server with out a
password if the 'password' option is set. These addresses will also have to
be allowed IP based access.
command-deny-no-pass <string=0/0>
IP address ranges that are not allowed access to the command server with out
a password if the 'password' option is set. Overridden by
command-allow-no-pass
command-enable <boolean=true>
Set to false to disable the command server.
command-port <integer=36330>
The port to which the command server should be bound.
eval <string>
Evaluate the argument as a script.
password <string>
Set a command server password. Warning, setting a password disables the
default IP address blocking.
script <string>
Run commands from a script file.
Slot Control:
idle <boolean=false>
Only run slot when idle.
max-shutdown-wait <integer=60>
The maximum amount of time to wait in seconds for a unit to exit on
shutdown.
pause-on-battery <boolean=true>
Pause the client or slot when the OS indicates the machine is running on
battery power.
pause-on-start <boolean=false>
If true the slot will be started in a paused state.
paused <boolean=false>
True if slot is paused.
power <string=medium>
Set the client's power level. Valid values are 'light', 'medium' or 'full'.
This setting affects the defaults of several other options such as 'cpus',
'pause-on-battery', etc.
User Information:
machine-id <integer=0>
The machine ID.
passkey <string=>
Your passkey.
team <integer=0>
Your team number.
user <string=Anonymous>
Your user name.
Web Server:
web-allow <string=127.0.0.1>
Client addresses which are allowed to connect to this Web server. This
option overrides IPs which are denied in the web-deny option. This option
differs from the 'allow'/'deny' options in that clients that are not allowed
are served an access denied page rather than simply dropping the connection.
The value '0/0' matches all IPs.
web-deny <string=0/0>
Client address which are not allowed to connect to this Web server.
web-enable <boolean=true>
Set to false to disable the web server.
Web Server Sessions:
session-cookie <string=sid>
The name of the session cookie.
session-lifetime <integer=86400>
The maximum session lifetime in seconds. Zero for unlimited session
lifetime.
session-timeout <integer=3600>
The max maximum amount of time in seconds since the last time a session was
used before it timesout. Zero for no session timeout.
Work Unit Control:
dump-after-deadline <boolean=true>
Dump units if their deadline has passed.
max-queue <integer=16>
Maximum units per slot in the work queue.
max-units <integer=0>
Process at most this number of units, then pause.
next-unit-percentage <integer=99>
Pre-download the next work unit when the current one is this far along.
Values less than 90 are not allowed.
stall-detection-enabled <boolean=false>
Attempt to detect stalled work units and restart them.
stall-percent <integer=5>
Minimum estimated percent work unit completion since last frame before a WU
can be considered stalled, if zero the percentage is ignored.
stall-timeout <integer=1800>
Minimum time, in seconds, since last frame before a WU can be considered
stalled.
You would, of course, have to install a fairly recent version of the nvidia driver and opencl. Depending on your version of linux those may be in your current repositories.
Code: Select all
sudo apt install nvidia-390 ocl-icd-opencl-dev
Very basically, you would need to create a config.xml file with your configuration:
e.g. for you to copy and modify to suit your needs ... Select All may not work but you can highlight the contents inside the box and copy/paste it to your editor.
Code: Select all
<config>
<!-- Folding Core -->
<core-priority v='low'/>
<!-- HTTP Server -->
<allow v='127.0.0.1,192.168.2.100-192.168.2.149'/>
<!-- Network -->
<proxy v=':8080'/>
<!-- Remote Command Server -->
<command-allow-no-pass v='127.0.0.1,192.168.2.100-192.168.2.149'/>
<!-- Slot Control -->
<power v='full'/>
<!-- User Information -->
<passkey v='your passkey'/>
<team v='your team number'/>
<user v='your folding user name'/>
<!-- Folding Slots -->
<slot id='0' type='GPU'>
</slot>
</config>
Caution: be very careful when editing ... the .xml parser of FAHClient does not like mistakes and may refuse to run until you correct them.
Move your config.xml to /etc/fahclient before you actually install FAHClient ... the installer will pick up on the fact that your config is already there and won't ask for that information assuming you're using the .deb installer:
Code: Select all
sudo mkdir /etc/fahclient
sudo cp config.xml /etc/fahclient
If you told the installer to start folding automatically (the preferred method - creates a service that starts after a reboot) then it should be running (reboot if it's not) and you can use commands like:
FAHClient --send-pause
FAHClient --send-unpause
FAHClient --send-finish
sudo service FAHClient stop
sudo service FAHClient start
If you told the installer not to start automatically then all you need on the command line is:
FAHClient
The folding log is called log.txt and should be in /var/lib/fahclient
p.s. if you don't already have one you can get a passkey @
https://apps.foldingathome.org/getpasskey.py
Re: Linux CLI client, no X
My word 'reasonable' applies to simple systems -- since Folding@home was designed to run on @home systems. They're reasonable for CPUs that support up to 8 or 12 threads with the assumption that there are 0 or 1 or 2 GPUs. For more complex systems (like yours) you may choose to modify the original setup but that initial setup should work pretty well until you have a plan of how you might want to alter it.bruce wrote:FAHClient makes some reasonable assumptions when it sets up an initial configuration, so you won't need to do much except to define your folding name and an optional passkey.
The help file for the telnet interface is:
Code: Select all
> help
auth Authenticate.
error Error message.
exit Exit the command processor
heartbeat Prints an increasing hearbeat count.
log-updates start | restart | stop Enable/diable log updates.
quit Exit the command processor
screensaver Unpause all slots which are paused waiting for a
screensaver and pause them again on disconnect.
updates add <id> <rate> <expression> | del <id> | list | clear | reset Enable/disable
updates.
Folding@home Client:
always_on [slot] Set all or one slot(s) always on.
bond <ip>:<port> <input> [output] [ip:port] Bond a packet file to a outgoing
debug socket connection.
configured Return a PyON message indicating if the client has
set a user, team or passkey.
do-cycle Run one client cycle.
download-core <type> <url> Download a core.
finish [slot] Finish all or one slot(s).
get-info <category> <key> Print application information
info Print application information in PyON format
inject <ip>:<port> <input> [output] [ip:port] Inject a packet file to a
listening debug socket. Will wait until packet is
processed.
mask-unit-state Disable specified unit states.
num-slots Get number of slots in PyON format.
on_idle [slot] Set all or one slot(s) on idle.
option <name> [value] Get or set a configuration option
options List or set options with their values.
If no name arguments are given then all options
with non-default values will be listed. If the
'-d' argument is given then even defaulted options
will be listed. If the '-a' option is given then
unset options will also be listed. Otherwise, if
option names are provided only those options will
be listed.
The special name '*' lists all options which have
not yet been listed and is affected by the '-d'
and '-a' options.
If a name argument is followed directly by an
equal sign then the rest of the arugment will be
used to set the option's value. If instead a name
argument is followed immediately by a '!' then the
option will be reset to its default value.
Options which are set or reset will also be
listed.
Options are listed as a PyON format dictionary.[-d
| -a] | [<name>[! | =<value>]]...
pause [slot] Pause all or one slot(s).
ppd Get current total estimated Points Per Day.
queue-info Get work unit queue information in PyON format.
request-id Request an ID from the assignment server.
request-ws Request work server assignment from the assignment
server.
save [file] Save the configuration either to the specified
file or to the file the configuration was last
loaded from.
shutdown Shutdown the application
simulation-info <slot id> Get current simulation information.
slot-add <type> [<name>=<value>]... Add a new slot. Configuration options for
the new slot can be provided.
slot-delete <slot> Delete a slot. If it is running a unit it will be
stopped.
slot-info Get slot information in PyON format.
slot-modify <id> <type> [<name><! | =<value>>]... Modify an existing slot.
Configuration options can be either set or reset
using the same syntax used by the 'options'
command.
slot-options <slot> [-d | -a] | [name]... The first argument is the slot ID.
See 'options' help for a description of the
remaining arguments.
trajectory <slot id> Get current protein trajectory.
unpause [slot] Unpause all or one slot(s).
uptime Print application uptime
wait-for-units Wait for all running units to finish.
Standard Commands:
add <number> <number> Add two values
clear Clear the screen
date [format] Print the date and time. Optionally, with
'format'. See: man strftime
div <number> <number> Divide two values
eq <string> <string> True if arguments are equal
eval [expr]... Evaluate all arguments
if <cond> <expr1> [expr2] If 'cond' evaluates to a non-empty string then
evalute 'expr1' otherwise, if provided, evaluate
'expr2'
less <string> <string> True the first argument is lexigraphically less
than the second
mul <number> <number> Multiply two values
neq <string> <string> True if arguments are not equal
not <expr> Invert the truth value of the argument
sleep <seconds> Sleep for a number of seconds
sub <number> <number> Subtract two values
Posting FAH's log:
How to provide enough info to get helpful support.
How to provide enough info to get helpful support.
Re: Linux CLI client, no X
If you use the options of either FAHClient or of the telnet interface to make changes, you will avoid getting trapped by a minor xml mistake.bollix47 wrote:Caution: be very careful when editing ... the .xml parser of FAHClient does not like mistakes and may refuse to run until you correct them.
Posting FAH's log:
How to provide enough info to get helpful support.
How to provide enough info to get helpful support.
-
- Posts: 1576
- Joined: Tue May 28, 2013 12:14 pm
- Location: Tokyo
Re: Linux CLI client, no X
In order to get the GPUs running you need a minimum of X installed, else the consumer driver for consumer hardware will not work. If you have “professional”versions of NV hardware life would be easier.
I run a headless GPU box 8000 km away and managed to install VNC server which brings just enough X with it to start correctly and allow the driver and FAH to play together. Then as Bruce mentioned I use the telnet interface from my mobile device to check the progress, FAHControl will do it too (as it also works via the same telnet communication)
I run a headless GPU box 8000 km away and managed to install VNC server which brings just enough X with it to start correctly and allow the driver and FAH to play together. Then as Bruce mentioned I use the telnet interface from my mobile device to check the progress, FAHControl will do it too (as it also works via the same telnet communication)