收起左侧

你的飞牛NAS性能如何?来跑个分看看吧~

32
回复
4838
查看
[ 复制链接 ]

7

主题

18

回帖

165

牛值

社区共建团

2024-12-25 22:50:05 显示全部楼层 阅读模式

[i=s] 本帖最后由 大地主 于 2025-1-8 17:25 编辑 [/i]<br /> <br />

今天在飞牛群看到有人提问飞牛能不能跑个分看看,这需求有点意思。现在电脑有跑分排行榜,手机有跑分,服务器也有跑分,有的nas也有跑分,但飞牛还没有,那就手搓一个飞牛的跑分排行榜。

#!/bin/bash

# 检查操作系统类型是否为 Debian
os_check=$(grep '^ID=' /etc/os-release | awk -F '=' '{print $2}' | tr -d '"')
if [[ "$os_check" != "debian" ]]; then
    echo "检测到非 Debian 系统。该脚本仅支持在 Debian 系统上运行。"
    exit 1
fi

# 检查是否为命令行交互式环境
if [[ ! -t 0 ]]; then
    echo "检测到非交互式环境。该脚本仅支持通过命令行运行。"
    exit 1
fi

# 获取唯一标识符
generate_unique_id() {
    if [[ -f /etc/machine-id ]]; then
        cat /etc/machine-id
    else
        cpu_info=$(lscpu | grep -m 1 "Model name" | awk -F ':' '{print $2}' | xargs)
        memory_info=$(free -h | awk '/^Mem:/ {print $2}')
        disk_info=$(lsblk -d -o NAME,SIZE,MODEL | grep -E 'disk' | md5sum | awk '{print $1}')
        echo -n "${cpu_info}_${memory_info}_${disk_info}" | md5sum | awk '{print $1}'
    fi
}

# 定义基准值(整数)
baseline_cpu=1000         # 每秒事件
baseline_memory=5000      # MiB/sec
baseline_disk_write=32000 # IOPS(4 线程)

# 定义权重(百分比)
weight_cpu=40
weight_memory=30
weight_disk_write=30

# 根据权重因子计算评分
calculate_score() {
    actual=$1
    baseline=$2
    weight=$3

    if (( actual >= baseline )); then
        base_score=$(( 1000 + (actual - baseline) * 1000 / baseline ))
    else
        base_score=$(( actual * 1000 / baseline ))
    fi

    echo $(( base_score * weight / 100 ))
}

# 检查并安装依赖
if ! command -v sysbench &> /dev/null; then
    echo "sysbench 未安装,正在安装..."
    sudo apt update
    sudo apt install -y sysbench || { echo "安装 sysbench 失败"; exit 1; }
fi

if ! command -v fio &> /dev/null; then
    echo "fio 未安装,正在安装..."
    sudo apt update
    sudo apt install -y fio || { echo "安装 fio 失败"; exit 1; }
fi

if ! command -v jq &> /dev/null; then
    echo "jq 未安装,正在安装..."
    sudo apt update
    sudo apt install -y jq || { echo "安装 jq 失败"; exit 1; }
fi

# 检查是否重复运行
last_run_file="/tmp/benchmark_last_run"
if [[ -f $last_run_file ]]; then
    last_run_time=$(cat $last_run_file)
    current_time=$(date +%s)
    if (( current_time - last_run_time < 120 )); then
        echo "检测到 2 分钟内已运行过测试,请稍后再试。"
        exit 1
    fi
fi
date +%s > $last_run_file

# 获取硬件信息
echo "================= 硬件信息 ================="
cpu_model=$(lscpu | grep "Model name" | head -n 1 | sed 's/Model name:\s*//;s/\s@.*//')  # 提取 CPU 型号
cpu_cores=$(lscpu | grep "^CPU(s):" | awk '{print $2}')
cpu_threads=$(lscpu | grep "^Thread(s) per core:" | awk '{print $4}')
memory_info=$(free -h | awk '/^Mem:/ {print $2}')  # 只提取总内存大小
unique_id=$(generate_unique_id)
echo "CPU 型号:$cpu_model"
echo "CPU 核心数:$cpu_cores"
echo "CPU 线程数:$cpu_threads"
echo "总内存:$memory_info"
echo "唯一标识符:$unique_id"
echo "========================================="

# 性能测试

# CPU 性能测试
echo "开始 CPU 性能测试..."
num_threads=$(lscpu | grep "^CPU(s):" | awk '{print $2}')
cpu_test=$(sysbench cpu --cpu-max-prime=20000 --threads=$num_threads run) || { echo "CPU 性能测试失败"; exit 1; }
cpu_events=$(echo "$cpu_test" | grep "events per second:" | awk '{print $4}')
cpu_events=$(printf "%.0f" "$cpu_events")  # 转换为整数
cpu_score=$(calculate_score $cpu_events $baseline_cpu $weight_cpu)
echo "CPU 性能测试完成,每秒事件:$cpu_events,评分:$cpu_score"

# 内存性能测试(多线程)
echo "开始内存性能测试(多线程)..."
memory_threads=4  # 定义使用的线程数
memory_test=$(sysbench memory --threads=$memory_threads run) || { echo "内存性能测试失败"; exit 1; }
memory_bandwidth=$(echo "$memory_test" | grep -oP '\(\K[0-9.]+(?= MiB/sec)')  # 提取带宽
memory_bandwidth=$(printf "%.0f" "$memory_bandwidth")  # 转换为整数
memory_score=$(calculate_score $memory_bandwidth $baseline_memory $weight_memory)
echo "内存性能测试完成,带宽:$memory_bandwidth MiB/sec,评分:$memory_score"

# 硬盘性能测试(随机写入)
echo "开始硬盘性能测试(随机写入)..."
fio_write_test=$(fio --name=write_test --ioengine=libaio --rw=randwrite --bs=4k --size=1G --num**s=8 --iodepth=32 --runtime=30s --time_based --output-format=json)
fio_write_iops=$(echo "$fio_write_test" | jq '.**s[] | .write.iops' | awk '{sum += $1} END {print int(sum)}')  # 转换为整数
disk_score=$(calculate_score $fio_write_iops $baseline_disk_write $weight_disk_write)
echo "硬盘随机写入测试完成,IOPS:$fio_write_iops,评分:$disk_score"

# 清理临时文件
rm -f write_test.*

# 计算总评分
total_score=$(awk "BEGIN {printf \"%.2f\", $cpu_score + $memory_score + $disk_score}")

# 输出测试结果
echo ""
echo "================= 测试结果 ================="
echo "CPU 每秒事件:$cpu_events,评分:$cpu_score"
echo "内存带宽:$memory_bandwidth MiB/sec,评分:$memory_score"
echo "硬盘随机写入 IOPS:$fio_write_iops,评分:$disk_score"
echo "总评分:$total_score"
echo "唯一标识符:$unique_id"
echo "==========================================="

# 提示用户是否上传评分
echo -n "是否上传评分到排行榜(输入 1 同意,0 不同意,输入后按回车键): "
read upload_choice

if [[ "$upload_choice" == "1" ]]; then
    # 输入提交人名字
    while true; do
        echo -n "请输入您的名字(不超过 10 个汉字)输入后按回车键: "
        read submitter_name
        if [[ $(echo -n "$submitter_name" | wc -m) -le 30 ]]; then
            break
        else
            echo "名字长度超过限制,请重新输入。"
        fi
    done

    # 获取一次性 Token
    token_response=$(curl -s "https://www.dadizhu.cn/api/get_token.php")
    token=$(echo "$token_response" | jq -r '.token')

    if [[ -z "$token" || "$token" == "null" ]]; then
        echo "获取 Token 失败,无法上传数据。"
        exit 1
    fi

    # 准备数据
    hardware_info=$(jq -n --arg cpu_model "$cpu_model" \
        --arg cpu_cores "$cpu_cores" \
        --arg cpu_threads "$cpu_threads" \
        --arg memory_info "$memory_info" \
        '{cpu_model: $cpu_model, cpu_cores: $cpu_cores, cpu_threads: $cpu_threads, memory_info: $memory_info}')

    payload=$(jq -n --arg submitter_name "$submitter_name" \
        --argjson hardware_info "$hardware_info" \
        --arg cpu_score "$cpu_events" \
        --arg memory_score "$memory_bandwidth" \
        --arg disk_write_score "$fio_write_iops" \
        --arg unique_id "$unique_id" \
        '{submitter_name: $submitter_name, hardware_info: $hardware_info, cpu_score: $cpu_score, memory_score: $memory_score, disk_write_score: $disk_write_score, unique_id: $unique_id}')

    # 上传数据
    response=$(curl -s -X POST -H "Content-Type: application/json" -H "X-TOKEN: $token" -d "$payload" "https://www.dadizhu.cn/api/benchmark.php")

    # 解析并检查响应
    response_status=$(echo "$response" | jq -r '.status')

    if [[ "$response_status" == "success" ]]; then
        echo "上传成功,请到 www.dadizhu.cn 查看排名。"
    else
        echo "上传失败,服务器响应: $response"
        echo "请重新测试后再尝试上传。"
    fi
else
    echo "用户选择不上传评分。"
fi

上面是跑分用的脚本,用于测试飞牛的cpu、内存、硬盘性能,并提交到跑分排行榜。脚本不含任何有害成分,也不会修改系统的任何设置,可以复制给ai,让ai检测下是否有危害性代码。

在我的文件,任意地方新建一个文件夹,或者在现有的文件夹里上传一个benchmark.sh的空白文件。空白文件可以在我的电脑任意地方右键新建txt文档,然后名字改成benchmark.sh上传到飞牛。双击打开文件,把上面的代码复制进去以后保存。右键点击文件,详细信息里复制原始路径,比如我的是/vol2/1000/python/benchmark.sh。

打开飞牛应用中心,安装gotty,安装过程中会让设置一个账号密码,用于打开gotty,不是让输入飞牛的账号密码,设置一个自己容易记住的账号密码即可。

在第一行输入你的飞牛管理员账号,然后按回车。password输入你的飞牛管理员密码,然后按回车,这里你输入的密码是不显示的,正常输入密码按回车即可。

然后输入 sudo -i,按回车。再次输入你的管理员密码。然后输入chmod +x /vol2/1000/python/benchmark.sh,把文件名修改为上一步你获取的原始路径,然后按回车键。

然后再输入/vol2/1000/python/benchmark.sh,按回车键,开始性能测试。

如果这里报错没有权限,如上图所示,可以重复上面的步骤。先把第一步的代码重新复制粘贴到benchmark.sh文件,然后保存。 再重新执行chmod +x /vol2/1000/python/benchmark.sh(chmod后面有个空格 空格后面是+x 后面还有个空格 再加路径),再输入/vol2/1000/python/benchmark.sh即可。

性能测试完成后,可以选择是否上传评分到排行榜,同意的话就按1回车,输入一个你的名字(和微信的昵称一样,不是让你输入真实姓名。),然后按回车键,这样就上传跑分到排行榜了。

然后打开https://www.dadizhu.cn/feiniupaofenpaihangbang/ 就能看到排行榜,如果你的排名靠后,页面里看不到,那就输入你刚填写的名字,进行搜索,查看自己的排名。页面简陋,随后优化。

收藏
送赞 6
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

2

回帖

0

牛值

江湖小虾

2025-1-9 18:24:44 显示全部楼层

我的也提示硬盘跑分0,好像有东西没装,不知道怎么装

image.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

17

主题

51

回帖

0

牛值

fnOS系统内测组

2024-12-26 07:30:07 显示全部楼层
我想问问楼主。您能看看飞牛支持睿频吗?

1

主题

7

回帖

0

牛值

江湖小虾

2024-12-26 09:32:47 显示全部楼层
root@FNAS:~# chmod +x /vol1/1000/111/benchmark.sh
root@FNAS:~# /vol1/1000/111/benchmark.sh
-bash: /vol1/1000/111/benchmark.sh: cannot execute: required file not found


我这里报错了呢
文件路径不对 看下你复制路径的时候是不是选错了  详情 回复
2024-12-26 21:29

7

主题

18

回帖

165

牛值

社区共建团

2024-12-26 21:29:21 楼主 显示全部楼层
文件路径不对 看下你复制路径的时候是不是选错了

2

主题

6

回帖

0

牛值

fnOS系统内测组

2024-12-28 13:10:44 显示全部楼层
跑了硬盘0分啥情况
开始硬盘性能测试(随机写入)...
fio: unrecognized option '--num**s=8'
fio: unrecognized option '--num**s=8'
jq: error: syntax error, unexpected '*' (Unix shell quoting issues?) at <top-level>, line 1:
.**s[] | .write.iops  
jq: 1 compile error
硬盘随机写入测试完成,IOPS:0,评分:0
[md]我的也提示硬盘跑分0,好像有东西没装,不知道怎么装 ![image.png](data/attachment/forum/202501/09/182417xmids2vnttt0vjwv.png "image.png") [/md]  详情 回复
2025-1-9 18:24
还没遇到过这问题 我排查下  详情 回复
2025-1-8 17:24

0

主题

1

回帖

0

牛值

江湖小虾

2025-1-7 20:16:02 显示全部楼层
lxfox@NiuNiu:~$ chmod +x /vol1/1000/zyoong/benchmark.sh
lxfox@NiuNiu:~$
lxfox@NiuNiu:~$ chmod +x /vol1/1000/zyoong/benchmark.sh
lxfox@NiuNiu:~$
不知哪出问题,运行不了
文件格式不对,从Windows直接上传可能会出现 我们可以通过vi编辑器来查看文件的format格式。步骤如下: 1.首先用vi命令打开文件 [root@localhost test]# vi test.sh    2.在vi命令模式中使用 :set ff 命令 可以看  详情 回复
2025-1-19 09:33
你肯定路径用复制粘贴的,他吧路径的vol1识别成vo11了 你把/前面的11删了重新手动打l1就行了 不用管他是不是显示成11了 手动打完就成功了 两个路径都是  详情 回复
2025-1-16 19:42

7

主题

18

回帖

165

牛值

社区共建团

2025-1-8 17:24:49 楼主 显示全部楼层
还没遇到过这问题 我排查下
[md]哈哈,你的脚本代码被敏感处理了,硬盘检测那段,**.**s**处理成**.**s**了! [/md]  详情 回复
2025-1-11 22:28

7

主题

77

回帖

0

牛值

fnOS系统内测组

2025-1-9 10:56:31 显示全部楼层
还能这样,厉害

1

主题

4

回帖

0

牛值

江湖小虾

2025-1-10 11:28:53 显示全部楼层
666,大神们会玩啊

3

主题

4

回帖

0

牛值

fnOS系统内测组

2025-1-10 12:04:45 显示全部楼层
上传失败,服务器响应: {"error":"\u786c\u76d8\u5206\u6570\u8d85\u51fa\u5408\u7406\u8303\u56f4"}
请重新测试后再尝试上传。
[md]上传失败![image.png](data/attachment/forum/202501/10/120929y6x**1nzfyh499x.png "image.png")xh [/md]  详情 回复
2025-1-10 12:10

3

主题

4

回帖

0

牛值

fnOS系统内测组

2025-1-10 12:10:36 显示全部楼层

[i=s] 本帖最后由 cszdlq 于 2025-1-10 12:14 编辑 [/i]<br /> <br />

上传失败

42.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

4

主题

93

回帖

0

牛值

fnOS系统内测组

飞牛百度网盘玩家

2025-1-10 17:40:17 显示全部楼层
搞定了 感谢分享
让我们一起实现梦想

0

主题

76

回帖

0

牛值

初出茅庐

2025-1-11 22:28:39 显示全部楼层

[i=s] 本帖最后由 流氓丶R 于 2025-1-11 22:33 编辑 [/i]<br /> <br />

哈哈,你的脚本代码被敏感处理了,硬盘检测那段,.jo bs处理成 .**s了!

0

主题

23

回帖

0

牛值

江湖小虾

2025-1-12 08:57:02 显示全部楼层
上传失败,还有硬盘评分0
================= 测试结果 =================
CPU 每秒事件:1689,评分:675
内存带宽:10048 MiB/sec,评分:602
硬盘随机写入 IOPS:0,评分:0
总评分:1277.00
唯一标识符:
===========================================
是否上传评分到排行榜(输入 1 同意,0 不同意,输入后按回车键): 1
请输入您的名字(不超过 10 个汉字)输入后按回车键: 天山黎明日月辉
上传失败,服务器响应: {"error":"\u786c\u76d8\u5206\u6570\u8d85\u51fa\u5408\u7406\u8303\u56f4"}
请重新测试后再尝试上传。

0

主题

53

回帖

0

牛值

初出茅庐

2025-1-12 14:23:18 显示全部楼层
有意思, 我来玩玩

0

主题

1

回帖

0

牛值

江湖小虾

2025-1-14 00:05:20 显示全部楼层
我的也是上传失败,不过总分出来了
================= 硬件信息 =================
CPU 型号:Intel(R) Core(TM) i3-3120M CPU
CPU 核心数:4
CPU 线程数:2
总内存:1.7Gi
唯一标识符:e5b541cf638c4883b737ea66ac5530c2
=========================================
开始 CPU 性能测试...
CPU 性能测试完成,每秒事件:866,评分:346
开始内存性能测试(多线程)...
内存性能测试完成,带宽:9574 MiB/sec,评分:574
开始硬盘性能测试(随机写入)...
fio: unrecognized option '--num**s=8'
fio: unrecognized option '--num**s=8'
jq: error: syntax error, unexpected '*' (Unix shell quoting issues?) at <top-level>, line 1:
.**s[] | .write.iops
jq: 1 compile error
硬盘随机写入测试完成,IOPS:0,评分:0

================= 测试结果 =================
CPU 每秒事件:866,评分:346
内存带宽:9574 MiB/sec,评分:574
硬盘随机写入 IOPS:0,评分:0
总评分:920.00

7

主题

33

回帖

0

牛值

初出茅庐

2025-1-15 13:50:21 显示全部楼层
上传失败,服务器响应: {"error":"CPU \u5206\u6570\u8d85\u51fa\u5408\u7406\u8303\u56f4"}
请重新测试后再尝试上传。

7

主题

9

回帖

0

牛值

fnOS系统内测组

2025-1-16 19:42:03 显示全部楼层
你肯定路径用复制粘贴的,他吧路径的vol1识别成vo11了 你把/前面的11删了重新手动打l1就行了  不用管他是不是显示成11了 手动打完就成功了 两个路径都是

3

主题

28

回帖

0

牛值

江湖小虾

2025-1-17 15:24:02 显示全部楼层
厉害,还可以这样操作

4

主题

38

回帖

0

牛值

初出茅庐

2025-1-19 09:33:49 显示全部楼层
文件格式不对,从Windows直接上传可能会出现
我们可以通过vi编辑器来查看文件的format格式。步骤如下:
1.首先用vi命令打开文件
[root@localhost test]# vi test.sh   
2.在vi命令模式中使用 :set ff 命令
可以看到文件的格式为
fileformat=dos
3.修改文件format为unix
使用vi/vim修改文件format
命令::set ff=unix
或者::set fileformat=unix
然后:wq保存退出,重新执行脚本就正常了

4

主题

109

回帖

0

牛值

初出茅庐

2025-1-20 09:01:24 显示全部楼层
我是不是应该去找台服务器**分?
跑&跑一起都被屏……  详情 回复
2025-1-20 09:02

4

主题

109

回帖

0

牛值

初出茅庐

2025-1-20 09:02:24 显示全部楼层
跑&跑一起都被屏……

0

主题

1

回帖

0

牛值

江湖小虾

2025-1-22 13:43:26 显示全部楼层
root@aimz:~# chmod +x /vol1/1000/文件/benchmark.sh
chmod: missing operand after ‘+x /vol1/1000/文件/benchmark.sh’
Try 'chmod --help' for more information.
报错,是什么意思

1

主题

4

回帖

0

牛值

江湖小虾

2025-1-23 21:09:48 显示全部楼层
================= 测试结果 =================
CPU 每秒事件:1197,评分:478
内存带宽:13191 MiB/sec,评分:791
硬盘随机写入 IOPS:0,评分:0
总评分:1269.00
唯一标识符:2b90a7be0dd24b7fbda20ca3b9a08991
===========================================
是否上传评分到排行榜(输入 1 同意,0 不同意,输入后按回车键): 1
请输入您的名字(不超过 10 个汉字)输入后按回车键: 夜冷西河
上传失败,服务器响应: {"error":"\u786c\u76d8\u5206\u6570\u8d85\u51fa\u5408\u7406\u8303\u56f4"}
请重新测试后再尝试上传。

0

主题

2

回帖

0

牛值

江湖小虾

2025-1-24 15:38:12 显示全部楼层
建议你把硬件信息也放在跑分榜里面

5

主题

9

回帖

0

牛值

江湖小虾

2025-2-1 15:36:30 显示全部楼层
================= 测试结果 =================
CPU 每秒事件:1802,评分:720
内存带宽:5479 MiB/sec,评分:328
硬盘随机写入 IOPS:0,评分:0
总评分:1048.00
唯一标识符:726e88d79eb548729da8c0f6c52ef1d6
===========================================
是否上传评分到排行榜(输入 1 同意,0 不同意,输入后按回车键): 1
请输入您的名字(不超过 10 个汉字)输入后按回车键: 0xbba
上传失败,服务器响应: {"error":"\u786c\u76d8\u5206\u6570\u8d85\u51fa\u5408\u7406\u8303\u56f4"}
请重新测试后再尝试上传。
six
[md]按照评论的方法把 120行的"--num\*\*s=8"改成"`--num**s=8`" 121行的".**s[]"改成"`.**s[]`" 就成功了 [/md]  详情 回复
2025-2-1 15:46

5

主题

9

回帖

0

牛值

江湖小虾

2025-2-1 15:46:32 显示全部楼层

按照评论的方法把

120行的"--num**s=8"改成"--numj obs=8"

121行的".**s[]"改成".j obs[]"

就成功了

4

主题

41

回帖

0

牛值

初出茅庐

2025-2-14 17:55:45 显示全部楼层
光标不动 输入不了指令,也无法粘贴,不知道什么鬼

4

主题

41

回帖

0

牛值

初出茅庐

2025-2-14 18:02:34 显示全部楼层
本帖最后由 歪七 于 2025-2-14 18:03 编辑

chmod +x /vol1/1000/docker/python/benchmark.sh uch file or directory
这个报错是什么意思呢

3

主题

9

回帖

0

牛值

江湖小虾

2025-4-30 21:08:52 显示全部楼层

我打字太慢了吗?sudo没输完,就跳了。。

2

主题

4

回帖

0

牛值

江湖小虾

2025-5-2 11:58:32 显示全部楼层

膜拜shell大神

2

主题

2

回帖

0

牛值

江湖小虾

2025-5-5 16:48:24 显示全部楼层

================= 硬件信息 =================
CPU 型号:Intel(R) Core(TM) i3-8100 CPU
CPU 核心数:4
CPU 线程数:1
总内存:15Gi
唯一标识符:巴拉巴拉小魔仙

开始 CPU 性能测试...
CPU 性能测试完成,每秒事件:1799,评分:719
开始内存性能测试(多线程)...
内存性能测试完成,带宽:10573 MiB/sec,评分:634
开始硬盘性能测试(随机写入)...
fio: unrecognized option '--nums=8'
fio: unrecognized option '--num
s=8'
jq: error: syntax error, unexpected '*' (Unix shell quoting issues?) at , line 1:
.**s[] | .write.iops
jq: 1 compile error
硬盘随机写入测试完成,IOPS:0,评分:0

================= 测试结果 =================
CPU 每秒事件:1799,评分:719
内存带宽:10573 MiB/sec,评分:634
硬盘随机写入 IOPS:0,评分:0
总评分:1353.00
唯一标识符:巴拉巴拉小魔仙

是否上传评分到排行榜(输入 1 同意,0 不同意,输入后按回车键): 1
请输入您的名字(不超过 10 个汉字)输入后按回车键: HOKAY
上传失败,服务器响应: {"error":"\u786c\u76d8\u5206\u6570\u8d85\u51fa\u5408\u7406\u8303\u56f4"}
请重新测试后再尝试上传。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则