public void collectMetrics()

in src/main/java/org/opensearch/performanceanalyzer/collectors/OSMetricsCollector.java [61:170]


    public void collectMetrics(long startTime) {
        CPUPagingActivityGenerator threadCPUPagingActivityGenerator =
                osMetricsGenerator.getPagingActivityGenerator();
        threadCPUPagingActivityGenerator.addSample();

        SchedMetricsGenerator schedMetricsGenerator = osMetricsGenerator.getSchedMetricsGenerator();
        schedMetricsGenerator.addSample();

        Map<Long, ThreadList.ThreadState> threadStates = ThreadList.getNativeTidMap();

        DiskIOMetricsGenerator diskIOMetricsGenerator =
                osMetricsGenerator.getDiskIOMetricsGenerator();
        diskIOMetricsGenerator.addSample();

        for (String threadId : osMetricsGenerator.getAllThreadIds()) {
            value.setLength(0);
            value.append(PerformanceAnalyzerMetrics.getCurrentTimeMetric())
                    .append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                    .append(OSMetrics.CPU_UTILIZATION)
                    .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                    .append(threadCPUPagingActivityGenerator.getCPUUtilization(threadId));

            if (threadCPUPagingActivityGenerator.hasPagingActivity(threadId)) {
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.PAGING_MAJ_FLT_RATE)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadCPUPagingActivityGenerator.getMajorFault(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.PAGING_MIN_FLT_RATE)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadCPUPagingActivityGenerator.getMinorFault(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.PAGING_RSS)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadCPUPagingActivityGenerator.getResidentSetSize(threadId));
            }

            if (schedMetricsGenerator.hasSchedMetrics(threadId)) {
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.SCHED_RUNTIME)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(schedMetricsGenerator.getAvgRuntime(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.SCHED_WAITTIME)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(schedMetricsGenerator.getAvgWaittime(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.SCHED_CTX_RATE)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(schedMetricsGenerator.getContextSwitchRate(threadId));
            }

            ThreadList.ThreadState threadState = threadStates.get(Long.valueOf(threadId));
            if (threadState != null) {
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.HEAP_ALLOC_RATE)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadState.heapAllocRate);
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(MetaDataFields.threadName.toString())
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadState.threadName);
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.THREAD_BLOCKED_TIME)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadState.avgBlockedTime);
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.THREAD_BLOCKED_EVENT)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadState.blockedCount);
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.THREAD_WAITED_TIME)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadState.avgWaitedTime);
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.THREAD_WAITED_EVENT)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(threadState.waitedCount);
            }

            if (diskIOMetricsGenerator.hasDiskIOMetrics(threadId)) {
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.IO_READ_THROUGHPUT)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(diskIOMetricsGenerator.getAvgReadThroughputBps(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.IO_WRITE_THROUGHPUT)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(diskIOMetricsGenerator.getAvgWriteThroughputBps(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.IO_TOT_THROUGHPUT)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(diskIOMetricsGenerator.getAvgTotalThroughputBps(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.IO_READ_SYSCALL_RATE)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(diskIOMetricsGenerator.getAvgReadSyscallRate(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.IO_WRITE_SYSCALL_RATE)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(diskIOMetricsGenerator.getAvgWriteSyscallRate(threadId));
                value.append(PerformanceAnalyzerMetrics.sMetricNewLineDelimitor)
                        .append(OSMetrics.IO_TOTAL_SYSCALL_RATE)
                        .append(PerformanceAnalyzerMetrics.sKeyValueDelimitor)
                        .append(diskIOMetricsGenerator.getAvgTotalSyscallRate(threadId));
            }

            saveMetricValues(value.toString(), startTime, threadId);
        }
    }