Search in sources :

Example 21 with SimpleStopwatch

use of com.ms.silverking.time.SimpleStopwatch in project SilverKing by Morgan-Stanley.

the class KVSerializationTest method runTest.

public void runTest(int numKeys, BufferMode bufferMode) {
    SerializedKeyValueBuffers skvBuffers;
    Stopwatch sw;
    ThreadLocalRandom random;
    skvBuffers = new SerializedKeyValueBuffers();
    random = ThreadLocalRandom.current();
    sw = new SimpleStopwatch();
    for (int i = 0; i < numKeys; i++) {
        DHTKey key;
        ByteBuffer value;
        key = new SimpleKey(random.nextLong(), random.nextLong());
        value = randomValue(random);
        skvBuffers.addKeyValue(key, value, bufferMode);
    }
    sw.stop();
    System.out.println(skvBuffers);
    System.out.printf("Elapsed %f\n", sw.getElapsedSeconds());
    skvBuffers.freeze();
    display(skvBuffers);
}
Also used : SerializedKeyValueBuffers(com.ms.silverking.cloud.dht.client.serialization.internal.SerializedKeyValueBuffers) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch) Stopwatch(com.ms.silverking.time.Stopwatch) DHTKey(com.ms.silverking.cloud.dht.common.DHTKey) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch) ByteBuffer(java.nio.ByteBuffer) SimpleKey(com.ms.silverking.cloud.dht.common.SimpleKey)

Example 22 with SimpleStopwatch

use of com.ms.silverking.time.SimpleStopwatch in project SilverKing by Morgan-Stanley.

the class DaemonStateZK method waitForQuorumState.

public Map<IPAndPort, DaemonState> waitForQuorumState(Set<IPAndPort> members, DaemonState targetState, int inactiveNodeTimeoutSeconds, boolean exitOnTimeout) {
    boolean targetReached;
    int lastNotReadyCount;
    int notReadyCount;
    int inactiveCount;
    Stopwatch sw;
    Set<IPAndPort> incompleteMembers;
    incompleteMembers = new HashSet<>(members);
    if (verbose) {
        System.out.printf("Waiting for quorum state: %s\n", targetState);
    }
    sw = new SimpleStopwatch();
    lastNotReadyCount = Integer.MAX_VALUE;
    targetReached = false;
    randomAwait(0, minQuorumStatePollIntervalMillis);
    while (!targetReached) {
        StringBuilder sb;
        sb = new StringBuilder();
        try {
            if (mc.getZooKeeper().getState() == States.CONNECTED) {
                Map<IPAndPort, DaemonState> quorumState;
                Stopwatch qsSW;
                Set<IPAndPort> newlyCompleteMembers;
                Pair<Boolean, Map<IPAndPort, DaemonState>> rVal;
                boolean allRead;
                qsSW = new SimpleStopwatch();
                rVal = getQuorumState(incompleteMembers, targetState);
                qsSW.stop();
                Log.info("getQuorumState elapsed ", qsSW.getElapsedSeconds());
                allRead = rVal.getV1();
                quorumState = rVal.getV2();
                targetReached = true;
                notReadyCount = 0;
                inactiveCount = 0;
                newlyCompleteMembers = new HashSet<>();
                for (IPAndPort incompleteMember : incompleteMembers) {
                    DaemonState memberState;
                    memberState = quorumState.get(incompleteMember);
                    if (verbose && allRead) {
                        sb.append(String.format("%s\t%s\n", incompleteMember, memberState));
                    }
                    if (memberState == null) {
                        if (allRead) {
                            ++inactiveCount;
                            if ((int) sw.getSplitSeconds() < inactiveNodeTimeoutSeconds) {
                                ++notReadyCount;
                                targetReached = false;
                            } else {
                                sb.append(String.format("%s\t%s\tinactive node timed out\n", incompleteMember, memberState));
                                if (exitOnTimeout) {
                                    Map<IPAndPort, DaemonState> stateMap;
                                    System.out.print(sb);
                                    Log.warningf("Timeout: %s", incompleteMember);
                                    stateMap = fetchAndDisplayIncompleteState(incompleteMembers, targetState);
                                    return stateMap;
                                }
                            }
                        } else {
                            targetReached = false;
                        }
                    } else if (memberState.ordinal() < targetState.ordinal()) {
                        targetReached = false;
                        ++notReadyCount;
                    } else {
                        newlyCompleteMembers.add(incompleteMember);
                    }
                }
                incompleteMembers.removeAll(newlyCompleteMembers);
                if (verbose) {
                    if (allRead) {
                        if (notReadyCount != lastNotReadyCount) {
                            System.out.print(sb);
                        } else {
                            System.out.printf("Waiting for %d nodes\n", notReadyCount);
                        }
                    } else {
                        System.out.printf("waitForQuorumState > %d incomplete\n", maxIncompletePerFetch);
                    }
                }
                lastNotReadyCount = notReadyCount;
            }
        } catch (KeeperException ke) {
            Log.logErrorWarning(ke);
        }
        if (!targetReached) {
            int maxSleepMillis;
            if ((int) sw.getSplitSeconds() > inactiveNodeTimeoutSeconds) {
                if (exitOnTimeout) {
                    Map<IPAndPort, DaemonState> stateMap;
                    Log.warningf("Timeout in targetState: %s", targetState);
                    try {
                        stateMap = fetchAndDisplayIncompleteState(incompleteMembers, targetState);
                    } catch (KeeperException e) {
                        e.printStackTrace();
                        stateMap = ImmutableMap.of();
                    }
                    return stateMap;
                }
            }
            maxSleepMillis = (int) Math.max((double) maxQuorumStatePollIntervalMillis * ((double) incompleteMembers.size() / (double) maxQuorumStatePollThreshold), minQuorumStatePollIntervalMillis);
            maxSleepMillis = Math.min(maxSleepMillis, maxQuorumStatePollIntervalMillis);
            Log.info("waitForQuorumState maxSleepMillis: ", maxSleepMillis);
            expectedSignals = incompleteMembers.size();
            randomAwait(minQuorumStatePollIntervalMillis, maxSleepMillis);
            Log.info("waitForQuorumState awake");
        }
    }
    if (verbose) {
        System.out.printf("Quorum state reached: %s\n", targetState);
    }
    return ImmutableMap.of();
}
Also used : IPAndPort(com.ms.silverking.net.IPAndPort) Stopwatch(com.ms.silverking.time.Stopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch) DaemonState(com.ms.silverking.cloud.dht.daemon.DaemonState) HashMap(java.util.HashMap) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) KeeperException(org.apache.zookeeper.KeeperException)

Example 23 with SimpleStopwatch

use of com.ms.silverking.time.SimpleStopwatch in project SilverKing by Morgan-Stanley.

the class BulkThroughput method runTest.

public void runTest(BulkThroughputTest test, TestParameters p, int externalReps, int threadID, SynchronousNamespacePerspective<String, byte[]> syncNSP, AsynchronousNamespacePerspective<String, byte[]> asyncNSP) throws PutException, RetrievalException {
    List<Double> throughputList;
    List<Double> allBatchTimes;
    String context;
    context = keyPrefix + threadID + ".";
    int size = externalReps * ((p.maxKey - p.minKey) / p.batchSize + 1);
    allBatchTimes = new ArrayList<>(size);
    System.out.println("max: " + p.maxKey);
    System.out.println("min: " + p.minKey);
    System.out.println("batchSize: " + p.batchSize);
    System.out.println("size: " + size);
    throughputList = new ArrayList<>(externalReps);
    for (int j = 0; j < externalReps; j++) {
        Stopwatch sw;
        double _Mbps;
        int valueSize;
        List<Double> batchTimes;
        double iops;
        switch(test) {
            case Write:
                valueSize = values[0].length;
                break;
            default:
                valueSize = -1;
        }
        batchTimes = new ArrayList<>((p.maxKey - p.minKey) / p.batchSize + 1);
        sw = new SimpleStopwatch();
        for (int i = 0; i < p.repetitions; i++) {
            switch(test) {
                case Write:
                    write(p, batchTimes, context, syncNSP);
                    break;
                case Read:
                    valueSize = read(p, batchTimes, context, syncNSP);
                    break;
                case ReadAsync:
                    valueSize = readAsync(p, context, asyncNSP);
                    break;
                default:
                    throw new RuntimeException("Panic");
            }
        }
        sw.stop();
        allBatchTimes.addAll(batchTimes);
        long bytes;
        out.printf("valueSize %d\n\n", valueSize);
        StatSeries batchStats;
        batchStats = new StatSeries(batchTimes);
        bytes = calcBytes(p, valueSize);
        _Mbps = NetUtil.calcMbps(bytes, sw);
        iops = (double) (p.numKeys * p.repetitions) / sw.getElapsedSeconds();
        out.printf("Elapsed           %s\n", sw);
        out.printf("Bytes             %d\n", bytes);
        out.printf("Throughput (Mbps) %f\n", _Mbps);
        out.printf("Throughput (IOPS) %f\n", iops);
        out.printf("Sum               %f\n", batchStats.sum());
        out.printf("Max               %f\n", batchStats.max());
        out.printf("50%%               %f\n", batchStats.percentile(90));
        out.printf("90%%               %f\n", batchStats.percentile(90));
        out.printf("95%%               %f\n", batchStats.percentile(95));
        out.printf("99%%               %f\n", batchStats.percentile(99));
        throughputList.add(_Mbps);
    }
    StatSeries allBatchStats;
    allBatchStats = new StatSeries(allBatchTimes);
    out.printf("\n\nSum               %f\n\n", allBatchStats.sum());
    out.printf("Max               %f\n\n", allBatchStats.max());
    for (int i = 0; i <= 95; i += 5) {
        out.printf("%3d%%\t%f\n", i, allBatchStats.percentile(i));
    }
    out.printf("%3d%%\t%f\n", 99, allBatchStats.percentile(99));
    out.println(StatSeries.summaryHeaderString());
    out.println(new StatSeries(throughputList).toSummaryString());
}
Also used : StatSeries(com.ms.silverking.numeric.StatSeries) Stopwatch(com.ms.silverking.time.Stopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch)

Example 24 with SimpleStopwatch

use of com.ms.silverking.time.SimpleStopwatch in project SilverKing by Morgan-Stanley.

the class BulkThroughputAnalysis method runParallelTests_B.

public void runParallelTests_B(BulkThroughputTest test, TestParameters p, int externalReps) throws PutException, RetrievalException {
    List<Double> throughputList;
    List<Double> allBatchTimes;
    allBatchTimes = new ArrayList<>(externalReps * ((p.maxKey - p.minKey) / p.batchSize + 1));
    throughputList = new ArrayList<>(externalReps);
    for (int j = 0; j < externalReps; j++) {
        Stopwatch sw;
        double _Mbps;
        int valueSize;
        List<Double> batchTimes;
        sw = new SimpleStopwatch();
        // temporary
        batchTimes = null;
        switch(test) {
            case Write:
                valueSize = values[0].length;
                break;
            default:
                valueSize = -1;
        }
        allBatchTimes.addAll(batchTimes);
        long bytes;
        out.printf("valueSize %d\n\n", valueSize);
        StatSeries batchStats;
        batchStats = new StatSeries(batchTimes);
        bytes = calcBytes(p, valueSize);
        _Mbps = NetUtil.calcMbps(bytes, sw);
        out.printf("Elapsed           %s\n", sw);
        out.printf("Bytes             %d\n", bytes);
        out.printf("Throughput (Mbps) %f\n", _Mbps);
        out.printf("Sum               %f\n", batchStats.sum());
        out.printf("Max               %f\n", batchStats.max());
        out.printf("50%%               %f\n", batchStats.percentile(50));
        out.printf("95%%               %f\n", batchStats.percentile(90));
        out.printf("90%%               %f\n", batchStats.percentile(95));
        out.printf("99%%               %f\n", batchStats.percentile(99));
        throughputList.add(_Mbps);
    }
    StatSeries allBatchStats;
    allBatchStats = new StatSeries(allBatchTimes);
    out.printf("\n\nSum               %f\n\n", allBatchStats.sum());
    out.printf("Max               %f\n\n", allBatchStats.max());
    for (int i = 0; i <= 95; i += 5) {
        out.printf("%3d%%\t%f\n", i, allBatchStats.percentile(i));
    }
    out.printf("%3d%%\t%f\n", 99, allBatchStats.percentile(99));
    out.println(StatSeries.summaryHeaderStringLow());
    out.println(new StatSeries(throughputList).toSummaryStringLow());
    out.println("\n\n");
// processReplicaTimeStats();
}
Also used : StatSeries(com.ms.silverking.numeric.StatSeries) Stopwatch(com.ms.silverking.time.Stopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch)

Example 25 with SimpleStopwatch

use of com.ms.silverking.time.SimpleStopwatch in project SilverKing by Morgan-Stanley.

the class PerspectiveTest method createPerspectives.

public void createPerspectives(int numPerspectives) {
    Stopwatch runSW;
    runSW = new SimpleStopwatch();
    for (int i = 0; i < numPerspectives; i++) {
        ns.openAsyncPerspective(String.class, byte[].class);
    }
    runSW.stop();
    out.printf("Num Perspectives: %d\n", numPerspectives);
    out.printf("Elapsed: %f\n", runSW.getElapsedSeconds());
    out.printf("Perspectives / s: %f\n", (double) numPerspectives / runSW.getElapsedSeconds());
    out.printf("s / Perspective:  %f\n", runSW.getElapsedSeconds() / (double) numPerspectives);
    out.printf("\n");
}
Also used : Stopwatch(com.ms.silverking.time.Stopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch) SimpleStopwatch(com.ms.silverking.time.SimpleStopwatch)

Aggregations

SimpleStopwatch (com.ms.silverking.time.SimpleStopwatch)42 Stopwatch (com.ms.silverking.time.Stopwatch)41 VersionConstraint (com.ms.silverking.cloud.dht.VersionConstraint)7 IOException (java.io.IOException)5 ByteBuffer (java.nio.ByteBuffer)5 SimpleTimer (com.ms.silverking.time.SimpleTimer)3 DHTSession (com.ms.silverking.cloud.dht.client.DHTSession)2 DHTKeyIntEntry (com.ms.silverking.cloud.dht.collection.DHTKeyIntEntry)2 DHTKey (com.ms.silverking.cloud.dht.common.DHTKey)2 StatSeries (com.ms.silverking.numeric.StatSeries)2 Timer (com.ms.silverking.time.Timer)2 FileOutputStream (java.io.FileOutputStream)2 Date (java.util.Date)2 Map (java.util.Map)2 Random (java.util.Random)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 GetOptions (com.ms.silverking.cloud.dht.GetOptions)1 NamespaceOptions (com.ms.silverking.cloud.dht.NamespaceOptions)1 NamespaceVersionMode (com.ms.silverking.cloud.dht.NamespaceVersionMode)1 PutOptions (com.ms.silverking.cloud.dht.PutOptions)1