# Phase 16.2:性能优化分析 **测试时间**:2026-06-17 22:30 **目标**:将传输速度从780 KB/s提升到21-36 MB/s ## 性能瓶颈分析 ⭐⭐⭐⭐⭐ **当前配置**: - Window size: 2MB (local_window = 2097152) - poll timeout: 10ms (每iteration) - max_poll_iterations: 5000 (50s总timeout) - stdin timeout: 3000 iterations (30s) **瓶颈1:poll iteration overhead ⭐⭐⭐⭐⭐** - 每iteration: 10ms poll timeout - 总iteration: 5000次 - 每iteration开销: log输出 + try_wait() check - **估算开销**: 5000 iterations * 10ms = 50秒(理论最大) - **实际开销**: 20MB传输用了24秒,说明poll overhead占用了大量时间 **瓶颈2:Window size太小 ⭐⭐⭐⭐** - OpenSSH默认: 2MB - 实际测试: 20MB传输用了24秒 - **问题**: Window size限制了单次传输的数据量 - **解决方案**: 增加到16MB或32MB **瓶颈3:AES-CTR encryption overhead ⭐⭐⭐** - AES-256-CTR加密/解密: 每packet需要计算 - MAC计算: HMAC-SHA256 (每packet) - **估算**: 每packet约100-200us开销 - **影响**: 780 KB/s可能受encryption限制 **瓶颈4:sshbuf zero-copy性能 ⭐⭐** - sshbuf实现: 339行 - **问题**: 未进行性能测试 - **可能**: zero-copy优化不足 ## 性能优化方案 ⭐⭐⭐⭐⭐ **方案1:减少poll iteration overhead(优先 ⭐⭐⭐⭐⭐)** - 增加poll timeout: 从10ms改到100ms - 减少iteration次数: 从5000改到500 - 减少log频率: 从每10次改到每50次 - **预期效果**: 减少50-80% poll overhead **方案2:增加Window size ⭐⭐⭐⭐** - 从2MB增加到16MB或32MB - 动态调整Window size(根据传输速度) - **预期效果**: 提升单次传输数据量 **方案3:优化encryption ⭐⭐⭐** - 使用AES-NI硬件加速(检查是否已启用) - 减少MAC计算频率(批量计算) - **预期效果**: 减少encryption overhead **方案4:sshbuf性能测试 ⭐⭐** - 编写benchmark测试sshbuf性能 - 对比临时buffer vs zero-copy - **预期效果**: 验证zero-copy优势 ## 实施计划 ⭐⭐⭐⭐⭐ **Phase 16.2.1:减少poll overhead(立即实施)** - 修改poll timeout: 10ms → 100ms - 修改iteration次数: 5000 → 500 - 修改log频率: 每10次 → 每50次 - **预期传输速度**: 从780 KB/s提升到10-20 MB/s **Phase 16.2.2:增加Window size** - 从2MB增加到16MB - 测试传输速度变化 **Phase 16.2.3:encryption优化** - 检查AES-NI是否启用 - 如果未启用,添加AES-NI支持 --- **立即实施Phase 16.2.1**(减少poll overhead) --- **最后更新**:2026-06-17 22:30