diff options
Diffstat (limited to 'seaweedfs-rdma-sidecar/docker/scripts/ucx-info.sh')
| -rwxr-xr-x | seaweedfs-rdma-sidecar/docker/scripts/ucx-info.sh | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/seaweedfs-rdma-sidecar/docker/scripts/ucx-info.sh b/seaweedfs-rdma-sidecar/docker/scripts/ucx-info.sh new file mode 100755 index 000000000..9bf287c6e --- /dev/null +++ b/seaweedfs-rdma-sidecar/docker/scripts/ucx-info.sh @@ -0,0 +1,269 @@ +#!/bin/bash + +# UCX Information and Testing Script +# Provides detailed information about UCX configuration and capabilities + +set -e + +echo "đ UCX (Unified Communication X) Information" +echo "=============================================" + +# Colors for output +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +print_section() { + echo -e "\n${BLUE}đ $1${NC}" + echo "----------------------------------------" +} + +print_info() { + echo -e "${GREEN}âšī¸ $1${NC}" +} + +print_warning() { + echo -e "${YELLOW}â ī¸ $1${NC}" +} + +# Function to check UCX installation +check_ucx_installation() { + print_section "UCX Installation Status" + + if command -v ucx_info >/dev/null 2>&1; then + print_info "UCX tools are installed" + + # Get UCX version + if ucx_info -v >/dev/null 2>&1; then + local version=$(ucx_info -v 2>/dev/null | head -1) + print_info "Version: $version" + fi + else + print_warning "UCX tools not found" + echo "Install with: apt-get install ucx-tools libucx-dev" + return 1 + fi + + # Check UCX libraries + local libs_found=0 + for lib in libucp.so libucs.so libuct.so; do + if ldconfig -p | grep -q "$lib"; then + libs_found=$((libs_found + 1)) + fi + done + + if [ "$libs_found" -eq 3 ]; then + print_info "All UCX libraries found (ucp, ucs, uct)" + else + print_warning "Some UCX libraries may be missing ($libs_found/3 found)" + fi +} + +# Function to show UCX device information +show_ucx_devices() { + print_section "UCX Transport Devices" + + if command -v ucx_info >/dev/null 2>&1; then + echo "Available UCX transports and devices:" + ucx_info -d 2>/dev/null || { + print_warning "Failed to get UCX device information" + return 1 + } + else + print_warning "ucx_info command not available" + return 1 + fi +} + +# Function to show UCX configuration +show_ucx_config() { + print_section "UCX Configuration" + + if command -v ucx_info >/dev/null 2>&1; then + echo "UCX configuration parameters:" + ucx_info -c 2>/dev/null | head -20 || { + print_warning "Failed to get UCX configuration" + return 1 + } + + echo "" + print_info "Key UCX environment variables:" + echo " UCX_TLS - Transport layers to use" + echo " UCX_NET_DEVICES - Network devices to use" + echo " UCX_LOG_LEVEL - Logging level (error, warn, info, debug, trace)" + echo " UCX_MEMTYPE_CACHE - Memory type caching (y/n)" + else + print_warning "ucx_info command not available" + return 1 + fi +} + +# Function to test UCX capabilities +test_ucx_capabilities() { + print_section "UCX Capability Testing" + + if command -v ucx_info >/dev/null 2>&1; then + print_info "Testing UCX transport capabilities..." + + # Check for RDMA transports + local ucx_transports=$(ucx_info -d 2>/dev/null | grep -i "transport\|tl:" || true) + + if echo "$ucx_transports" | grep -q "rc\|dc\|ud"; then + print_info "â
RDMA transports detected (RC/DC/UD)" + else + print_warning "No RDMA transports detected" + fi + + if echo "$ucx_transports" | grep -q "tcp"; then + print_info "â
TCP transport available" + else + print_warning "TCP transport not detected" + fi + + if echo "$ucx_transports" | grep -q "shm\|posix"; then + print_info "â
Shared memory transport available" + else + print_warning "Shared memory transport not detected" + fi + + # Memory types + print_info "Testing memory type support..." + local memory_info=$(ucx_info -d 2>/dev/null | grep -i "memory\|md:" || true) + if [ -n "$memory_info" ]; then + echo "$memory_info" | head -5 + fi + + else + print_warning "Cannot test UCX capabilities - ucx_info not available" + return 1 + fi +} + +# Function to show recommended UCX settings for RDMA +show_rdma_settings() { + print_section "Recommended UCX Settings for RDMA" + + print_info "For optimal RDMA performance with SeaweedFS:" + echo "" + echo "Environment Variables:" + echo " export UCX_TLS=rc_verbs,ud_verbs,rc_mlx5_dv,dc_mlx5_dv" + echo " export UCX_NET_DEVICES=all" + echo " export UCX_LOG_LEVEL=info" + echo " export UCX_RNDV_SCHEME=put_zcopy" + echo " export UCX_RNDV_THRESH=8192" + echo "" + + print_info "For development/debugging:" + echo " export UCX_LOG_LEVEL=debug" + echo " export UCX_LOG_FILE=/tmp/ucx.log" + echo "" + + print_info "For Soft-RoCE (RXE) specifically:" + echo " export UCX_TLS=rc_verbs,ud_verbs" + echo " export UCX_IB_DEVICE_SPECS=rxe0:1" + echo "" +} + +# Function to test basic UCX functionality +test_ucx_basic() { + print_section "Basic UCX Functionality Test" + + if command -v ucx_hello_world >/dev/null 2>&1; then + print_info "UCX hello_world test available" + echo "You can test UCX with:" + echo " Server: UCX_TLS=tcp ucx_hello_world -l" + echo " Client: UCX_TLS=tcp ucx_hello_world <server_ip>" + else + print_warning "UCX hello_world test not available" + fi + + # Check for other UCX test utilities + local test_tools=0 + for tool in ucx_perftest ucp_hello_world; do + if command -v "$tool" >/dev/null 2>&1; then + test_tools=$((test_tools + 1)) + print_info "UCX test tool available: $tool" + fi + done + + if [ "$test_tools" -eq 0 ]; then + print_warning "No UCX test tools found" + echo "Consider installing: ucx-tools package" + fi +} + +# Function to generate UCX summary +generate_summary() { + print_section "UCX Status Summary" + + local ucx_ok=0 + local devices_ok=0 + local rdma_ok=0 + + # Check UCX availability + if command -v ucx_info >/dev/null 2>&1; then + ucx_ok=1 + fi + + # Check devices + if command -v ucx_info >/dev/null 2>&1 && ucx_info -d >/dev/null 2>&1; then + devices_ok=1 + + # Check for RDMA + if ucx_info -d 2>/dev/null | grep -q "rc\|dc\|ud"; then + rdma_ok=1 + fi + fi + + echo "đ UCX Status:" + [ "$ucx_ok" -eq 1 ] && print_info "â
UCX Installation: OK" || print_warning "â UCX Installation: Missing" + [ "$devices_ok" -eq 1 ] && print_info "â
UCX Devices: Detected" || print_warning "â UCX Devices: Not detected" + [ "$rdma_ok" -eq 1 ] && print_info "â
RDMA Support: Available" || print_warning "â ī¸ RDMA Support: Limited/Missing" + + echo "" + if [ "$ucx_ok" -eq 1 ] && [ "$devices_ok" -eq 1 ]; then + print_info "đ UCX is ready for SeaweedFS RDMA integration!" + + if [ "$rdma_ok" -eq 1 ]; then + print_info "đ Real RDMA acceleration is available" + else + print_warning "đĄ Only TCP/shared memory transports available" + fi + else + print_warning "đ§ UCX setup needs attention for optimal performance" + fi +} + +# Main execution +main() { + check_ucx_installation + echo "" + + show_ucx_devices + echo "" + + show_ucx_config + echo "" + + test_ucx_capabilities + echo "" + + show_rdma_settings + echo "" + + test_ucx_basic + echo "" + + generate_summary + + echo "" + print_info "For SeaweedFS RDMA engine integration:" + echo " 1. Use UCX with your Rust engine" + echo " 2. Configure appropriate transport layers" + echo " 3. Test with SeaweedFS RDMA sidecar" + echo " 4. Monitor performance and adjust settings" +} + +# Execute main function +main "$@" |
