当前位置: 首页 > news >正文

Koordinator-NodeInfoCollector

Run

每秒执行一次

func (n *nodeInfoCollector) Run(stopCh <-chan struct{
   }) {
   
    go wait.Until(n.collectNodeInfo, n.collectInterval, stopCh)
}

collectNodeInfo()

  • 采集node cpu信息
  • 采集node numa信息
func (n *nodeInfoCollector) collectNodeInfo() {
   
    started := time.Now()
    err := n.collectNodeCPUInfo()
    if err != nil {
   
        klog.Warningf("failed to collect node CPU info, err: %s", err)
        return
    }
    err = n.collectNodeNUMAInfo()
    if err != nil {
   
        klog.Warningf("failed to collect node NUMA info, err: %s", err)
        return
    }
    n.started.Store(true)
    klog.V(4).Infof("collect node info finished, elapsed %s", time.Since(started).String())
}

collectNodeCPUInfo()

  • 采集和组装NodeCpuInfo对象
  • 缓存到key为node_cpu_info
  • 记录到metric,collect_node_cpu_info_status:status=successed
func (n *nodeInfoCollector) collectNodeCPUInfo() error {
   
    klog.V(6).Info("start collect node cpu info")
    localCPUInfo, err := koordletutil.GetLocalCPUInfo()
    if err != nil {
   
        metrics.RecordCollectNodeCPUInfoStatus(err)
        return err
    }
    nodeCPUInfo := &metriccache.NodeCPUInfo{
   
        BasicInfo:      localCPUInfo.BasicInfo,
        ProcessorInfos: localCPUInfo.ProcessorInfos,
        TotalInfo:      localCPUInfo.TotalInfo,
    }
    klog.V(6).Infof("collect cpu info finished, info: %+v", nodeCPUInfo)
    n.storage.Set(metriccache.NodeCPUInfoKey, nodeCPUInfo)
    klog.V(4).Infof("collectNodeCPUInfo finished, processors num %v", len(nodeCPUInfo.ProcessorInfos))
    metrics.RecordCollectNodeCPUInfoStatus(nil)
    return nil
}

GetLocalCPUInfo()

命令lscpu -e=CPU,NODE,SOCKET,CORE,CACHE,ONLINE

CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0   0    0      0    0:0:0:0       是
1   0    0      0    0:0:0:0       是

组装信息:

LocalCPUInfo{
   
	"basicInfo":{
   
		"hyperThreadEnabled":true,
		"catL3CbmMask":"",
		"vendorID":"GenuineIntel",
	},
	"processorInfos":[
	{
   "cpu":0,"core":0,		"socket":0,		"node":0,		"l1dl1il2":"0:0:0",		"l3":0,		"online":"是"},
	{
   "cpu":1,"core":0,		"socket":0,		"node":0,		&#
http://www.dtcms.com/a/112190.html

相关文章:

  • 微服务架构: SpringCloud服务注册与发现详解
  • P17_ResNeXt-50
  • Apache Struts2 漏洞(CVE-2017-5638)技术分析
  • 七、重学C++—静态多态(编译期)
  • Web Service技术
  • MySQL vs MSSQL 对比
  • AI——使用numpy
  • Java模板方法模式详解
  • Ansible Playbook 进阶探秘:Handlers、变量、循环及条件判断全解析
  • 【设计模式】原型模式:用“克隆”术让对象创建更灵活
  • 开放最短路径优先 - OSPF【LSA详细】
  • 政安晨【超级AI工作流】—— 基于COZE探索有趣的主题互动问答工作流(同宇宙儿童提问机)
  • AI 数理逻辑基础之统计学基本原理(上)
  • 【3】数据结构的双向链表章
  • 每日一题洛谷P8649 [蓝桥杯 2017 省 B] k 倍区间c++
  • 【嵌入式-stm32电位器控制以及旋转编码器控制LED亮暗】
  • DHCP协议和win server2022无脑配置DHCP
  • 残差神经网络(ResNet)概念解析与用法实例:简洁的图像处理任务
  • 树莓派5使用问题
  • Mysql 使用时的一些规范值
  • Kibana 连接 Elasticsearch(8.11.3)教程
  • Vue组件化开发深度解析:Element UI与Ant Design Vue对比实践
  • WEB安全--提权思路
  • LeetCode 1817 查找用户活跃分钟数
  • Linux下调试器gdb_cgdb使用
  • 中小企业数字化赋能专项行动:Websoft9 开源聚合平台的明确行动计划
  • 蓝桥杯真题———交换瓶子
  • 【嵌入式】——Linux系统调用编程
  • Appium 自动化测试从入门到精通
  • 我与数学建模之波折