Archive

标签为 ‘Linux’的文章

MPI RDMA Burst 流量测试方案

架构概述

之前使用过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 模式,微秒级突发,同步并行打流)
完整阅读

Server Telemetry Deployment

上一篇总结了SONiC Switch Telemetry的方法:Sonic Telemetry Deployment,由于测试RDMA时不仅需要监控交换机,还要监控服务器,因此此篇就是在原有架构基础之上融入Server测的相关监控。Server测主要通过node exporter采集本地信息,然后吐给Prometheus,本地信息主要包含如下信息:

  • 支持RDMA相关的各种硬件Counter信息(CNP/ECN、重传、QP 状态等),专有计数
  • 支持Ethtools中Per-Priority相关的counter,这个是通用计数

另外更新之前自动生成配置的shell脚本,覆盖服务器这边的配置。

完整阅读

Ubuntu + Immich + GPU 加速完整部署

背景

之前一直在用群辉的synology photo,只能说还不错,但说不上优秀。因为查找照片不是很好找,不支持AI,外加最近为了让老婆也能直接自行使用otp,把home下面的photos挪到了根目录下,也就变成了共享照片。这个操作之前没操作过,我是直接用命令cp的,导致我之前编辑的人脸数据,以及相册数据都没了……要从1TB的照片和视频中重新把之前的相册聚起来,基本不太可能。所以就想看看是否有支持AI功能的个人相册,让我轻松找到想找的照片,因此才有了这篇文章。

经过查找,immich不错,比较符合我的要求,正好我还有一台老电脑没有卖,直接利旧了~ 我本想是安装黑群晖的,但经过对比后,果断直接linux + immich + gpu硬件加速了;这样除了把照片慢慢挪过去外,其他的一些非重要数据可以也都挪到老电脑上,老电脑直接装一个smb就可以满足我了,等群辉以后有更好的解决方案,到时再看是否回去。

磁盘规划

推荐分离系统盘和数据盘:

格式挂载点用途
NVMe 256GLVM/ext4/系统 + Docker + Immich 数据库/缓存
4T 机械盘ext4/mnt/photos照片/视频存储
1T 机械盘ext4/mnt/backup备份或扩展存储
完整阅读

RDMA测试脚本 by ChatGPT?!

背景

之前一直看到有人谈论用Chatgpt编程序,设计产品,做游戏,反正很神就是了。在我使用过程中,并没有感觉那么神,也许是提示字给的不标准吧。最近正好有个机会,需要搞一个All2all的测试脚本,可自动化提供大规模All2All的测试任务。因此就测试了下GPT的能力。

目前用的是最新版本GPT4o(自行花了20美金),整体使用下来,GPT确实可以协助编程,只是沟通起来比较费劲和费时间……如果真正要搞一个项目,就不太现实了。估计还要再迭代几轮吧。即使是最牛的GPT4o,在沟通交互中,仍然会有以下问题:

  • 强调过的内容,可能要重复说3-4遍,GPT才真的听进去了,但过了几轮后可能就又忘记了,比如”不着急出优化代码,先讨论问题“;
  • 为了提升效率,对于一些小优化,其实可以提供代码片段,但GPT有时候提供的片段跟代码本身没有强联系;
  • 为了排障,在脚本中增加了一些提示信息(增加执行log)。后面随着不断迭代优化,就会发现有些功能消失了。这种现象很明显,很可能会遇到之前解决过的问题再次出现……
完整阅读

SONiC 开发相关问题汇总

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
blonde teen swallows load.xxx videos