长期支持版本

    社区创新版本

      Rubik配置说明

      rubik执行程序由Go语言实现,并编译为静态可执行文件,以便尽可能与系统依赖解耦。

      命令

      Rubik仅支持 使用-v 参数查询版本信息,不支持其他参数。 版本信息输出示例如下所示,该信息中的内容和格式可能随着版本发生变化。

      $ ./rubik -v
      Version:       2.0.0
      Release:       3.oe2203sp3
      Go Version:    go1.18.8
      Git Commit:    bcaace8
      Built:         2023-03-30
      OS/Arch:       linux/amd64
      

      配置

      执行rubik二进制时,rubik首先会解析配置文件,配置文件的路径固定为 /var/lib/rubik/config.json

      1. 为避免配置混乱,暂不支持指定其他路径。
      2. rubik支持以daemonset形式运行在kubernetes集群中。我们提供了yaml脚本(hack/rubik-daemonset.yaml),并定义了ConfigMap作为配置。因此,以daemonset形式运行rubik时,应修改hack/rubik-daemonset.yaml中的相应配置。

      配置文件采用json格式,字段键采用驼峰命名规则,且首字母小写。 配置文件示例内容如下:

      {
        "agent": {
          "logDriver": "stdio",
          "logDir": "/var/log/rubik",
          "logSize": 2048,
          "logLevel": "info",
          "cgroupRoot": "/sys/fs/cgroup",
          "enabledFeatures": [
            "preemption",
            "dynCache",
            "ioLimit",
            "ioCost",
            "quotaBurst",
            "quotaTurbo",
            "psi"
          ]
        },
        "preemption": {
          "resource": [
            "cpu",
            "memory"
          ]
        },
        "quotaTurbo": {
          "highWaterMark": 50,
          "syncInterval": 100
        },
        "dynCache": {
          "defaultLimitMode": "static",
          "adjustInterval": 1000,
          "perfDuration": 1000,
          "l3Percent": {
            "low": 20,
            "mid": 30,
            "high": 50
          },
          "memBandPercent": {
            "low": 10,
            "mid": 30,
            "high": 50
          }
        },
        "ioCost": [
          {
            "nodeName": "k8s-single",
            "config": [
              {
                "dev": "sdb",
                "enable": true,
                "model": "linear",
                "param": {
                  "rbps": 10000000,
                  "rseqiops": 10000000,
                  "rrandiops": 10000000,
                  "wbps": 10000000,
                  "wseqiops": 10000000,
                  "wrandiops": 10000000
                }
              }
            ]
          }
        ],
        "psi": {
          "interval": 10,
          "resource": [
            "cpu",
            "memory",
            "io"
          ],
          "avg10Threshold": 5.0
        }
      }
      

      Rubik配置分为两类:通用配置和特性配置。通用配置由agent关键字标识,用于保存全局的配置。特性配置按服务类型区分,应用于各个子特性。特性配置必须在通用配置的enabledFeatures字段中声明方可使能。

      agent

      agent配置用于记录保存rubik运行的通用配置,例如日志、cgroup挂载点等信息。

      配置键[=默认值]类型描述可选值
      logDriver=stdiostring日志驱动,支持标准输出和文件stdio, file
      logDir=/var/log/rubikstring日志保存目录可读可写的目录
      logSize=1024int日志限额,单位MB,仅logDriver=file生效[10, $2^{20}$]
      logLevel=infostring输出日志级别debug,info,warn,error
      cgroupRoot=/sys/fs/cgroupstring系统cgroup挂载点路径系统cgroup挂载点路径
      enabledFeatures=[]string数组需要使能的rubik特性列表rubik支持特性,参见特性介绍

      preemption

      preemption字段用于标识绝对抢占特性配置。目前,Preemption特性支持CPU和内存的绝对抢占,用户可以按需配置该字段,单独或组合使用资源的绝对抢占。

      配置键[=默认值]类型描述可选值
      resource=[]string数组资源类型,声明何种资源需要被访问cpu, memory

      dynCache

      dynCache字段用于标识支持Pod访存带宽和LLC限制特性配置。l3Percent字段用于标识最后一级缓存(LLC)水位控制线,memBandPercent字段用于标识访存带宽(MB)水位控制线。

      配置键[=默认值]类型描述可选值
      defaultLimitMode=staticstringdynCache的控制模式static, dynamic
      adjustInterval=1000      int    dynCache动态控制间隔时间,单位ms[10, 10000]
      perfDuration=1000        int    dynCache性能perf执行时长,单位ms[10, 10000]
      l3Percent                map    dynCache控制中L3各级别对应水位(%)     
      .low=20                  int    L3 Cache低水位组控制线[10, 100]    
      .mid=30                  int    L3 Cache中水位组控制线  [low, 100]  
      .high=50                int    L3 Cache高水位组控制线  [mid, 100]  
      memBandPercent          map    dynCache控制中MB各级别对应水位(%) 
      .low=10                  int    MB(访存带宽)低水位组控制线[10, 100]  
      .mid=30                  int    MB中水位组控制线  [low, 100]  
      .high=50                int    MB高水位组控制线[mid, 100]  

      quotaTurbo

      quotaTurbo字段用于标识支持弹性限流技术(用户态)配置。

      配置键[=默认值]类型描述可选值
      highWaterMark=60intCPU负载的高水位值[0,警戒水位)
      alarmWaterMark=80intCPU负载的警戒水位(高水位,100]
      syncInterval=100int触发容器quota值更新的间隔(单位:毫秒)[100,10000]

      ioCost

      ioCost字段用于标识支持iocost对IO权重控制特性配置。其类型为数组,数组中的每一个元素由节点名称nodeName和设备参数数组config组成。

      配置键类型描述可选值
      nodeNamestring节点名称kubernetes中节点名称
      config数组单个设备的配置信息/

      单个块设备配置config参数:

      配置键[=默认值]类型描述可选值
      devstring块设备名称,仅支持物理设备/
      modelstringiocost模型名linear
      param/设备参数,根据不同模型有不同参数/

      模型为linear时,param字段支持如下参数:

      配置键[=默认值]类型描述可选值
      rbpsint64块设备最大读带宽(0, $2^{63}$)
      rseqiopsint64块设备最大顺序读iop(0, $2^{63}$)
      rrandiopsint64块设备最大随机读iops(0, $2^{63}$)
      wbpsint64块设备最大写带宽(0, $2^{63}$)
      wseqiopsint64块设备最大顺序写iops(0, $2^{63}$)
      wrandiopsint64块设备最大随机写iops(0, $2^{63}$)

      psi

      psi字段用于标识基于psi指标的干扰检测特性配置。目前,psi特性支持监测CPU、内存和I/O资源,用户可以按需配置该字段,单独或组合监测资源的PSI取值。

      配置键[=默认值]类型描述可选值
      interval=10intpsi指标监测间隔(单位:秒)[10,30]
      resource=[]string数组资源类型,声明何种资源需要被访问cpu, memory, io
      avg10Threshold=5.0floatpsi some类型资源平均10s内的压制百分比阈值(单位:%),超过该阈值则驱逐离线业务[5.0,100]

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份