Overview
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.
Configuration Subsystem Advantages
-
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
Configuration Methods
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"
Understanding the JSON Schema
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 falseNumbers: integers, floating-pointStrings: text values with optional patternsEnums: specific allowed valuesObjects: nested configuration groups
-
Constraints and Validation Rules - The schema enforces:
Minimum and maximum value constraintsAllowed value lists (Enums)String patterns using regexRequired vs. optional parametersDefault 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 toolsvisit jsonschemavalidator.netPaste the JSON schema (from xlio_config_schema.json)Paste your configuration fileReview 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 schemaGet instant feedback on invalid valuesUse autocompletes to discover available parametersView inline documentation for each parameter
Getting Started
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
Support and Resources
-
JSON Schema File:
src/core/config/descriptor_providers/xlio_config_schema.json -
Legacy Mappings:
src/core/config/mappings.py
Last updated: