SpeedForce is a framework for distributed parallel computing. It is developed by using C++ programming language. It's simple, but powerful. It has dozens of instructions set which is very user-friendly. SpeedForce supports a variety of operating systems, like Linux (Ubuntu, Fedora, CentOS etc.), Windows Subsystem for Linux, Android and macOS. It also supports multiple users and multiple tasks.
Speedforce includes three modules: process management, information center, and task management. The process management is mainly used to start or kill processes. It's basically executed in the background. The information center provides the message notification of task submission, file transfer, task execution etc. The task management involves all management related to executable programs, including task execution, information feedback, and task monitoring. In addition, SpeedForce has a few more functions as well. For instance, initialization function could allow users to save significant time on deployment of SpeedForce. Speedforce also can easily add local users, as well as add users on other nodes remotely.
xxxxxxxxxx
.
├── audio
│ ├── hack.mp3
│ ├── info.mp3
│ ├── robot_executed.mp3
│ ├── robot_msg_receive.mp3
│ └── word_print.mp3
├── config.xml #configuration file for multiple nodes
├── msg.xml #template file for messages
└── sf #main executable program of SpeedForce
xxxxxxxxxx
sudo apt install ssh
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub -p port username@192.168.x.xxx
xxxxxxxxxx
./sf gen_node nodexxx #the default user is also automatically established
xxxxxxxxxx
./sf init local #local initialization
./sf init node0 node1 node2 ... #remote initialization
The initialization would generate the programs of the three main modules: process management (sfroot), information center (sfinfo) and task management (sfexec). The remote initialization is performed by process management module. The sfroot need start in the background before remote initialization.
xxxxxxxxxx
./sf env
#node name:node8
#user name:speedforce
#root path:/home/ac/SpeedForce
#user path:/home/ac/SpeedForce/user/speedforce
xxxxxxxxxx
./sf addu testxxx #add local user
./sf addu testxxx node1 node2 node3 ... #add user remotely on multi-nodes
xxxxxxxxxx
./sf start nodexxx process_name #start process
./sf kill nodexxx process_name #kill process
xxxxxxxxxx
./sfinfo info
xxxxxxxxxx
./sfexec exec
There are several types of task, including txt, file, root_file, cmd, exe. Also, there are some additional types of task for batch distributed computing, like bat0, bat1, bat2, bat3.
xxxxxxxxxx
./sf send nodexxx msg_type content
./sf send node9 txt "Hello, SpeedForce!"
./sf send node8 root_file sf
./sf send node6 cmd "ls -lt"
./sf send node11 file test.sh
./sf send node11 exe test.sh
Batch computing
bat0: multi-nodes execute the same script run.sh; bat1: the master node will execute the script continue .sh when other multi-nodes have completed execution of the script run.sh; bat2: each node executes its own script; bat3: the master node will execute the script continue.sh when other multi-nodes have completed execution of their own scripts.
xxxxxxxxxx
./sf batch run.sh node7 node9 node11 #bat0
./sf batch run.sh node7 node9 node11 continue.sh #bat1
./sf batch test1.sh node5 test2.sh node3 test5.sh node9 #bat2
./sf batch test1.sh node5 test2.sh node3 test5.sh node9 continue.sh #bat3
xxxxxxxxxx
./sf audio on/off #turn on/off audio for messages
./sf music #play hack.mp3
./sf clear_mem #clear shared memory
./sf catlog nodexxx msgid #cat the log of some task
©2021 SpeedForce. Developed by Cheng Wang. The last update time: 16:35, 2020-06-09