Search in sources :

Example 1 with PatitionStatModel

use of com.bonree.brfs.resourceschedule.model.PatitionStatModel in project BRFS by zhangnianli.

the class GatherResource method gatherServerStatInfo.

/**
 * 概述:采集状态信息
 * @param dataPath
 * @return
 * @user <a href=mailto:zhucg@bonree.com>朱成岗</a>
 */
public static void gatherServerStatInfo(Cache cache) {
    ServerStatModel obj = new ServerStatModel();
    Map<String, NetStatModel> netMap = null;
    Map<String, PatitionStatModel> patitionMap = null;
    Map<String, String> snToPatitionMap = new ConcurrentHashMap<String, String>();
    try {
        netMap = SigarUtils.instance.gatherNetStatInfos();
        patitionMap = SigarUtils.instance.gatherPatitionStatInfos(cache);
        obj.setCpuStatInfo(SigarUtils.instance.gatherCpuStatInfo());
        obj.setMemoryStatInfo(SigarUtils.instance.gatherMemoryStatInfo());
        if (netMap != null) {
            obj.setNetStatInfoMap(netMap);
        }
        if (patitionMap != null) {
            obj.setPatitionStatInfoMap(patitionMap);
            if (cache.snWithDisk != null && !cache.snWithDisk.isEmpty()) {
                cache.snRemainSizeMap = matchSnRemainSizeMap(cache.snWithDisk, patitionMap);
            }
        }
    } catch (SigarException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    cache.statInfoQueue.add(obj);
}
Also used : SigarException(org.hyperic.sigar.SigarException) PatitionStatModel(com.bonree.brfs.resourceschedule.model.PatitionStatModel) NetStatModel(com.bonree.brfs.resourceschedule.model.NetStatModel) ServerStatModel(com.bonree.brfs.resourceschedule.model.ServerStatModel) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Example 2 with PatitionStatModel

use of com.bonree.brfs.resourceschedule.model.PatitionStatModel in project BRFS by zhangnianli.

the class GatherResource method sumServerStatus.

/**
 * 概述:汇总状态信息
 * @param cache
 * @return
 * @user <a href=mailto:zhucg@bonree.com>朱成岗</a>
 */
public static ServerStatModel sumServerStatus(Cache cache) {
    Queue<ServerStatModel> tmpqueue = cache.statInfoQueue;
    if (tmpqueue.size() < 2) {
        return null;
    }
    // 汇总状态信息
    int size = tmpqueue.size();
    ServerStatModel prex = null;
    ServerStatModel current = null;
    CpuStatModel cpuObj = new CpuStatModel();
    MemoryStatModel memObj = new MemoryStatModel();
    // 磁盘IO率集合
    Map<String, List<PatitionStatModel>> patMap = null;
    // 网卡IO率集合
    Map<String, List<NetStatModel>> netMap = null;
    CommonMapCalcInterface<String, NetStatModel> netInstance = new MapModelCalc<String, NetStatModel>();
    CommonMapCalcInterface<String, PatitionStatModel> patInstance = new MapModelCalc<String, PatitionStatModel>();
    for (int i = 0; i < size; i++) {
        current = tmpqueue.poll();
        // 1.统计cpu状态
        cpuObj = cpuObj.calc(current.getCpuStatInfo());
        // 2.统计内存状态
        memObj = memObj.calc(current.getMemoryStatInfo());
        if (i == 0) {
            prex = current;
            continue;
        }
        // 3.统计网卡IO
        netMap = netInstance.collectModels(netMap, netInstance.calcMapData(current.getNetStatInfoMap(), prex.getNetStatInfoMap()));
        // 4.统计磁盘IO
        patMap = patInstance.collectModels(patMap, patInstance.calcMapData(current.getPatitionStatInfoMap(), prex.getPatitionStatInfoMap()));
    }
    Map<String, NetStatModel> netResult = netInstance.sumMapData(netMap);
    Map<String, PatitionStatModel> patResult = patInstance.sumMapData(patMap);
    ServerStatModel obj = new ServerStatModel();
    obj.setCpuStatInfo(cpuObj);
    obj.setMemoryStatInfo(memObj);
    obj.setNetStatInfoMap(netResult);
    obj.setPatitionStatInfoMap(patResult);
    obj.setSnRemainSizeMap(cache.snRemainSizeMap);
    return obj;
}
Also used : MemoryStatModel(com.bonree.brfs.resourceschedule.model.MemoryStatModel) NetStatModel(com.bonree.brfs.resourceschedule.model.NetStatModel) PatitionStatModel(com.bonree.brfs.resourceschedule.model.PatitionStatModel) ServerStatModel(com.bonree.brfs.resourceschedule.model.ServerStatModel) CpuStatModel(com.bonree.brfs.resourceschedule.model.CpuStatModel) ArrayList(java.util.ArrayList) List(java.util.List)

Example 3 with PatitionStatModel

use of com.bonree.brfs.resourceschedule.model.PatitionStatModel in project BRFS by zhangnianli.

the class GatherResource method calcResource.

/**
 * 概述:计算本机可用指标
 * @param base
 * @param stat
 * @return
 * @user <a href=mailto:zhucg@bonree.com>朱成岗</a>
 */
public static ResourceModel calcResource(BaseServerModel base, ServerStatModel stat) {
    ResourceModel obj = new ResourceModel();
    obj.setServerId(base.getServerId());
    Map<String, PatitionStatModel> patMap = stat.getPatitionStatInfoMap();
    Map<String, String> snToPat = base.getSnToDiskMap();
    long totalDisk = base.getTotalPatitionSize();
    long remain = 0;
    String sn = null;
    String mount = null;
    PatitionStatModel pat = null;
    NetStatModel net = null;
    for (Map.Entry<String, Long> entry : stat.getSnRemainSizeMap().entrySet()) {
        sn = entry.getKey();
        remain = entry.getValue();
        mount = snToPat.get(sn);
        // 没有挂载点的数据为最低
        if (mount == null) {
            obj.putClientSNRead(sn, 0.0);
            obj.putClientSNWrite(sn, 0.0);
            continue;
        }
        pat = patMap.get(mount);
        // 无磁盘状态信息的数据为最低
        if (pat == null) {
            obj.putClientSNRead(sn, 0.0);
            obj.putClientSNWrite(sn, 0.0);
            continue;
        }
        // 1.计算写请求 磁盘剩余率 +I/O请求
        double wValue = (double) remain / totalDisk + (pat.getWriteMaxSpeed() - pat.getWriteSpeed() / pat.getCount()) / pat.getWriteMaxSpeed();
        double rValue = (double) (pat.getReadMaxSpeed() - pat.getReadSpeed() / pat.getCount()) / pat.getReadMaxSpeed();
        double remainValue = (double) remain / (pat.getRemainSize() + pat.getUsedSize());
        obj.putClientSNRead(sn, rValue);
        obj.putClientSNWrite(sn, wValue);
        obj.putSnRemainRate(sn, remainValue);
    }
    return null;
}
Also used : PatitionStatModel(com.bonree.brfs.resourceschedule.model.PatitionStatModel) NetStatModel(com.bonree.brfs.resourceschedule.model.NetStatModel) ResourceModel(com.bonree.brfs.resourceschedule.model.ResourceModel) HashMap(java.util.HashMap) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Aggregations

NetStatModel (com.bonree.brfs.resourceschedule.model.NetStatModel)3 PatitionStatModel (com.bonree.brfs.resourceschedule.model.PatitionStatModel)3 ServerStatModel (com.bonree.brfs.resourceschedule.model.ServerStatModel)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 CpuStatModel (com.bonree.brfs.resourceschedule.model.CpuStatModel)1 MemoryStatModel (com.bonree.brfs.resourceschedule.model.MemoryStatModel)1 ResourceModel (com.bonree.brfs.resourceschedule.model.ResourceModel)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 SigarException (org.hyperic.sigar.SigarException)1