Search in sources :

Example 1 with GcInfo

use of com.shulie.instrument.simulator.module.model.gc.GcInfo in project LinkAgent by shulieTech.

the class PerfPlugin method info.

@Command("info")
public CommandResponse info(Map<String, String> args) {
    try {
        CommandResponse<List<ThreadInfo>> threadResp = moduleCommandInvoker.invokeCommand(PerfConstants.MODULE_ID_THREAD, PerfConstants.MODULE_COMMAND_THREAD_INFO, threadParams);
        CommandResponse<GcInfo> gcResp = moduleCommandInvoker.invokeCommand(PerfConstants.MODULE_ID_GC, PerfConstants.MODULE_COMMAND_GC_INFO);
        CommandResponse<MemoryInfo> memoryResp = moduleCommandInvoker.invokeCommand(PerfConstants.MODULE_ID_MEMORY, PerfConstants.MODULE_COMMAND_MEMORY_INFO);
        List<ThreadInfo> threadInfos = Collections.EMPTY_LIST;
        if (!threadResp.isSuccess()) {
            logger.error("Perf: collect perf thread info err! {}", threadResp.getMessage());
        } else {
            threadInfos = threadResp.getResult();
        }
        GcInfo gcInfo = null;
        if (!gcResp.isSuccess()) {
            logger.error("Perf: collect perf gc info err! {}", gcResp.getMessage());
        } else {
            gcInfo = gcResp.getResult();
        }
        MemoryInfo memoryInfo = null;
        if (!memoryResp.isSuccess()) {
            logger.error("Perf: collect perf memory info err! {}", memoryResp.getMessage());
        } else {
            memoryInfo = memoryResp.getResult();
        }
        PerfResponse response = PerfResponseBuilder.build(threadInfos, gcInfo, memoryInfo);
        return CommandResponse.success(response);
    } catch (Throwable e) {
        logger.error("Perf: collect perf data occurred a unknow error. ", e);
        return CommandResponse.failure(e);
    }
}
Also used : MemoryInfo(com.shulie.instrument.simulator.module.model.memory.MemoryInfo) PerfResponse(com.shulie.instrument.simulator.perf.entity.PerfResponse) ThreadInfo(com.shulie.instrument.simulator.module.model.thread.ThreadInfo) GcInfo(com.shulie.instrument.simulator.module.model.gc.GcInfo) List(java.util.List) Command(com.shulie.instrument.simulator.api.annotation.Command)

Example 2 with GcInfo

use of com.shulie.instrument.simulator.module.model.gc.GcInfo in project LinkAgent by shulieTech.

the class PerfPlugin method collect.

private void collect() {
    CommandResponse<List<ThreadInfo>> threadResp = moduleCommandInvoker.invokeCommand(PerfConstants.MODULE_ID_THREAD, PerfConstants.MODULE_COMMAND_THREAD_INFO, threadParams);
    CommandResponse<GcInfo> gcResp = moduleCommandInvoker.invokeCommand(PerfConstants.MODULE_ID_GC, PerfConstants.MODULE_COMMAND_GC_INFO);
    CommandResponse<MemoryInfo> memoryResp = moduleCommandInvoker.invokeCommand(PerfConstants.MODULE_ID_MEMORY, PerfConstants.MODULE_COMMAND_MEMORY_INFO);
    List<ThreadInfo> threadInfos = Collections.EMPTY_LIST;
    if (!threadResp.isSuccess()) {
        logger.error("Perf: collect perf thread info err! {}", threadResp.getMessage());
    } else {
        threadInfos = threadResp.getResult();
    }
    GcInfo gcInfo = null;
    if (!gcResp.isSuccess()) {
        logger.error("Perf: collect perf gc info err! {}", gcResp.getMessage());
    } else {
        gcInfo = gcResp.getResult();
    }
    MemoryInfo memoryInfo = null;
    if (!memoryResp.isSuccess()) {
        logger.error("Perf: collect perf memory info err! {}", memoryResp.getMessage());
    } else {
        memoryInfo = memoryResp.getResult();
    }
    PerfResponse response = PerfResponseBuilder.build(threadInfos, gcInfo, memoryInfo);
    push(response);
}
Also used : MemoryInfo(com.shulie.instrument.simulator.module.model.memory.MemoryInfo) PerfResponse(com.shulie.instrument.simulator.perf.entity.PerfResponse) ThreadInfo(com.shulie.instrument.simulator.module.model.thread.ThreadInfo) GcInfo(com.shulie.instrument.simulator.module.model.gc.GcInfo) List(java.util.List)

Example 3 with GcInfo

use of com.shulie.instrument.simulator.module.model.gc.GcInfo in project LinkAgent by shulieTech.

the class GcModule method info.

@Command(value = "info", description = "获取当前进程的 gc 信息")
public CommandResponse info(final Map<String, String> args) {
    try {
        List<GarbageCollectorMXBean> garbageCollectorMxBeans = ManagementFactory.getGarbageCollectorMXBeans();
        GcInfo gcInfo = new GcInfo();
        for (GarbageCollectorMXBean gcMXBean : garbageCollectorMxBeans) {
            String name = gcMXBean.getName();
            if (youngGcNames.contains(name)) {
                gcInfo.setYoungGcCount(gcMXBean.getCollectionCount());
                gcInfo.setYoungGcTime(gcMXBean.getCollectionTime());
            } else if (oldGcNames.contains(name)) {
                gcInfo.setOldGcCount(gcMXBean.getCollectionCount());
                gcInfo.setOldGcTime(gcMXBean.getCollectionTime());
            }
        }
        return CommandResponse.success(gcInfo);
    } catch (Throwable e) {
        return CommandResponse.failure(e);
    }
}
Also used : GcInfo(com.shulie.instrument.simulator.module.model.gc.GcInfo) GarbageCollectorMXBean(java.lang.management.GarbageCollectorMXBean) Command(com.shulie.instrument.simulator.api.annotation.Command)

Aggregations

GcInfo (com.shulie.instrument.simulator.module.model.gc.GcInfo)3 Command (com.shulie.instrument.simulator.api.annotation.Command)2 MemoryInfo (com.shulie.instrument.simulator.module.model.memory.MemoryInfo)2 ThreadInfo (com.shulie.instrument.simulator.module.model.thread.ThreadInfo)2 PerfResponse (com.shulie.instrument.simulator.perf.entity.PerfResponse)2 List (java.util.List)2 GarbageCollectorMXBean (java.lang.management.GarbageCollectorMXBean)1