Files
zeekay 8f5d0b9333 rebrand: rename weed→s3, strip all SeaweedFS/weed branding → Hanzo S3
Full internal rename — build-verified, every module green (root + s3-rdma-sidecar
+ telemetry/server + all test modules):
- Dirs: weed/→s3/ (main tree); cmd/weed-{db,sql}→cmd/s3-{db,sql};
  seaweed-volume→s3-volume; seaweedfs-rdma-sidecar→s3-rdma-sidecar;
  s3/mount/weedfs_*.go→s3fs_*.go (~113 path renames).
- Imports: github.com/hanzoai/s3/weed/ → /s3/ across 1700+ files.
- gRPC proto services Seaweed/SeaweedFiler/SeaweedMessaging/... → Hanzo*
  (8 services) via full protoc regeneration (correct descriptors, no sed-corruption).
- Brand SeaweedFS/Seaweed/seaweed → Hanzo/hanzo; internal X-Seaweedfs-* headers
  → X-Hanzo-*; .seaweedfs config dir → .s3.
- CLI is `s3`: go install github.com/hanzoai/s3/s3@latest | make install | Docker.
  install.sh rewritten as a Hanzo S3 installer.
- External forks github.com/seaweedfs/{raft,go-fuse,goexif,cockroachdb-parser}
  kept verbatim — immutable third-party module paths; NOTICE retained.

Residual (cosmetic, non-build): kafka loadtest test-proto package com.seaweedfs.loadtest.
2026-06-21 19:58:27 -07:00

270 lines
7.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 Hanzo:"
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 Hanzo 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 Hanzo RDMA engine integration:"
echo " 1. Use UCX with your Rust engine"
echo " 2. Configure appropriate transport layers"
echo " 3. Test with Hanzo RDMA sidecar"
echo " 4. Monitor performance and adjust settings"
}
# Execute main function
main "$@"