Package com.cloud.utils

Examples of com.cloud.utils.Profiler


    }
  }
 
  public boolean lock(int timeoutSeconds) {
    int remainingMilliSeconds = timeoutSeconds*1000;
    Profiler profiler = new Profiler();
    boolean interrupted = false;
    try {
      while(true) {
        synchronized(this) {
          if(ownerThread != null && ownerThread == Thread.currentThread()) {
            s_logger.warn("Global lock re-entrance detected");
           
            lockCount++;
 
            if(s_logger.isTraceEnabled())
              s_logger.trace("lock " + name + " is acquired, lock count :" + lockCount);
            return true;
          }
         
          if(ownerThread != null) {
            profiler.start();
            try {
              wait(((long)timeoutSeconds)*1000L);
            } catch (InterruptedException e) {
              interrupted = true;
            }
            profiler.stop();
           
            remainingMilliSeconds -= profiler.getDuration();
            if(remainingMilliSeconds < 0)
              return false;
           
            continue;
          } else {
View Full Code Here


       
        if (_answers != null) {
            return _answers;
        }

        Profiler profiler = new Profiler();
        profiler.start();
        if (s <= 0) {
            wait();
        } else {
            int ms = s * 1000;
            wait(ms);
        }
        profiler.stop();
       
        if(s_logger.isTraceEnabled()) {
          s_logger.trace("Synchronized command - sending completed, time: " + profiler.getDuration() + ", answer: " +
          (_answers != null ? _answers[0].toString() : "null"));
        }
        return _answers;
    }
View Full Code Here

        Thread[] pThreads = new Thread[numProducers];

        Producer[] producers = new Producer[numProducers];
        int numProduced = 0;
        Profiler p = new Profiler();
        p.start();
        for (int i = 0; i < numProducers; i++) {
            producers[i] = new Producer(maxVmId);
            pThreads[i] = new Thread(producers[i]);
            numProduced += i + 1;
            pThreads[i].start();
        }
        for (int i = 0; i < numProducers; i++) {
            try {
                pThreads[i].join();
            } catch (InterruptedException ie) {
                ie.printStackTrace();
            }
        }
        p.stop();
        System.out.println("Num Vms= " + maxVmId + " Queue size = " + queue.size() + " time=" + p.getDuration() + " ms");
        assertEquals(maxVmId, queue.size());
    }
View Full Code Here

        System.out.println("Starting");
        List<Long> work = new ArrayList<Long>();
        for (long i = 100; i <= 100 + numVms; i++) {
            work.add(i);
        }
        Profiler profiler = new Profiler();
        profiler.start();
        _sgMgr.scheduleRulesetUpdateToHosts(work, false, null);
        profiler.stop();

        System.out.println("Done " + numVms + " in " + profiler.getDuration() + " ms");
    }
View Full Code Here

        if (_answers != null) {
            return _answers;
        }

        Profiler profiler = new Profiler();
        profiler.start();
        if (s <= 0) {
            wait();
        } else {
            int ms = s * 1000;
            wait(ms);
        }
        profiler.stop();

        if (s_logger.isTraceEnabled()) {
            s_logger.trace("Synchronized command - sending completed, time: " + profiler.getDuration() + ", answer: " +
                (_answers != null ? _answers[0].toString() : "null"));
        }
        return _answers;
    }
View Full Code Here

        if (s_logger.isDebugEnabled()) {
            s_logger.debug("Security Group Mgr v2: scheduling ruleset updates for " + affectedVms.size() + " vms " + " (unique=" + workItems.size() +
                "), current queue size=" + _workQueue.size());
        }

        Profiler p = new Profiler();
        p.start();
        int updated = 0;
        if (updateSeqno) {
            updated = _rulesetLogDao.createOrUpdate(workItems);
            if (updated < workItems.size()) {
                throw new CloudRuntimeException("Failed to create ruleset log entries");
            }
        }
        int newJobs = _workQueue.submitWorkForVms(workItems);
        _mBean.logScheduledDetails(workItems);
        p.stop();
        if (s_logger.isDebugEnabled()) {
            s_logger.debug("Security Group Mgr v2: done scheduling ruleset updates for " + workItems.size() + " vms: num new jobs=" + newJobs +
                " num rows insert or updated=" + updated + " time taken=" + p.getDuration());
        }
    }
View Full Code Here

        return new ManagedContextRunnable() {
            @Override
            protected void runInContext() {
                TransactionLegacy txn = TransactionLegacy.open("ClusterHeartbeat");
                try {
                    Profiler profiler = new Profiler();
                    Profiler profilerHeartbeatUpdate = new Profiler();
                    Profiler profilerPeerScan = new Profiler();

                    try {
                        profiler.start();

                        profilerHeartbeatUpdate.start();
                        txn.transitToUserManagedConnection(getHeartbeatConnection());
                        if (s_logger.isTraceEnabled()) {
                            s_logger.trace("Cluster manager heartbeat update, id:" + _mshostId);
                        }

                        _mshostDao.update(_mshostId, getCurrentRunId(), DateUtil.currentGMTTime());
                        profilerHeartbeatUpdate.stop();

                        profilerPeerScan.start();
                        if (s_logger.isTraceEnabled()) {
                            s_logger.trace("Cluster manager peer-scan, id:" + _mshostId);
                        }

                        if (!_peerScanInited) {
                            _peerScanInited = true;
                            initPeerScan();
                        }

                        peerScan();
                        profilerPeerScan.stop();

                    } finally {
                        profiler.stop();

                        if (profiler.getDuration() >= HeartbeatInterval.value()) {
                            if (s_logger.isDebugEnabled())
                                s_logger.debug("Management server heartbeat takes too long to finish. profiler: " + profiler.toString() + ", profilerHeartbeatUpdate: " +
                                    profilerHeartbeatUpdate.toString() + ", profilerPeerScan: " + profilerPeerScan.toString());
                        }
                    }

                } catch (CloudRuntimeException e) {
                    s_logger.error("Runtime DB exception ", e.getCause());
View Full Code Here

                    while ((msg = getNextNotificationMessage()) != null) {
                        try {
                            switch (msg.getMessageType()) {
                                case nodeAdded:
                                    if (msg.getNodes() != null && msg.getNodes().size() > 0) {
                                        Profiler profiler = new Profiler();
                                        profiler.start();

                                        notifyNodeJoined(msg.getNodes());

                                        profiler.stop();
                                        if (profiler.getDuration() > 1000) {
                                            if (s_logger.isDebugEnabled()) {
                                                s_logger.debug("Notifying management server join event took " + profiler.getDuration() + " ms");
                                            }
                                        } else {
                                            s_logger.warn("Notifying management server join event took " + profiler.getDuration() + " ms");
                                        }
                                    }
                                    break;

                                case nodeRemoved:
                                    if (msg.getNodes() != null && msg.getNodes().size() > 0) {
                                        Profiler profiler = new Profiler();
                                        profiler.start();

                                        notifyNodeLeft(msg.getNodes());

                                        profiler.stop();
                                        if (profiler.getDuration() > 1000) {
                                            if (s_logger.isDebugEnabled()) {
                                                s_logger.debug("Notifying management server leave event took " + profiler.getDuration() + " ms");
                                            }
                                        } else {
                                            s_logger.warn("Notifying management server leave event took " + profiler.getDuration() + " ms");
                                        }
                                    }
                                    break;

                                case nodeIsolated:
View Full Code Here

    }

    private void peerScan() throws ActiveFencingException {
        Date cutTime = DateUtil.currentGMTTime();

        Profiler profiler = new Profiler();
        profiler.start();

        Profiler profilerQueryActiveList = new Profiler();
        profilerQueryActiveList.start();
        List<ManagementServerHostVO> currentList = _mshostDao.getActiveList(new Date(cutTime.getTime() - HeartbeatThreshold.value()));
        profilerQueryActiveList.stop();

        Profiler profilerSyncClusterInfo = new Profiler();
        profilerSyncClusterInfo.start();
        List<ManagementServerHostVO> removedNodeList = new ArrayList<ManagementServerHostVO>();
        List<ManagementServerHostVO> invalidatedNodeList = new ArrayList<ManagementServerHostVO>();

        if (_mshostId != null) {

            if (_mshostPeerDao.countStateSeenInPeers(_mshostId, _runId, ManagementServerHost.State.Down) > 0) {
                String msg =
                    "We have detected that at least one management server peer reports that this management server is down, perform active fencing to avoid split-brain situation";
                s_logger.error(msg);
                throw new ActiveFencingException(msg);
            }

            // only if we have already attached to cluster, will we start to check leaving nodes
            for (Map.Entry<Long, ManagementServerHostVO> entry : _activePeers.entrySet()) {

                ManagementServerHostVO current = getInListById(entry.getKey(), currentList);
                if (current == null) {
                    if (entry.getKey().longValue() != _mshostId.longValue()) {
                        if (s_logger.isDebugEnabled()) {
                            s_logger.debug("Detected management node left, id:" + entry.getKey() + ", nodeIP:" + entry.getValue().getServiceIP());
                        }
                        removedNodeList.add(entry.getValue());
                    }
                } else {
                    if (current.getRunid() == 0) {
                        if (entry.getKey().longValue() != _mshostId.longValue()) {
                            if (s_logger.isDebugEnabled()) {
                                s_logger.debug("Detected management node left because of invalidated session, id:" + entry.getKey() + ", nodeIP:" +
                                    entry.getValue().getServiceIP());
                            }
                            invalidatedNodeList.add(entry.getValue());
                        }
                    } else {
                        if (entry.getValue().getRunid() != current.getRunid()) {
                            if (s_logger.isDebugEnabled()) {
                                s_logger.debug("Detected management node left and rejoined quickly, id:" + entry.getKey() + ", nodeIP:" + entry.getValue().getServiceIP());
                            }

                            entry.getValue().setRunid(current.getRunid());
                        }
                    }
                }
            }
        }
        profilerSyncClusterInfo.stop();

        Profiler profilerInvalidatedNodeList = new Profiler();
        profilerInvalidatedNodeList.start();
        // process invalidated node list
        if (invalidatedNodeList.size() > 0) {
            for (ManagementServerHostVO mshost : invalidatedNodeList) {
                _activePeers.remove(mshost.getId());
                try {
                    JmxUtil.unregisterMBean("ClusterManager", "Node " + mshost.getId());
                } catch (Exception e) {
                    s_logger.warn("Unable to deregiester cluster node from JMX monitoring due to exception " + e.toString());
                }
            }

            queueNotification(new ClusterManagerMessage(ClusterManagerMessage.MessageType.nodeRemoved, invalidatedNodeList));
        }
        profilerInvalidatedNodeList.stop();

        Profiler profilerRemovedList = new Profiler();
        profilerRemovedList.start();
        // process removed node list
        Iterator<ManagementServerHostVO> it = removedNodeList.iterator();
        while (it.hasNext()) {
            ManagementServerHostVO mshost = it.next();
            if (!pingManagementNode(mshost)) {
                s_logger.warn("Management node " + mshost.getId() + " is detected inactive by timestamp and also not pingable");
                _activePeers.remove(mshost.getId());
                try {
                    JmxUtil.unregisterMBean("ClusterManager", "Node " + mshost.getId());
                } catch (Exception e) {
                    s_logger.warn("Unable to deregiester cluster node from JMX monitoring due to exception " + e.toString());
                }
            } else {
                s_logger.info("Management node " + mshost.getId() + " is detected inactive by timestamp but is pingable");
                it.remove();
            }
        }

        if (removedNodeList.size() > 0) {
            queueNotification(new ClusterManagerMessage(ClusterManagerMessage.MessageType.nodeRemoved, removedNodeList));
        }
        profilerRemovedList.stop();

        List<ManagementServerHostVO> newNodeList = new ArrayList<ManagementServerHostVO>();
        for (ManagementServerHostVO mshost : currentList) {
            if (!_activePeers.containsKey(mshost.getId())) {
                _activePeers.put(mshost.getId(), mshost);

                if (s_logger.isDebugEnabled()) {
                    s_logger.debug("Detected management node joined, id:" + mshost.getId() + ", nodeIP:" + mshost.getServiceIP());
                }
                newNodeList.add(mshost);

                try {
                    JmxUtil.registerMBean("ClusterManager", "Node " + mshost.getId(), new ClusterManagerMBeanImpl(this, mshost));
                } catch (Exception e) {
                    s_logger.warn("Unable to regiester cluster node into JMX monitoring due to exception " + ExceptionUtil.toString(e));
                }
            }
        }

        if (newNodeList.size() > 0) {
            queueNotification(new ClusterManagerMessage(ClusterManagerMessage.MessageType.nodeAdded, newNodeList));
        }

        profiler.stop();

        if (profiler.getDuration() >= HeartbeatInterval.value()) {
            if (s_logger.isDebugEnabled())
                s_logger.debug("Peer scan takes too long to finish. profiler: " + profiler.toString() + ", profilerQueryActiveList: " +
                    profilerQueryActiveList.toString() + ", profilerSyncClusterInfo: " + profilerSyncClusterInfo.toString() + ", profilerInvalidatedNodeList: " +
                    profilerInvalidatedNodeList.toString() + ", profilerRemovedList: " + profilerRemovedList.toString());
        }
    }
View Full Code Here

        @Override
        public void run() {
            boolean locked = false;
            try {
                Profiler p = new Profiler();
                p.start();
                locked = WorkLock.lock(timeoutSeconds);
                p.stop();
                System.out.println("Thread " + id + " waited " + p.getDuration() + " ms, locked=" + locked);
                if (locked) {
                    Thread.sleep(jobDuration * 1000);
                }
            } catch (InterruptedException e) {
            } finally {
View Full Code Here

TOP

Related Classes of com.cloud.utils.Profiler

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.