Archive

‘Linux’ 分类存档

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脚本,覆盖服务器这边的配置。

完整阅读

Sonic Telemetry Deployment

之前在老东家做TME时,整理过IOS XR相关的Telemetry,比如:Telemetry Solution Demo with IOS XR,也研究过 Telemetry Receiver by UDP+KV-GPB。但对Sonic Switch一直没搞过,一是Sonic是基于redis数据库的,对openconfig支持的不好,另外之前用的思科开源的pipeline很久没更新了,应该是被废弃了。2024年整理过Sonic + Telemetry,那时用的是Telegraf作为中间件,而且为了灵活,在SONiC上安装Telegraf的container,但这个方案真正实施起来有些繁琐,不如直接在服务器上部署Telegraf,当时很忙,也没时间整理,时间长了,细节就忘记了。

这次正好又面临可视化需求,因此重新梳理了架构,这次不再使用Telegraf+influxdata,而是采用gnmic + prometheus的方案,gnmic是openconfig开发的,而且在github上更新频繁。代码内容,可以查看:https://github.com/yongpro/sonic-telemetry

另外更新了Server Telemetry,具体看这篇总结:Server Telemetry Deployment,是在现有架构基础之上扩充的。

注意:整个方案会不断迭代和优化,因此文章原始内容我可能不一定会跟着优化而修正,我只是给自己作总结。如果需要参考,请过完整个文档。另外部署Telemetry平台,建议在本地局域网,避免数据传输延迟导致数据不正确。

完整阅读

开源模型部署验证

本机跑Ollma很容易,分开跑同样很容易 ~ 也就是如下Topology:

MacBook pro(web) ——– (openwebui)synology 918+ ——–(ollama)MacStudio

为什么这么繁琐,主要是不想在Mac上安装docker,另外也不想把openwebui直接安装到host上,正好利用这种方式测试下交互,所以才有了这篇文章

Ollama设置 – Mac Studio

创建 launchd 配置文件

在下面文件夹中增加一个配置文件,默认应该没有这个文件夹,我是安装过NAS的drive应用,所以就不用新建了。确保ollama路径是正确的,通过which命令验证,以及打开局域网访问OLLAMA_HOST 0.0.0.0:

yong@yongdeMac-Studio ~ % more ~/Library/LaunchAgents/com.ollama.ollama.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.ollama.ollama</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/ollama</string>
        <string>serve</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>EnvironmentVariables</key>
    <dict>
        <key>OLLAMA_HOST</key>
        <string>0.0.0.0</string>
    </dict>
    <key>StandardOutPath</key>
    <string>/tmp/ollama.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/ollama.err</string>
</dict>
</plist>
yong@yongdeMac-Studio ~ % which ollama
/usr/local/bin/ollama

加载并启用服务

完整阅读

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

Building Sonic -VS

之前一直想自行编译下Sonic,但总是没时间。这次正好赶上准备Sonic培训,所以就尝试了下,虽然官方文档介绍的很简单,但编译过一遍才发现,还是有些麻烦的。本篇总结会从干净的Ubuntu系统入手,从头搭建编译环境,以及通过PNET加载编译好的Sonic-VS;下面是官方编译Guide:https://github.com/sonic-net/sonic-buildimage

文档内标注了不同版本的编译情况,这个可以点进去看编译状态,看时间应该是一直在更新以验证社区代码是Ok的:

完整阅读
blonde teen swallows load.xxx videos