XLIO - Configuration Subsystem
The XLIO Configuration Subsystem is a modern, structured approach to configuring XLIO using JSON files. It provides validation, early error detection, and a logical hierarchical organization of settings.
The Configuration Subsystem is currently in BETA.
While fully functional, certain features may be subject to change in future releases.
Type Safety: Validates configuration values before application startup, catching typos and invalid entries early
Schema-Driven: Self-documenting JSON schema with built-in descriptions and constraints for every parameter
Hierarchical: Logically grouped and nested settings for easier management
Flexible: Supports both file-based and inline configuration methods
Performance: Validation occurs at startup with no runtime overhead
Future Proof: The strategic direction for XLIO configuration going forward
Prerequisites
To enable the new configuration subsystem, set the following environment variable:
export XLIO_USE_NEW_CONFIG=1
JSON Configuration File (Recommended)
XLIO can read configuration from a JSON file that conforms to the defined schema.
Default location - /etc/libxlio_config.json
Custom location - Set the XLIO_CONFIG_FILE environment variable:
export XLIO_CONFIG_FILE=/path/to/my/xlio_config.json
Inline Configuration
For quick testing or single-parameter changes, use the XLIO_INLINE_CONFIG environment variable with comma-separated key-value pairs:
export XLIO_INLINE_CONFIG="core.resources.memory_limit=4294967296, monitor.log.file_path=/tmp/xlio.log, network.protocols.tcp.nodelay.enable=true"
The JSON Schema serves as a blueprint for valid XLIO configurations, defining structure, types, and constraints for all parameters.
Schema Location: src/core/config/descriptor_providers/xlio_config_schema.json
Schema Components
Parameter Structure - The schema defines a hierarchical structure for configuration parameters:
"network": {"protocols": {
"tcp": {
"nodelay": {
"enable": { "type": "boolean" }
}
}
}
}
Data Types:
Booleans: true or false
Numbers: integers, floating-point
Strings: text values with optional patterns
Enums: specific allowed values
Objects: nested configuration groups
Constraints and Validation Rules - The schema enforces:
Minimum and maximum value constraints
Allowed value lists (Enums)
String patterns using regex
Required vs. optional parameters
Default values
Documentation - Each parameter includes human-readable descriptions explaining its purpose and usage
Configuration Categories
Group | Purpose | Examples |
Core | System behavior and resources | Memory limits, signal handling |
Network | Network protocol settings | TCP/UDP configuration, timestamps |
Hardware | Hardware features | Striding RQ, LRO/TSO, TLS offload |
Performance | Optimization settings | Ring allocation, polling, completion queues |
Applications | Application-specific tuning | Nginx optimizations |
Monitor | Logging and diagnostics | Log levels, file paths, stats directory |
Validating Your Configuration
Using online tools
visit jsonschemavalidator.net
Paste the JSON schema (from xlio_config_schema.json)
Paste your configuration file
Review validation results and error messages
IDE Integration - Modern IDEs can use the JSON schema for real-time validation and autocomplete:
Configure your IDE to use the XLIO JSON schema
Get instant feedback on invalid values
Use autocompletes to discover available parameters
View inline documentation for each parameter
Quick Start
Quick Start Guide - Get up and running in minutes
Most common configuration scenarios
Copy-paste examples for immediate use
Complete Documentation
Configuration Reference - Complete parameter documentation
All available parameters with types, defaults, and legacy mappings
Advanced configuration patterns and validation rules
Migration Support
Migration Guide - Move from legacy environment variables
Step-by-step migration process
Common issues and troubleshooting
JSON Schema File:
src/core/config/descriptor_providers/xlio_config_schema.jsonLegacy Mappings:
src/core/config/mappings.py