5 5 月, 2026
架构概述
之前使用过chatgpt和claude协助写过一些测试脚本,比如早期的:RDMA测试脚本 by ChatGPT?! ,后来优化的就没更新在blog中了。以至于后来研发的同事帮忙优化的测试脚本,虽然目前可以达到一定需求,但python精度太差,都是ms级精度控制,效率不是很高。因此需要一套高性能RDMA测试脚本,满足不同场景下针对交换机的测试需求。目前看上去使用openmpi来控制perftest的思路比较合理,而且有的用户也在使用类似的方式,所以就尝试走这条路。以下是五一期间跟claude合作开发的测试系统,里面很多细节还有待完善中 。
设计思想
本方案采用 MPI 指挥 + perftest 执行的分离架构:
MPI(mpi4py) :只做”指挥官”——进程启动、全局同步(Barrier)、决策广播(Bcast)
perftest(ib_write_bw) :做”士兵”——真正发送 RDMA Write 流量,由 HCA 硬件直接执行
流量控制 :通过 SIGSTOP/SIGCONT 信号(training 模式,毫秒级突发)、perftest 内置 rate_limit/burst_size(storage 模式,微秒级突发,但并行打流时机会错开)、或两者结合(sync_burst 模式,微秒级突发,同步并行打流)
完整阅读
25 1 月, 2026
上一篇总结了SONiC Switch Telemetry的方法:Sonic Telemetry Deployment ,由于测试RDMA时不仅需要监控交换机,还要监控服务器,因此此篇就是在原有架构基础之上融入Server测的相关监控。Server测主要通过node exporter采集本地信息,然后吐给Prometheus,本地信息主要包含如下信息:
支持RDMA相关的各种硬件Counter信息(CNP/ECN、重传、QP 状态等),专有计数
支持Ethtools中Per-Priority相关的counter,这个是通用计数
另外更新之前自动生成配置的shell脚本,覆盖服务器这边的配置。
完整阅读
21 12 月, 2025
背景
之前一直在用群辉的synology photo,只能说还不错,但说不上优秀。因为查找照片不是很好找,不支持AI,外加最近为了让老婆也能直接自行使用otp,把home下面的photos挪到了根目录下,也就变成了共享照片。这个操作之前没操作过,我是直接用命令cp的,导致我之前编辑的人脸数据,以及相册数据都没了……要从1TB的照片和视频中重新把之前的相册聚起来,基本不太可能。所以就想看看是否有支持AI功能的个人相册,让我轻松找到想找的照片,因此才有了这篇文章。
经过查找,immich不错,比较符合我的要求,正好我还有一台老电脑没有卖,直接利旧了~ 我本想是安装黑群晖的,但经过对比后,果断直接linux + immich + gpu硬件加速了;这样除了把照片慢慢挪过去外,其他的一些非重要数据可以也都挪到老电脑上,老电脑直接装一个smb就可以满足我了,等群辉以后有更好的解决方案,到时再看是否回去。
磁盘规划
推荐分离系统盘和数据盘:
盘 格式 挂载点 用途 NVMe 256G LVM/ext4 / 系统 + Docker + Immich 数据库/缓存 4T 机械盘 ext4 /mnt/photos 照片/视频存储 1T 机械盘 ext4 /mnt/backup 备份或扩展存储
完整阅读
14 6 月, 2024
背景
之前一直看到有人谈论用Chatgpt编程序,设计产品,做游戏,反正很神就是了。在我使用过程中,并没有感觉那么神,也许是提示字给的不标准吧。最近正好有个机会,需要搞一个All2all的测试脚本,可自动化提供大规模All2All的测试任务。因此就测试了下GPT的能力。
目前用的是最新版本GPT4o(自行花了20美金),整体使用下来,GPT确实可以协助编程,只是沟通起来比较费劲和费时间……如果真正要搞一个项目,就不太现实了。估计还要再迭代几轮吧。即使是最牛的GPT4o,在沟通交互中,仍然会有以下问题:
强调过的内容,可能要重复说3-4遍,GPT才真的听进去了,但过了几轮后可能就又忘记了,比如”不着急出优化代码,先讨论问题“;
为了提升效率,对于一些小优化,其实可以提供代码片段,但GPT有时候提供的片段跟代码本身没有强联系;
为了排障,在脚本中增加了一些提示信息(增加执行log)。后面随着不断迭代优化,就会发现有些功能消失了。这种现象很明显,很可能会遇到之前解决过的问题再次出现……
完整阅读
29 2 月, 2024
Check attribute is standard or Customize ?
问题是这样的,我们需要确认一个ECMP的attribute是否是标准的Sonic Sai。具体步骤如下:
root@Franks-MacBook-Pro Documents # git clone -b v1.11 https://github.com/opencomputeproject/SAI
root@Franks-MacBook-Pro Documents # cd SAI
root@Franks-MacBook-Pro SAI # cd inc
root@Franks-MacBook-Pro inc # grep -rn 'SAI_SWITCH_ATTR_ECMP'
./saiswitch.h:185: * @brief Attribute data for #SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM
./saiswitch.h:697: SAI_SWITCH_ATTR_ECMP_MEMBERS,
./saiswitch.h:1226: SAI_SWITCH_ATTR_ECMP_HASH,
./saiswitch.h:1433: SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM,
./saiswitch.h:1442: SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED,
./saiswitch.h:1454: SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET,
./saiswitch.h:1468: SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH,
./saiswitch.h:1479: SAI_SWITCH_ATTR_ECMP_HASH_IPV4,
./saiswitch.h:1490: SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4,
./saiswitch.h:1501: SAI_SWITCH_ATTR_ECMP_HASH_IPV6,
./saiswitch.h:2771: * @brief Number of ECMP Members configured. SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT takes precedence over SAI_KEY_NUM_ECMP_GROUPS string. Default value is same as SAI_SWITCH_ATTR_ECMP_MEMBERS.
./saiswitch.h:2777: SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT,
How to check SAI Attribute meaning
可以通过这个link进行社区SAI Attributes的检索以及确认其含义:https://sonic.software/sai/globals_s.html ;
How to check SAI Attribute
梳理过SAI Attribute:社区+自定义
如果梳理过自己需要的SAI Attribute,这里包含自定义和社区SAI。对于社区部分的SAI,按社区开发就好。对于自定义的部分,需要梳理需求文档,让厂商根据需求文档进行开发。
没有梳理过SAI Attribute
此时两个步骤,其一是使用sairec文件来确认使用的sai attributes,但这里有局限性,最好从现网使用的设备上获取sairec文件,这样被调用的attributes都会被记录在sairec文件中(如果某些特性在这台设备上没有启用,那么sairec文件中也是没有记录的),可以直接从下面路径中获取:
root@sonic:/var/log/swss# ls
sairedis.rec sairedis.rec.2.gz sairedis.rec.5.gz sairedis.rec.8.gz
sairedis.rec.1 sairedis.rec.3.gz sairedis.rec.6.gz sairedis.rec.9.gz
sairedis.rec.10.gz sairedis.rec.4.gz sairedis.rec.7.gz swss.rec
其次,可以从下面目录中找到对应的sai头文件,然后与社区的头文件进行对比,可以统计出哪些是自定义sai:
xxxx@Franks-MacBook-Pro SAI % ls -l
total 248
-rw-r--r-- 1 root staff 106691 2 28 2024 Doxyfile
-rw-r--r-- 1 root staff 2700 2 28 2024 LICENSE.txt
-rw-r--r-- 1 root staff 1785 2 28 2024 Makefile
-rw-r--r-- 1 root staff 463 2 28 2024 README.md
-rw-r--r-- 1 root staff 731 2 28 2024 azure-pipelines.yml
drwxr-xr-x 9 root staff 288 2 28 2024 bm
drwxr-xr-x 3 root staff 96 2 28 2024 data
drwxr-xr-x 14 root staff 448 2 28 2024 debian
drwxr-xr-x 80 root staff 2560 2 28 2024 doc
drwxr-xr-x 6 root staff 192 2 28 2024 experimental
drwxr-xr-x 3 root staff 96 2 28 2024 flexsai
drwxr-xr-x 54 root staff 1728 2 28 2024 inc
drwxr-xr-x 35 root staff 1120 2 28 2024 meta
drwxr-xr-x 41 root staff 1312 2 28 2024 ptf
drwxr-xr-x 10 root staff 320 2 28 2024 test