public Tuple2<Long, Double> increase(String name, ImmutableMap<String, String> labels, Double value, long windowSize, long now) {
        ID id = new ID(name, labels);
        Queue<Tuple2<Long, Double>> window = windows.computeIfAbsent(id, unused -> new PriorityQueue<>());
        synchronized (window) {
            window.offer(Tuple.of(now, value));
            long waterLevel = now - windowSize;
            Tuple2<Long, Double> peek = window.peek();
            if (peek._1 > waterLevel) {
                return peek;
            }

            Tuple2<Long, Double> result = peek;
            while (peek._1 < waterLevel) {
                result = window.poll();
                peek = window.element();
            }

            // Choose the closed slot to the expected timestamp
            if (waterLevel - result._1 <= peek._1 - waterLevel) {
                return result;
            }

            return peek;
        }
    }
CounterWindow stores a series of counter samples in order to calculate the increase
or instant rate of increase.
oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/counter/CounterWindow.java