106 lines
3.2 KiB
Bash
106 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
# 简化版VPS性能对比测试脚本
|
|
# 用法: bash <(curl -sSL https://raw.githubusercontent.com/username/vpsbench/main/simple_bench.sh)
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# 安装工具
|
|
echo "安装测试工具..."
|
|
if command -v yum >/dev/null 2>&1; then
|
|
yum install -y sysbench bc >/dev/null 2>&1
|
|
elif command -v apt-get >/dev/null 2>&1; then
|
|
apt-get update >/dev/null 2>&1
|
|
apt-get install -y sysbench bc >/dev/null 2>&1
|
|
fi
|
|
|
|
# 获取系统信息
|
|
CPU_CORES=$(nproc)
|
|
CPU_MODEL=$(grep "model name" /proc/cpuinfo | head -1 | cut -d: -f2 | sed 's/^ *//' | cut -c 1-30)
|
|
HOSTNAME=$(hostname)
|
|
|
|
# 运行测试
|
|
echo "正在测试CPU性能..."
|
|
|
|
# 单核测试
|
|
SINGLE=$(sysbench cpu --threads=1 --cpu-max-prime=20000 run 2>/dev/null | grep "events per second" | awk '{printf "%.1f", $4}')
|
|
|
|
# 多核测试
|
|
MULTI=$(sysbench cpu --threads=$CPU_CORES --cpu-max-prime=20000 run 2>/dev/null | grep "events per second" | awk '{printf "%.1f", $4}')
|
|
|
|
# 浮点测试
|
|
echo "scale=2000; 4*a(1)" | bc -l -q >/dev/null 2>&1 &
|
|
FLOAT_PID=$!
|
|
sleep 3
|
|
if ps -p $FLOAT_PID > /dev/null; then
|
|
FLOAT_TIME=">3秒"
|
|
kill $FLOAT_PID 2>/dev/null
|
|
else
|
|
FLOAT_TIME="<3秒"
|
|
fi
|
|
|
|
# 显示对比结果
|
|
echo ""
|
|
echo -e "${BLUE}=========================================${NC}"
|
|
echo -e "${BLUE} VPS性能对比结果${NC}"
|
|
echo -e "${BLUE}=========================================${NC}"
|
|
echo "主机: $HOSTNAME"
|
|
echo "CPU: $CPU_MODEL"
|
|
echo "核心: $CPU_CORES"
|
|
echo ""
|
|
echo -e "${BLUE}性能指标${NC} ${BLUE}当前VPS${NC} ${BLUE}评级${NC}"
|
|
echo "-----------------------------------------"
|
|
|
|
# 单核性能对比
|
|
if (( $(echo "$SINGLE > 800" | bc -l) )); then
|
|
SINGLE_RATING="${GREEN}优秀${NC}"
|
|
elif (( $(echo "$SINGLE > 500" | bc -l) )); then
|
|
SINGLE_RATING="${YELLOW}良好${NC}"
|
|
else
|
|
SINGLE_RATING="${RED}一般${NC}"
|
|
fi
|
|
printf "单核性能: %-10s %-10s\n" "$SINGLE" "$SINGLE_RATING"
|
|
|
|
# 多核性能对比
|
|
EXPECTED_MULTI=$(echo "$SINGLE * $CPU_CORES * 0.8" | bc | awk '{printf "%.1f", $1}')
|
|
if (( $(echo "$MULTI > $EXPECTED_MULTI" | bc -l) )); then
|
|
MULTI_RATING="${GREEN}优秀${NC}"
|
|
elif (( $(echo "$MULTI > $(echo "$SINGLE * $CPU_CORES * 0.6" | bc)" | bc -l) )); then
|
|
MULTI_RATING="${YELLOW}良好${NC}"
|
|
else
|
|
MULTI_RATING="${RED}一般${NC}"
|
|
fi
|
|
printf "多核性能: %-10s %-10s\n" "$MULTI" "$MULTI_RATING"
|
|
|
|
# 浮点性能对比
|
|
if [ "$FLOAT_TIME" = "<3秒" ]; then
|
|
FLOAT_RATING="${GREEN}优秀${NC}"
|
|
else
|
|
FLOAT_RATING="${RED}一般${NC}"
|
|
fi
|
|
printf "浮点性能: %-10s %-10s\n" "$FLOAT_TIME" "$FLOAT_RATING"
|
|
|
|
echo "-----------------------------------------"
|
|
|
|
# 显示参考标准
|
|
echo ""
|
|
echo -e "${YELLOW}参考标准:${NC}"
|
|
echo -e "${GREEN}优秀${NC}: 单核>800, 多核效率>80%"
|
|
echo -e "${YELLOW}良好${NC}: 单核500-800, 多核效率60-80%"
|
|
echo -e "${RED}一般${NC}: 单核<500, 多核效率<60%"
|
|
|
|
# 保存结果用于后续对比
|
|
RESULTS_FILE="/tmp/vps_bench_$(date +%Y%m%d_%H%M%S).txt"
|
|
cat > $RESULTS_FILE << EOF
|
|
$HOSTNAME | $CPU_CORES核 | 单核:$SINGLE | 多核:$MULTI | 浮点:$FLOAT_TIME
|
|
EOF
|
|
|
|
echo ""
|
|
echo -e "结果已保存: ${GREEN}$RESULTS_FILE${NC}"
|
|
echo -e "对比其他VPS时查看这些文件即可"
|