• cello monitor实现


    在collector.cpp的main函数里面会启动一个Monitor线程,这个线程的入口是Monitor的Entry(),主要做的事情就是从自身的m_queue阻塞队列里面取出机器(是由Monitor::AddEvent在接收心跳时放入),然后调用ForwardEvent,该函数找到这个机器上报的所有executor的状态,在相应的Framework(与Scheduler中的Framework不是一个函数)中找:

    1)如果有,调用相应Framework::AddEvent函数。

    2)如果没有,就新建一个Framework插入池中(这里初始化了FrameworkInMachine的结构),(是因为Scheduler和Collector是分开进程导致的)。并调用Framework::AddEvent函数,然后把调用Framework::Start函数,将这个Framework线程启动起来(应该是作为framework的整体触发器的线程),这个函数创建了一个CpuTrigger,加入到m_trigger_list中,最后启动一个Framework::Entry线程。

    其中Framework::AddEvent函数:

    1.如果这个Machine不在这个Framework中,就创建一个ExecutorInMachine结构,并放入m_executor_pool中,并创建  一个Idle Trigger给这个executor,再将这个Trigger加入到这个Framework的m_trigger__mlist中去(这个是为单个Executor的Trigger)。

    2.然后将这个ExecutorStat加入到自身的m_queue中去。(为了Framework整体的Trigger),这个m_queue中的东西是在Framework::Entry中被pop出来处理的。

    其中Framework::Entry函数:

     周期的从m_queue(所有的ExecutorState)里面取出ExecutorState, 将取出的ExecutorState加入相应FrameworkInMachine中的ExecutorInMachine的m_resource_list中去,该list记录了这个executor所有的状态(我要不要自己弄一个环形的buffer?),调用m_trigger_list的Map,该函数使trigger开始工作和Flush函数,去除没有用的trigger

  • 相关阅读:
    模拟器 waiting for debugger
    2020年春节抢票神器
    spyder crashed during last session
    D盘 自动创建 保存的图片 本机照片
    北邮 自考 数据结构 考核指导
    对无相关性的样本特征进行onehot编码
    opencv的Kmeans聚类算法应用
    adaboost详解
    ROC与AUC曲线绘制
    K近邻算法核心函数详解
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2938184.html
Copyright © 2020-2023  润新知