Example #1
0
void Statistics::Visit( Scheduler &scheduler )
{
    std::ostringstream ss;

    const ScheduledJobs &schedJobs = scheduler.GetScheduledJobs();
    const FailedWorkers &failedWorkers = scheduler.GetFailedWorkers();

    IWorkerManager *workerManager = common::GetService< IWorkerManager >();

    ss << "================" << std::endl <<
        "busy workers = " << GetNumBusyWorkers( scheduler ) << std::endl <<
        "free workers = " << GetNumFreeWorkers( scheduler ) << std::endl <<
        "failed jobs = " << failedWorkers.GetFailedJobsCnt() << std::endl <<
        "busy cpu's = " << GetNumBusyCPU( scheduler ) << std::endl <<
        "total cpu's = " << workerManager->GetTotalCPU() << std::endl;

    const Scheduler::TaskList &needReschedule = scheduler.GetNeedReschedule();

    ss << "jobs = " << schedJobs.GetNumJobs() << std::endl <<
        "need reschedule = " << needReschedule.size() << std::endl;

    ss << "executing jobs: {";
    for( auto it = schedJobs.GetJobQueueBegin(); it != schedJobs.GetJobQueueEnd(); ++it )
    {
        const JobState &jobState = it->first;
        const JobPtr &job = jobState.GetJob();

        if ( it != schedJobs.GetJobQueueBegin() )
            ss << ", ";
        ss << job->GetJobId();
    }
    ss << "}" << std::endl;

    ss << "================";

    info_ = ss.str();
}