-
Notifications
You must be signed in to change notification settings - Fork 15
Admin FAQ
FIFO in harvester is an optional feature that harvester agents can take advantage of message queue data structure. Main purpose FIFO is to reduce DB polling frequency and lower CPU usage of the node.
The FIFO has "Priority Queue" data structure. Different plugins can be chosen as fifo backend. Existing plugins: SQLite, Redis
So far, only monitor agent has option to enable FIFO. The monitor FIFO allow configurable priority of each PQ. Worker chunks with shorter fifoCheckInterval has higher priority and will be checked more frequently.
Choose a FIFO backend and set up related service. Then, configure in harvester.
Backend setup:
- Make sure sqlite3 is installed in OS.
- No special service configuration required.
Harvester configuration:
-
In panda_harvester.cfg,
[fifo]
section, one should setfifoModule = pandaharvester.harvesterfifo.sqlite_fifo
andfifoClass = SqliteFifo
to use the SqliteFifo fifo plugin. -
The
database_filename
should be specified as the database filename for sqlite. This must be different from main Harvester DB and other fifo DBs if using sqlite. -
It is recommended to use placeholder
$(AGENT)
in filename to make different DBs for fifo of different agents. -
One can set DB file located in ramdisk for better performance.
-
E.g.
[fifo] fifoModule = pandaharvester.harvesterfifo.sqlite_fifo fifoClass = SqliteFifo database_filename = /dev/shm/$(AGENT)_fifo.db
Backend setup:
-
Make sure the redis service is installed, configured, and running on the harvester node.
-
Install python redis via pip within harvester python venv:
$ pip install redis
Harvester configuration:
-
In panda_harvester.cfg,
[fifo]
section, one should setfifoModule = pandaharvester.harvesterfifo.redis_fifo
andfifoClass = RedisFifo
to use the RedisFifo fifo plugin. This configuration is enough here if one sets up a standalone redis service on localhost with default port, without password nor db specified. -
If the redis service has specific host, port, db, and password, then respectively set
redisHost
,redisPort
,redisDB
,redisPassword
accordingly. -
E.g.
[fifo] fifoModule = pandaharvester.harvesterfifo.redis_fifo fifoClass = RedisFifo
Test and benchmark:
(TODO)
Getting started |
---|
Installation and configuration |
Testing and running |
Debugging |
Work with Middleware |
Admin FAQ |
Development guides |
---|
Development workflow |
Tagging |
Production & commissioning |
---|
Scale up submission |
Condor experiences |
Commissioning on the grid |
Production servers |
Service monitoring |
Auto Queue Configuration with CRIC |
SSH+RPC middleware setup |
Kubernetes section |
---|
Kubernetes setup |
X509 credentials |
AWS setup |
GKE setup |
CERN setup |
CVMFS installation |
Generic service accounts |
Advanced payloads |
---|
Horovod integration |