import worker code
This commit is contained in:
parent
61654a06e8
commit
8831040043
64 changed files with 20853 additions and 1 deletions
101
src/worker/README.md
Normal file
101
src/worker/README.md
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
# Cross-Platform Xcecd Process
|
||||
|
||||
This is a cross-platform process manager implementation in C that supports both Linux and Windows platforms. The xcecd provides the following features:
|
||||
|
||||
- Sending status to the remote controller module at port 6789 and receive job requests
|
||||
- Maintains a configurable thread pool for request processing
|
||||
- Periodically collects and updates system resource status
|
||||
- Manages child processes spawned from received commands
|
||||
- Caches job status information
|
||||
- Uses Unix Domain Sockets for communication between the main process and worker processes
|
||||
|
||||
## Building
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- C compiler with C11 support
|
||||
- Windows: Visual Studio
|
||||
- Linux: GCC and development tools
|
||||
|
||||
### Build Instructions
|
||||
|
||||
On Linux
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
On Windows
|
||||
```bash
|
||||
nmake
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The xcecd can be configured through the following parameters in `main.c`:
|
||||
|
||||
- `thread_pool_size`: Number of threads in the thread pool (default: 4)
|
||||
- `resource_update_interval`: Interval for updating system resource status in seconds (default: 1)
|
||||
- `job_status_update_interval`: Interval for updating job status in seconds (default: 1)
|
||||
- `port`: Port number to listen on (default: 7869)
|
||||
- `acct_file_path`: Path to the accounting file (default: `/tmp/xcecd.acct`)
|
||||
- `log_file_path`: Path to the log file (default: `/tmp/xcecd.log`)
|
||||
- `domain_sock_path`: Path to the Unix Domain Socket file (default: `/tmp/xcecd.sock`)
|
||||
- `remote_host`: Remote server address (default: `lchen02`)
|
||||
- `remote_port`: Remote server port (default: 6789)
|
||||
- `update_interval`: Interval for sending status updates to the remote server (default: 1 second)
|
||||
|
||||
## Usage
|
||||
|
||||
### Starting the Xcecd
|
||||
|
||||
On Windows:
|
||||
```bash
|
||||
xcecd.exe
|
||||
```
|
||||
|
||||
On Linux:
|
||||
```bash
|
||||
./xcecd
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
1. **Cross-Platform Support**
|
||||
- Works on both Windows and Linux
|
||||
- Abstracts platform-specific implementations
|
||||
|
||||
2. **Thread Pool**
|
||||
- Configurable number of worker threads
|
||||
- Efficient request handling
|
||||
|
||||
3. **System Monitoring**
|
||||
- CPU usage monitoring
|
||||
- Memory usage monitoring
|
||||
- Disk space monitoring
|
||||
|
||||
4. **Process Management**
|
||||
- Spawns child processes for received commands
|
||||
- Tracks process status
|
||||
- Manages process lifecycle
|
||||
|
||||
5. **Network Communication**
|
||||
- TCP socket-based communication
|
||||
- Simple text-based protocol
|
||||
|
||||
6. **Unix Domain Socket Communication**
|
||||
- Uses Unix Domain Sockets for communication between the main process and worker processes
|
||||
|
||||
## Architecture
|
||||
|
||||
The xcecd is composed of several key components:
|
||||
|
||||
- **Main Process**: Coordinates all components and manages the lifecycle
|
||||
- **Thread Pool**: Handles concurrent request processing
|
||||
- **System Monitor**: Collects and updates system resource information
|
||||
- **Process Manager**: Manages child processes and their status
|
||||
- **Network Handler**: Handles network communication and request receiving
|
||||
- **Resource Sync**: Synchronizes and aggregates resource collection thread, system monitor, and job information
|
||||
|
||||
## Contributing
|
||||
|
||||
Feel free to submit issues and enhancement requests!
|
||||
Loading…
Add table
Add a link
Reference in a new issue