Search in sources :

Example 11 with GridMetricManager

use of org.apache.ignite.internal.processors.metric.GridMetricManager in project ignite by apache.

the class DataRegionMetricsSelfTest method beforeTest.

/**
 * {@inheritDoc}
 */
@Override
protected void beforeTest() throws Exception {
    DataRegionConfiguration plcCfg = new DataRegionConfiguration();
    IgniteConfiguration cfg = new IgniteConfiguration().setMetricExporterSpi(new NoopMetricExporterSpi());
    GridTestKernalContext ctx = new GridTestKernalContext(new GridTestLog4jLogger(), cfg);
    ctx.add(new GridMetricManager(ctx));
    ctx.add(new PerformanceStatisticsProcessor(ctx));
    memMetrics = new DataRegionMetricsImpl(plcCfg, ctx);
    memMetrics.enableMetrics();
}
Also used : PerformanceStatisticsProcessor(org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor) DataRegionConfiguration(org.apache.ignite.configuration.DataRegionConfiguration) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) GridTestKernalContext(org.apache.ignite.testframework.junits.GridTestKernalContext) NoopMetricExporterSpi(org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager) DataRegionMetricsImpl(org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl) GridTestLog4jLogger(org.apache.ignite.testframework.junits.logger.GridTestLog4jLogger)

Example 12 with GridMetricManager

use of org.apache.ignite.internal.processors.metric.GridMetricManager in project ignite by apache.

the class IgniteKernal method start.

/**
 * @param cfg Ignite configuration to use.
 * @param errHnd Error handler to use for notification about startup problems.
 * @param workerRegistry Worker registry.
 * @param hnd Default uncaught exception handler used by thread pools.
 * @throws IgniteCheckedException Thrown in case of any errors.
 */
public void start(final IgniteConfiguration cfg, GridAbsClosure errHnd, WorkersRegistry workerRegistry, Thread.UncaughtExceptionHandler hnd, TimeBag startTimer) throws IgniteCheckedException {
    gw.compareAndSet(null, new GridKernalGatewayImpl(cfg.getIgniteInstanceName()));
    GridKernalGateway gw = this.gw.get();
    gw.writeLock();
    try {
        switch(gw.getState()) {
            case STARTED:
                {
                    U.warn(log, "Grid has already been started (ignored).");
                    return;
                }
            case STARTING:
                {
                    U.warn(log, "Grid is already in process of being started (ignored).");
                    return;
                }
            case STOPPING:
                {
                    throw new IgniteCheckedException("Grid is in process of being stopped");
                }
            case STOPPED:
                {
                    break;
                }
        }
        gw.setState(STARTING);
    } finally {
        gw.writeUnlock();
    }
    assert cfg != null;
    // Make sure we got proper configuration.
    validateCommon(cfg);
    igniteInstanceName = cfg.getIgniteInstanceName();
    this.cfg = cfg;
    log = (GridLoggerProxy) cfg.getGridLogger().getLogger(getClass().getName() + (igniteInstanceName != null ? '%' + igniteInstanceName : ""));
    longJVMPauseDetector = new LongJVMPauseDetector(log);
    longJVMPauseDetector.start();
    RuntimeMXBean rtBean = ManagementFactory.getRuntimeMXBean();
    // Ack various information.
    ackAsciiLogo();
    ackConfigUrl();
    ackConfiguration(cfg);
    ackDaemon();
    ackOsInfo();
    ackLanguageRuntime();
    ackRemoteManagement();
    ackLogger();
    ackVmArguments(rtBean);
    ackClassPaths(rtBean);
    ackSystemProperties();
    ackEnvironmentVariables();
    ackMemoryConfiguration();
    ackCacheConfiguration();
    ackP2pConfiguration();
    ackRebalanceConfiguration();
    ackIPv4StackFlagIsSet();
    ackWaitForBackupsOnShutdownPropertyIsUsed();
    // Ack 3-rd party licenses location.
    if (log.isInfoEnabled() && cfg.getIgniteHome() != null)
        log.info("3-rd party licenses can be found at: " + cfg.getIgniteHome() + File.separatorChar + "libs" + File.separatorChar + "licenses");
    // with internally reserved names.
    for (String name : cfg.getUserAttributes().keySet()) if (name.startsWith(ATTR_PREFIX))
        throw new IgniteCheckedException("User attribute has illegal name: '" + name + "'. Note that all names " + "starting with '" + ATTR_PREFIX + "' are reserved for internal use.");
    // Ack local node user attributes.
    logNodeUserAttributes();
    // Ack configuration.
    ackSpis();
    List<PluginProvider> plugins = cfg.getPluginProviders() != null && cfg.getPluginProviders().length > 0 ? Arrays.asList(cfg.getPluginProviders()) : U.allPluginProviders();
    // Spin out SPIs & managers.
    try {
        ctx = new GridKernalContextImpl(log, this, cfg, gw, plugins, MarshallerUtils.classNameFilter(this.getClass().getClassLoader()), workerRegistry, hnd, longJVMPauseDetector);
        startProcessor(new DiagnosticProcessor(ctx));
        mBeansMgr = new IgniteMBeansManager(this);
        cfg.getMarshaller().setContext(ctx.marshallerContext());
        startProcessor(new GridInternalSubscriptionProcessor(ctx));
        ClusterProcessor clusterProc = new ClusterProcessor(ctx);
        startProcessor(clusterProc);
        U.onGridStart();
        // Start and configure resource processor first as it contains resources used
        // by all other managers and processors.
        GridResourceProcessor rsrcProc = new GridResourceProcessor(ctx);
        rsrcProc.setSpringContext(rsrcCtx);
        scheduler = new IgniteSchedulerImpl(ctx);
        startProcessor(rsrcProc);
        // Inject resources into lifecycle beans.
        if (!cfg.isDaemon() && cfg.getLifecycleBeans() != null) {
            for (LifecycleBean bean : cfg.getLifecycleBeans()) {
                if (bean != null)
                    rsrcProc.inject(bean);
            }
        }
        // Lifecycle notification.
        notifyLifecycleBeans(BEFORE_NODE_START);
        // Starts lifecycle aware components.
        U.startLifecycleAware(lifecycleAwares(cfg));
        startProcessor(new IgnitePluginProcessor(ctx, cfg, plugins));
        startProcessor(new FailureProcessor(ctx));
        // Start security processors.
        startProcessor(securityProcessor());
        startProcessor(new PoolProcessor(ctx));
        // Run background network diagnostics.
        GridDiagnostic.runBackgroundCheck(igniteInstanceName, ctx.pools().getExecutorService(), log);
        // Closure processor should be started before all others
        // (except for resource processor), as many components can depend on it.
        startProcessor(new GridClosureProcessor(ctx));
        // Start some other processors (order & place is important).
        startProcessor(new GridPortProcessor(ctx));
        startProcessor(new GridJobMetricsProcessor(ctx));
        // Timeout processor needs to be started before managers,
        // as managers may depend on it.
        startProcessor(new GridTimeoutProcessor(ctx));
        // NOTE: that order matters as there are dependencies between managers.
        try {
            startManager(new GridTracingManager(ctx, false));
        } catch (IgniteCheckedException e) {
            startManager(new GridTracingManager(ctx, true));
        }
        startManager(new GridMetricManager(ctx));
        startManager(new GridSystemViewManager(ctx));
        startManager(new GridIoManager(ctx));
        startManager(new GridCheckpointManager(ctx));
        startManager(new GridEventStorageManager(ctx));
        startManager(new GridDeploymentManager(ctx));
        startManager(new GridLoadBalancerManager(ctx));
        startManager(new GridFailoverManager(ctx));
        startManager(new GridCollisionManager(ctx));
        startManager(new GridIndexingManager(ctx));
        ackSecurity();
        // Assign discovery manager to context before other processors start so they
        // are able to register custom event listener.
        GridDiscoveryManager discoMgr = new GridDiscoveryManager(ctx);
        ctx.add(discoMgr, false);
        // Start the encryption manager after assigning the discovery manager to context, so it will be
        // able to register custom event listener.
        startManager(new GridEncryptionManager(ctx));
        startProcessor(new PdsConsistentIdProcessor(ctx));
        MaintenanceProcessor mntcProcessor = new MaintenanceProcessor(ctx);
        startProcessor(mntcProcessor);
        if (mntcProcessor.isMaintenanceMode()) {
            if (log.isInfoEnabled()) {
                log.info("Node is being started in maintenance mode. " + "Starting IsolatedDiscoverySpi instead of configured discovery SPI.");
            }
            cfg.setClusterStateOnStart(ClusterState.INACTIVE);
            if (log.isInfoEnabled())
                log.info("Overriding 'clusterStateOnStart' configuration to 'INACTIVE'.");
            ctx.config().setDiscoverySpi(new IsolatedDiscoverySpi());
            discoMgr = new GridDiscoveryManager(ctx);
            // Reinitialized discovery manager won't have a valid consistentId on creation.
            discoMgr.consistentId(ctx.pdsFolderResolver().resolveFolders().consistentId());
            ctx.add(discoMgr, false);
        }
        // be able to start receiving messages once discovery completes.
        try {
            startProcessor(COMPRESSION.createOptional(ctx));
            startProcessor(new GridMarshallerMappingProcessor(ctx));
            startProcessor(new MvccProcessorImpl(ctx));
            startProcessor(createComponent(DiscoveryNodeValidationProcessor.class, ctx));
            startProcessor(new GridAffinityProcessor(ctx));
            startProcessor(createComponent(GridSegmentationProcessor.class, ctx));
            startTimer.finishGlobalStage("Start managers");
            startProcessor(createComponent(IgniteCacheObjectProcessor.class, ctx));
            startTimer.finishGlobalStage("Configure binary metadata");
            startProcessor(createComponent(IGridClusterStateProcessor.class, ctx));
            startProcessor(new PerformanceStatisticsProcessor(ctx));
            startProcessor(new GridCacheProcessor(ctx));
            if (cfg.isAuthenticationEnabled()) {
                IgniteSecurityProcessor sec = (IgniteSecurityProcessor) ctx.security();
                ((IgniteAuthenticationProcessor) sec.securityProcessor()).startProcessor();
            }
            startProcessor(new IndexProcessor(ctx));
            startProcessor(new GridQueryProcessor(ctx));
            startProcessor(new ClientListenerProcessor(ctx));
            startProcessor(new IgniteServiceProcessor(ctx));
            startProcessor(new GridTaskSessionProcessor(ctx));
            startProcessor(new GridJobProcessor(ctx));
            startProcessor(new GridTaskProcessor(ctx));
            startProcessor((GridProcessor) SCHEDULE.createOptional(ctx));
            startProcessor(createComponent(IgniteRestProcessor.class, ctx));
            startProcessor(new DataStreamProcessor(ctx));
            startProcessor(new GridContinuousProcessor(ctx));
            startProcessor(new DataStructuresProcessor(ctx));
            startProcessor(createComponent(PlatformProcessor.class, ctx));
            startProcessor(new DistributedMetaStorageImpl(ctx));
            startProcessor(new DistributedConfigurationProcessor(ctx));
            startProcessor(new DurableBackgroundTasksProcessor(ctx));
            startTimer.finishGlobalStage("Start processors");
            // Start plugins.
            for (PluginProvider provider : ctx.plugins().allProviders()) {
                ctx.add(new GridPluginComponent(provider));
                provider.start(ctx.plugins().pluginContextForProvider(provider));
                startTimer.finishGlobalStage("Start '" + provider.name() + "' plugin");
            }
            // Start platform plugins.
            if (ctx.config().getPlatformConfiguration() != null)
                startProcessor(new PlatformPluginProcessor(ctx));
            mBeansMgr.registerMBeansDuringInitPhase();
            ctx.cluster().initDiagnosticListeners();
            fillNodeAttributes(clusterProc.updateNotifierEnabled());
            ctx.cache().context().database().notifyMetaStorageSubscribersOnReadyForRead();
            ((DistributedMetaStorageImpl) ctx.distributedMetastorage()).inMemoryReadyForRead();
            startTimer.finishGlobalStage("Init metastore");
            ctx.cache().context().database().startMemoryRestore(ctx, startTimer);
            ctx.recoveryMode(false);
            startTimer.finishGlobalStage("Finish recovery");
        } catch (Throwable e) {
            U.error(log, "Exception during start processors, node will be stopped and close connections", e);
            // Stop discovery spi to close tcp socket.
            ctx.discovery().stop(true);
            throw e;
        }
        // All components exept Discovery are started, time to check if maintenance is still needed.
        mntcProcessor.prepareAndExecuteMaintenance();
        gw.writeLock();
        try {
            gw.setState(STARTED);
            // Start discovery manager last to make sure that grid is fully initialized.
            startManager(discoMgr);
        } finally {
            gw.writeUnlock();
        }
        startTimer.finishGlobalStage("Join topology");
        // Check whether UTF-8 is the default character encoding.
        checkFileEncoding();
        // Check whether physical RAM is not exceeded.
        checkPhysicalRam();
        // Suggest configuration optimizations.
        suggestOptimizations(cfg);
        // Suggest JVM optimizations.
        ctx.performance().addAll(JvmConfigurationSuggestions.getSuggestions());
        // Suggest Operation System optimizations.
        ctx.performance().addAll(OsConfigurationSuggestions.getSuggestions());
        DiscoveryLocalJoinData joinData = ctx.discovery().localJoin();
        IgniteInternalFuture<Boolean> transitionWaitFut = joinData.transitionWaitFuture();
        // Notify discovery manager the first to make sure that topology is discovered.
        // Active flag is not used in managers, so it is safe to pass true.
        ctx.discovery().onKernalStart(true);
        // Notify IO manager the second so further components can send and receive messages.
        // Must notify the IO manager before transition state await to make sure IO connection can be established.
        ctx.io().onKernalStart(true);
        boolean active;
        if (transitionWaitFut != null) {
            if (log.isInfoEnabled()) {
                log.info("Join cluster while cluster state transition is in progress, " + "waiting when transition finish.");
            }
            active = transitionWaitFut.get();
        } else
            active = joinData.active();
        startTimer.finishGlobalStage("Await transition");
        ctx.pools().registerMetrics();
        registerMetrics();
        ctx.cluster().registerMetrics();
        // Register MBeans.
        mBeansMgr.registerMBeansAfterNodeStarted();
        boolean recon = false;
        // Callbacks.
        for (GridComponent comp : ctx) {
            // Skip discovery manager.
            if (comp instanceof GridDiscoveryManager)
                continue;
            // Skip IO manager.
            if (comp instanceof GridIoManager)
                continue;
            if (comp instanceof GridPluginComponent)
                continue;
            if (!skipDaemon(comp)) {
                try {
                    comp.onKernalStart(active);
                } catch (IgniteNeedReconnectException e) {
                    ClusterNode locNode = ctx.discovery().localNode();
                    assert locNode.isClient();
                    if (!ctx.discovery().reconnectSupported())
                        throw new IgniteCheckedException("Client node in forceServerMode " + "is not allowed to reconnect to the cluster and will be stopped.");
                    if (log.isDebugEnabled())
                        log.debug("Failed to start node components on node start, will wait for reconnect: " + e);
                    recon = true;
                }
            }
        }
        // Start plugins.
        for (PluginProvider provider : ctx.plugins().allProviders()) provider.onIgniteStart();
        if (recon)
            reconnectState.waitFirstReconnect();
        // Lifecycle bean notifications.
        notifyLifecycleBeans(AFTER_NODE_START);
    } catch (Throwable e) {
        IgniteSpiVersionCheckException verCheckErr = X.cause(e, IgniteSpiVersionCheckException.class);
        if (verCheckErr != null)
            U.error(log, verCheckErr.getMessage());
        else if (X.hasCause(e, InterruptedException.class, IgniteInterruptedCheckedException.class))
            U.warn(log, "Grid startup routine has been interrupted (will rollback).");
        else
            U.error(log, "Got exception while starting (will rollback startup routine).", e);
        errHnd.apply();
        stop(true);
        if (e instanceof Error)
            throw e;
        else if (e instanceof IgniteCheckedException)
            throw (IgniteCheckedException) e;
        else
            throw new IgniteCheckedException(e);
    }
    // Mark start timestamp.
    startTime = U.currentTimeMillis();
    String intervalStr = IgniteSystemProperties.getString(IGNITE_STARVATION_CHECK_INTERVAL);
    // Start starvation checker if enabled.
    boolean starveCheck = !isDaemon() && !"0".equals(intervalStr);
    if (starveCheck) {
        final long interval = F.isEmpty(intervalStr) ? DFLT_PERIODIC_STARVATION_CHECK_FREQ : Long.parseLong(intervalStr);
        starveTask = ctx.timeout().schedule(new Runnable() {

            /**
             * Last completed task count.
             */
            private long lastCompletedCntPub;

            /**
             * Last completed task count.
             */
            private long lastCompletedCntSys;

            /**
             * Last completed task count.
             */
            private long lastCompletedCntQry;

            @Override
            public void run() {
                if (ctx.pools().getExecutorService() instanceof ThreadPoolExecutor) {
                    ThreadPoolExecutor exec = (ThreadPoolExecutor) ctx.pools().getExecutorService();
                    lastCompletedCntPub = checkPoolStarvation(exec, lastCompletedCntPub, "public");
                }
                if (ctx.pools().getSystemExecutorService() instanceof ThreadPoolExecutor) {
                    ThreadPoolExecutor exec = (ThreadPoolExecutor) ctx.pools().getSystemExecutorService();
                    lastCompletedCntSys = checkPoolStarvation(exec, lastCompletedCntSys, "system");
                }
                if (ctx.pools().getQueryExecutorService() instanceof ThreadPoolExecutor) {
                    ThreadPoolExecutor exec = (ThreadPoolExecutor) ctx.pools().getQueryExecutorService();
                    lastCompletedCntQry = checkPoolStarvation(exec, lastCompletedCntQry, "query");
                }
                if (ctx.pools().getStripedExecutorService() != null)
                    ctx.pools().getStripedExecutorService().detectStarvation();
            }

            /**
             * @param exec Thread pool executor to check.
             * @param lastCompletedCnt Last completed tasks count.
             * @param pool Pool name for message.
             * @return Current completed tasks count.
             */
            private long checkPoolStarvation(ThreadPoolExecutor exec, long lastCompletedCnt, String pool) {
                long completedCnt = exec.getCompletedTaskCount();
                // at least one waiting request, then it is possible starvation.
                if (exec.getPoolSize() == exec.getActiveCount() && completedCnt == lastCompletedCnt && !exec.getQueue().isEmpty())
                    LT.warn(log, "Possible thread pool starvation detected (no task completed in last " + interval + "ms, is " + pool + " thread pool size large enough?)");
                return completedCnt;
            }
        }, interval, interval);
    }
    long metricsLogFreq = cfg.getMetricsLogFrequency();
    if (metricsLogFreq > 0) {
        metricsLogTask = ctx.timeout().schedule(new Runnable() {

            private final DecimalFormat dblFmt = doubleFormat();

            @Override
            public void run() {
                ackNodeMetrics(dblFmt, ctx.pools().getExecutorService(), ctx.pools().getSystemExecutorService(), ctx.pools().getStripedExecutorService(), ctx.pools().customExecutors());
            }
        }, metricsLogFreq, metricsLogFreq);
    }
    ctx.performance().add("Disable assertions (remove '-ea' from JVM options)", !U.assertionsEnabled());
    ctx.performance().logSuggestions(log, igniteInstanceName);
    U.quietAndInfo(log, "To start Console Management & Monitoring run ignitevisorcmd.{sh|bat}");
    if (!IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_QUIET, true))
        ackClassPathContent();
    ackStart(rtBean);
    if (!isDaemon())
        ctx.discovery().ackTopology(ctx.discovery().localJoin().joinTopologyVersion().topologyVersion(), EventType.EVT_NODE_JOINED, localNode());
    startTimer.finishGlobalStage("Await exchange");
}
Also used : DataStructuresProcessor(org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor) IgniteServiceProcessor(org.apache.ignite.internal.processors.service.IgniteServiceProcessor) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) DiscoveryLocalJoinData(org.apache.ignite.internal.managers.discovery.DiscoveryLocalJoinData) IgniteSystemProperties.getBoolean(org.apache.ignite.IgniteSystemProperties.getBoolean) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) MvccProcessorImpl(org.apache.ignite.internal.processors.cache.mvcc.MvccProcessorImpl) GridCheckpointManager(org.apache.ignite.internal.managers.checkpoint.GridCheckpointManager) ClusterNode(org.apache.ignite.cluster.ClusterNode) GridIndexingManager(org.apache.ignite.internal.managers.indexing.GridIndexingManager) GridEncryptionManager(org.apache.ignite.internal.managers.encryption.GridEncryptionManager) GridInternalSubscriptionProcessor(org.apache.ignite.internal.processors.subscription.GridInternalSubscriptionProcessor) GridMarshallerMappingProcessor(org.apache.ignite.internal.processors.marshaller.GridMarshallerMappingProcessor) GridTaskSessionProcessor(org.apache.ignite.internal.processors.session.GridTaskSessionProcessor) PlatformPluginProcessor(org.apache.ignite.internal.processors.platform.plugin.PlatformPluginProcessor) PluginProvider(org.apache.ignite.plugin.PluginProvider) DurableBackgroundTasksProcessor(org.apache.ignite.internal.processors.localtask.DurableBackgroundTasksProcessor) IgniteAuthenticationProcessor(org.apache.ignite.internal.processors.authentication.IgniteAuthenticationProcessor) GridCacheProcessor(org.apache.ignite.internal.processors.cache.GridCacheProcessor) GridPortProcessor(org.apache.ignite.internal.processors.port.GridPortProcessor) PerformanceStatisticsProcessor(org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor) GridDiscoveryManager(org.apache.ignite.internal.managers.discovery.GridDiscoveryManager) IsolatedDiscoverySpi(org.apache.ignite.spi.discovery.isolated.IsolatedDiscoverySpi) GridTracingManager(org.apache.ignite.internal.managers.tracing.GridTracingManager) GridSystemViewManager(org.apache.ignite.internal.managers.systemview.GridSystemViewManager) GridAffinityProcessor(org.apache.ignite.internal.processors.affinity.GridAffinityProcessor) IgniteMBeansManager(org.apache.ignite.internal.managers.IgniteMBeansManager) GridJobMetricsProcessor(org.apache.ignite.internal.processors.jobmetrics.GridJobMetricsProcessor) GridQueryProcessor(org.apache.ignite.internal.processors.query.GridQueryProcessor) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager) IgniteSpiVersionCheckException(org.apache.ignite.spi.IgniteSpiVersionCheckException) GridLoadBalancerManager(org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager) DataStreamProcessor(org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor) FailureProcessor(org.apache.ignite.internal.processors.failure.FailureProcessor) GridEventStorageManager(org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager) IgnitePluginProcessor(org.apache.ignite.internal.processors.plugin.IgnitePluginProcessor) PdsConsistentIdProcessor(org.apache.ignite.internal.processors.cache.persistence.filename.PdsConsistentIdProcessor) MaintenanceProcessor(org.apache.ignite.internal.maintenance.MaintenanceProcessor) GridTimeoutProcessor(org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor) DecimalFormat(java.text.DecimalFormat) IndexProcessor(org.apache.ignite.internal.cache.query.index.IndexProcessor) GridDeploymentManager(org.apache.ignite.internal.managers.deployment.GridDeploymentManager) NoOpIgniteSecurityProcessor(org.apache.ignite.internal.processors.security.NoOpIgniteSecurityProcessor) IgniteSecurityProcessor(org.apache.ignite.internal.processors.security.IgniteSecurityProcessor) ClusterProcessor(org.apache.ignite.internal.processors.cluster.ClusterProcessor) OsDiscoveryNodeValidationProcessor(org.apache.ignite.internal.processors.nodevalidation.OsDiscoveryNodeValidationProcessor) DiscoveryNodeValidationProcessor(org.apache.ignite.internal.processors.nodevalidation.DiscoveryNodeValidationProcessor) ClientListenerProcessor(org.apache.ignite.internal.processors.odbc.ClientListenerProcessor) DistributedMetaStorageImpl(org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl) LifecycleBean(org.apache.ignite.lifecycle.LifecycleBean) IGridClusterStateProcessor(org.apache.ignite.internal.processors.cluster.IGridClusterStateProcessor) DiagnosticProcessor(org.apache.ignite.internal.processors.diagnostic.DiagnosticProcessor) IgniteRestProcessor(org.apache.ignite.internal.processors.rest.IgniteRestProcessor) GridSegmentationProcessor(org.apache.ignite.internal.processors.segmentation.GridSegmentationProcessor) GridCollisionManager(org.apache.ignite.internal.managers.collision.GridCollisionManager) IgniteCacheObjectProcessor(org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor) GridTaskProcessor(org.apache.ignite.internal.processors.task.GridTaskProcessor) GridContinuousProcessor(org.apache.ignite.internal.processors.continuous.GridContinuousProcessor) RuntimeMXBean(java.lang.management.RuntimeMXBean) DistributedConfigurationProcessor(org.apache.ignite.internal.processors.configuration.distributed.DistributedConfigurationProcessor) GridClosureProcessor(org.apache.ignite.internal.processors.closure.GridClosureProcessor) GridFailoverManager(org.apache.ignite.internal.managers.failover.GridFailoverManager) PlatformProcessor(org.apache.ignite.internal.processors.platform.PlatformProcessor) GridIoManager(org.apache.ignite.internal.managers.communication.GridIoManager) GridResourceProcessor(org.apache.ignite.internal.processors.resource.GridResourceProcessor) PoolProcessor(org.apache.ignite.internal.processors.pool.PoolProcessor) GridJobProcessor(org.apache.ignite.internal.processors.job.GridJobProcessor) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor)

Example 13 with GridMetricManager

use of org.apache.ignite.internal.processors.metric.GridMetricManager in project ignite by apache.

the class CacheGroupMetricsTest method testAllocatedPages.

/**
 * Test allocated pages counts for cache groups.
 */
@Test
public void testAllocatedPages() throws Exception {
    pds = true;
    cleanPersistenceDir();
    IgniteEx ignite = startGrid(0);
    ignite.cluster().active(true);
    T2<CacheGroupMetricsMXBean, MetricRegistry> mxBean0Grp1 = cacheGroupMetrics(0, "group1");
    T2<CacheGroupMetricsMXBean, MetricRegistry> mxBean0Grp2 = cacheGroupMetrics(0, "group2");
    T2<CacheGroupMetricsMXBean, MetricRegistry> mxBean0Grp3 = cacheGroupMetrics(0, "cache4");
    GridMetricManager mmgr = ignite.context().metric();
    LongMetric totalPages = mmgr.registry(metricName(DATAREGION_METRICS_PREFIX, "default")).findMetric("TotalAllocatedPages");
    assertEquals(totalPages.value(), mxBean0Grp1.get2().<LongMetric>findMetric("TotalAllocatedPages").value() + mxBean0Grp2.get2().<LongMetric>findMetric("TotalAllocatedPages").value() + mxBean0Grp3.get2().<LongMetric>findMetric("TotalAllocatedPages").value());
    for (int cacheIdx = 1; cacheIdx <= 4; cacheIdx++) {
        IgniteCache cache = ignite.cache("cache" + cacheIdx);
        for (int i = 0; i < 10 * cacheIdx; i++) cache.put(i, new byte[100]);
    }
    assertEquals(totalPages.value(), mxBean0Grp1.get2().<LongMetric>findMetric("TotalAllocatedPages").value() + mxBean0Grp2.get2().<LongMetric>findMetric("TotalAllocatedPages").value() + mxBean0Grp3.get2().<LongMetric>findMetric("TotalAllocatedPages").value());
}
Also used : CacheGroupMetricsMXBean(org.apache.ignite.mxbean.CacheGroupMetricsMXBean) IgniteEx(org.apache.ignite.internal.IgniteEx) MetricRegistry(org.apache.ignite.internal.processors.metric.MetricRegistry) IgniteCache(org.apache.ignite.IgniteCache) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager) AtomicLongMetric(org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric) LongMetric(org.apache.ignite.spi.metric.LongMetric) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Test(org.junit.Test)

Example 14 with GridMetricManager

use of org.apache.ignite.internal.processors.metric.GridMetricManager in project ignite by apache.

the class CacheFreeListSelfTest method createFreeList.

/**
 * @param pageSize Page size.
 * @return Free list.
 * @throws Exception If failed.
 */
private FreeList<CacheDataRow> createFreeList(int pageSize) throws Exception {
    DataRegionConfiguration plcCfg = new DataRegionConfiguration().setInitialSize(1024 * MB).setMaxSize(1024 * MB);
    pageMem = createPageMemory(pageSize, plcCfg);
    long metaPageId = pageMem.allocatePage(1, 1, PageIdAllocator.FLAG_DATA);
    IgniteConfiguration cfg = new IgniteConfiguration().setMetricExporterSpi(new NoopMetricExporterSpi());
    GridTestKernalContext ctx = new GridTestKernalContext(new GridTestLog4jLogger(), cfg);
    ctx.add(new GridMetricManager(ctx));
    ctx.add(new PerformanceStatisticsProcessor(ctx));
    DataRegionMetricsImpl regionMetrics = new DataRegionMetricsImpl(plcCfg, ctx);
    DataRegion dataRegion = new DataRegion(pageMem, plcCfg, regionMetrics, new NoOpPageEvictionTracker());
    PageLockTrackerManager pageLockTrackerManager = mock(PageLockTrackerManager.class);
    when(pageLockTrackerManager.createPageLockTracker(anyString())).thenReturn(PageLockTrackerManager.NOOP_LSNR);
    return new CacheFreeList(1, "freelist", dataRegion, null, metaPageId, true, pageLockTrackerManager, new GridTestKernalContext(log), null, PageIdAllocator.FLAG_IDX);
}
Also used : GridTestKernalContext(org.apache.ignite.testframework.junits.GridTestKernalContext) CacheFreeList(org.apache.ignite.internal.processors.cache.persistence.freelist.CacheFreeList) DataRegionMetricsImpl(org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl) PageLockTrackerManager(org.apache.ignite.internal.processors.cache.persistence.diagnostic.pagelocktracker.PageLockTrackerManager) PerformanceStatisticsProcessor(org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor) DataRegionConfiguration(org.apache.ignite.configuration.DataRegionConfiguration) NoOpPageEvictionTracker(org.apache.ignite.internal.processors.cache.persistence.evict.NoOpPageEvictionTracker) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) NoopMetricExporterSpi(org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager) GridTestLog4jLogger(org.apache.ignite.testframework.junits.logger.GridTestLog4jLogger) DataRegion(org.apache.ignite.internal.processors.cache.persistence.DataRegion)

Example 15 with GridMetricManager

use of org.apache.ignite.internal.processors.metric.GridMetricManager in project ignite by apache.

the class IoStatisticsCacheSelfTest method deriveStatisticNames.

/**
 * Extract all tracked names for given statistics type.
 *
 * @param statType Type of statistics which tracked names need to extract.
 * @return Set of present names for given statType
 */
public Set<String> deriveStatisticNames(IoStatisticsType statType) {
    assert statType != null;
    GridMetricManager mmgr = ignite.context().metric();
    Stream<ReadOnlyMetricRegistry> grpsStream = StreamSupport.stream(mmgr.spliterator(), false).filter(grp -> grp.name().startsWith(statType.metricGroupName()));
    return grpsStream.flatMap(grp -> StreamSupport.stream(grp.spliterator(), false)).filter(m -> m.name().endsWith("name")).map(Metric::getAsString).collect(Collectors.toSet());
}
Also used : CacheAtomicityMode(org.apache.ignite.cache.CacheAtomicityMode) HASH_PK_IDX_NAME(org.apache.ignite.internal.metric.IoStatisticsHolderIndex.HASH_PK_IDX_NAME) Metric(org.apache.ignite.spi.metric.Metric) IgniteEx(org.apache.ignite.internal.IgniteEx) LOGICAL_READS(org.apache.ignite.internal.metric.IoStatisticsHolderCache.LOGICAL_READS) CACHE_GROUP(org.apache.ignite.internal.metric.IoStatisticsType.CACHE_GROUP) DataStorageConfiguration(org.apache.ignite.configuration.DataStorageConfiguration) StreamSupport(java.util.stream.StreamSupport) MetricUtils.metricName(org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName) WALMode(org.apache.ignite.configuration.WALMode) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) LOGICAL_READS_LEAF(org.apache.ignite.internal.metric.IoStatisticsHolderIndex.LOGICAL_READS_LEAF) Set(java.util.Set) Test(org.junit.Test) HASH_INDEX(org.apache.ignite.internal.metric.IoStatisticsType.HASH_INDEX) LOGICAL_READS_INNER(org.apache.ignite.internal.metric.IoStatisticsHolderIndex.LOGICAL_READS_INNER) Collectors(java.util.stream.Collectors) MetricRegistry(org.apache.ignite.internal.processors.metric.MetricRegistry) Sets(com.google.common.collect.Sets) IgniteCache(org.apache.ignite.IgniteCache) ReadOnlyMetricRegistry(org.apache.ignite.spi.metric.ReadOnlyMetricRegistry) IoStatisticsMetricsLocalMXBeanImplSelfTest.resetAllIoMetrics(org.apache.ignite.internal.metric.IoStatisticsMetricsLocalMXBeanImplSelfTest.resetAllIoMetrics) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) Stream(java.util.stream.Stream) CacheConfiguration(org.apache.ignite.configuration.CacheConfiguration) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager) LongMetric(org.apache.ignite.spi.metric.LongMetric) DataRegionConfiguration(org.apache.ignite.configuration.DataRegionConfiguration) ReadOnlyMetricRegistry(org.apache.ignite.spi.metric.ReadOnlyMetricRegistry) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager)

Aggregations

GridMetricManager (org.apache.ignite.internal.processors.metric.GridMetricManager)24 IgniteConfiguration (org.apache.ignite.configuration.IgniteConfiguration)10 PerformanceStatisticsProcessor (org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor)9 NoopMetricExporterSpi (org.apache.ignite.spi.metric.noop.NoopMetricExporterSpi)9 Test (org.junit.Test)9 DataRegionConfiguration (org.apache.ignite.configuration.DataRegionConfiguration)8 DataRegionMetricsImpl (org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl)8 GridEncryptionManager (org.apache.ignite.internal.managers.encryption.GridEncryptionManager)7 GridInternalSubscriptionProcessor (org.apache.ignite.internal.processors.subscription.GridInternalSubscriptionProcessor)7 DataStorageConfiguration (org.apache.ignite.configuration.DataStorageConfiguration)6 GridTestKernalContext (org.apache.ignite.testframework.junits.GridTestKernalContext)6 GridCommonAbstractTest (org.apache.ignite.testframework.junits.common.GridCommonAbstractTest)6 IgniteEx (org.apache.ignite.internal.IgniteEx)5 GridSystemViewManager (org.apache.ignite.internal.managers.systemview.GridSystemViewManager)5 JmxSystemViewExporterSpi (org.apache.ignite.internal.managers.systemview.JmxSystemViewExporterSpi)5 DirectMemoryProvider (org.apache.ignite.internal.mem.DirectMemoryProvider)5 FullPageId (org.apache.ignite.internal.pagemem.FullPageId)5 GridCacheSharedContext (org.apache.ignite.internal.processors.cache.GridCacheSharedContext)5 IgniteCacheDatabaseSharedManager (org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager)5 CheckpointProgress (org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointProgress)5