From 17622280398e246b0f84380f7bcc66aeb4e5d2a0 Mon Sep 17 00:00:00 2001 From: Russoul Date: Fri, 17 Oct 2025 12:15:47 +0400 Subject: [PATCH 1/8] Prototype a timeseries framework (WIP) --- cabal.project | 1 + timeseries-io/CHANGELOG.md | 5 + timeseries-io/app/Main.hs | 35 ++ timeseries-io/dataset.txt | 12 + timeseries-io/doc.txt | 19 + timeseries-io/expression.txt | 1 + .../src/Cardano/Timeseries/Domain/Instant.hs | 23 + .../src/Cardano/Timeseries/Domain/Interval.hs | 13 + .../Cardano/Timeseries/Domain/Timeseries.hs | 91 ++++ .../src/Cardano/Timeseries/Domain/Types.hs | 17 + timeseries-io/src/Cardano/Timeseries/Query.hs | 310 +++++++++++++ .../src/Cardano/Timeseries/Query/Expr.hs | 71 +++ .../src/Cardano/Timeseries/Query/Parser.hs | 87 ++++ .../src/Cardano/Timeseries/Query/Value.hs | 33 ++ timeseries-io/src/Cardano/Timeseries/Store.hs | 22 + .../src/Cardano/Timeseries/Store/Flat.hs | 46 ++ .../src/Cardano/Timeseries/Store/Parser.hs | 70 +++ timeseries-io/src/Cardano/Timeseries/Util.hs | 41 ++ timeseries-io/timeseries-io.cabal | 95 ++++ timeseries-io/todo.txt | 8 + timeseries-io/wanted-expressions.txt | 414 ++++++++++++++++++ 21 files changed, 1414 insertions(+) create mode 100644 timeseries-io/CHANGELOG.md create mode 100644 timeseries-io/app/Main.hs create mode 100644 timeseries-io/dataset.txt create mode 100644 timeseries-io/doc.txt create mode 100644 timeseries-io/expression.txt create mode 100644 timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Domain/Types.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Query.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Query/Expr.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Query/Parser.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Query/Value.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Store.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Store/Flat.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Store/Parser.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Util.hs create mode 100644 timeseries-io/timeseries-io.cabal create mode 100644 timeseries-io/todo.txt create mode 100644 timeseries-io/wanted-expressions.txt diff --git a/cabal.project b/cabal.project index 25874410b4e..ed2c57a5919 100644 --- a/cabal.project +++ b/cabal.project @@ -31,6 +31,7 @@ packages: trace-dispatcher trace-resources trace-forward + timeseries-io -- Needed when cross compiling extra-packages: alex diff --git a/timeseries-io/CHANGELOG.md b/timeseries-io/CHANGELOG.md new file mode 100644 index 00000000000..07fb028f500 --- /dev/null +++ b/timeseries-io/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for timeseries-io + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/timeseries-io/app/Main.hs b/timeseries-io/app/Main.hs new file mode 100644 index 00000000000..bfac270081d --- /dev/null +++ b/timeseries-io/app/Main.hs @@ -0,0 +1,35 @@ +{-# OPTIONS_GHC -Wno-deprecations #-} +{-# OPTIONS_GHC -Wno-name-shadowing #-} + +module Main where + +import Cardano.Timeseries.Query (interp) +import Cardano.Timeseries.Query.Parser (expr) +import Cardano.Timeseries.Store +import Cardano.Timeseries.Store.Flat (Flat, Point (instant, name)) +import Cardano.Timeseries.Store.Parser (points) + +import Data.Attoparsec (skipMany) +import Data.Attoparsec.Text (decimal, parseOnly, space) +import Data.Text (pack) +import GHC.List (foldl') +import System.Exit (die) + +main :: IO () +main = do + putStrLn "This is a prototype!" + string <- readFile "dataset.txt" + let result = parseOnly (points decimal <* skipMany space) (pack string) + case result of + Left err -> die err + Right dataset -> do + print (dataset :: [Point Integer]) + let store = foldl' (\s p -> insert s (name p) (instant p)) (new :: Flat Double) (fmap (fmap fromIntegral) dataset) + string <- readFile "expression.txt" + let result = parseOnly (expr <* skipMany space) (pack string) + case result of + Left err -> die err + Right expr -> do + print expr + print $ interp store expr 15 + diff --git a/timeseries-io/dataset.txt b/timeseries-io/dataset.txt new file mode 100644 index 00000000000..cd62b703e25 --- /dev/null +++ b/timeseries-io/dataset.txt @@ -0,0 +1,12 @@ +my_metric1 [node = "1"] 0 0 +my_metric1 [node = "1"] 2 2 +my_metric1 [node = "1"] 4 4 +my_metric1 [node = "2"] 8 10 +my_metric1 [node = "2"] 10 8 +my_metric1 [node = "2"] 12 4 +my_metric2 [node = "1"] 0 0 +my_metric2 [node = "1"] 2 2 +my_metric2 [node = "1"] 4 4 +my_metric2 [node = "2"] 8 10 +my_metric2 [node = "2"] 10 8 +my_metric2 [node = "2"] 12 4 diff --git a/timeseries-io/doc.txt b/timeseries-io/doc.txt new file mode 100644 index 00000000000..3df20da7f09 --- /dev/null +++ b/timeseries-io/doc.txt @@ -0,0 +1,19 @@ +An instant of type `a` is the following data: +— A set of labels +— A timestamp +— An element of `a` +The set of labels identifies which timeseries the instant belongs to. +We sometimes call this set of labels a "series identifier". + +An instant vector of type `a` is a set of `instant`s of type `a` where every two elements of the set have distinct: +— Set of labels + +A timeseries of type `a` is: +— A set of labels +— a set of pairs of: + — A timestamp + — An element of `a` + +A timeseries vector of type `a` is a set of timeseries where every two elements of the set have distinct: +— Set of labels + diff --git a/timeseries-io/expression.txt b/timeseries-io/expression.txt new file mode 100644 index 00000000000..d32c1b6dc18 --- /dev/null +++ b/timeseries-io/expression.txt @@ -0,0 +1 @@ +percentile(add($my_metric1, $my_metric2), 50, millis(10), millis(5)) diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs new file mode 100644 index 00000000000..c0a8f42a002 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs @@ -0,0 +1,23 @@ +module Cardano.Timeseries.Domain.Instant(Instant(..), InstantVector, mostRecent, share, toVector) where + +import Cardano.Timeseries.Domain.Types (SeriesIdentifier, Timestamp) + +import Data.Vector + +data Instant a = Instant { + labels :: SeriesIdentifier, + timestamp :: Timestamp, + value :: a +} deriving (Show, Eq, Functor, Foldable, Traversable) + +-- | Do the instant vectors share a series? +share :: Instant a -> Instant b -> Bool +share a b = labels a == labels b + +type InstantVector a = [Instant a] + +mostRecent :: Instant a -> Instant a -> Instant a +mostRecent u v = if timestamp u < timestamp v then v else u + +toVector :: InstantVector Double -> Vector Double +toVector = fromList . fmap value diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs new file mode 100644 index 00000000000..203576188b4 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs @@ -0,0 +1,13 @@ +module Cardano.Timeseries.Domain.Interval(Interval(..), length) where + +import Cardano.Timeseries.Domain.Types (Timestamp) + +import Prelude hiding (length) + +data Interval = Interval { + start :: Timestamp, + end :: Timestamp +} deriving (Show, Eq) + +length :: Interval -> Double +length (Interval s e) = fromIntegral (e - s) / 2 diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs new file mode 100644 index 00000000000..ae0068d6eeb --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs @@ -0,0 +1,91 @@ +{-# OPTIONS_GHC -Wno-name-shadowing #-} +{-# LANGUAGE RecordWildCards #-} +module Cardano.Timeseries.Domain.Timeseries(Timeseries(..), TimeseriesVector, + transpose, toVector, oldest, newest, eachOldest, eachNewest) where + +import Cardano.Timeseries.Domain.Instant (InstantVector, Instant (Instant)) +import qualified Cardano.Timeseries.Domain.Instant as Instant +import Cardano.Timeseries.Domain.Types + +import Data.List (find, maximumBy, minimumBy) +import Data.Set +import qualified Data.Set as Set +import Data.Vector (Vector) +import qualified Data.Vector as Vector + +data Timeseries a = Timeseries { + labels :: SeriesIdentifier, + dat :: [(Timestamp, a)] +} deriving (Show, Functor, Foldable, Traversable) + +oldest :: Timeseries a -> Maybe (Instant a) +oldest Timeseries{..} | Prelude.null dat = Nothing +oldest Timeseries{..} = + let (t, x) = minimumBy (\(x, _) (y, _) -> compare x y) dat in + Just (Instant labels t x) + +newest :: Timeseries a -> Maybe (Instant a) +newest Timeseries{..} | Prelude.null dat = Nothing +newest Timeseries{..} = + let (t, x) = maximumBy (\(x, _) (y, _) -> compare x y) dat in + Just (Instant labels t x) + +-- | Every two elements in the list must have distinct series identifiers (set of labels), +-- | i.e. the series in the list must be distinct. +type TimeseriesVector a = [Timeseries a] + +eachOldest :: TimeseriesVector a -> Maybe [Instant a] +eachOldest = traverse oldest + +eachNewest :: TimeseriesVector a -> Maybe [Instant a] +eachNewest = traverse newest + +-- | Given a list of range vectors, forms up a timeseries vector. +-- | This operation is, in some sense, transposition: +-- | +-- | ⎴ ⎴ ⎴ ⎴ +-- | series1: ... ◯ ◯ ... +-- | series2: ... ◯ ◯ ... +-- | series3: ... ◯ ◯ ◯ ... +-- | ... ... +-- | ⎵ ⎵ ⎵ ⎵ +-- | -------------------------------> t +-- | t₀ t₁ t₂ t₃ +-- | +-- | =====> +-- | +-- | +-- | +-- | series1: [ ... ◯ ◯ ... ] +-- | series2: [ ... ◯ ◯ ... ] +-- | series3: [ ... ◯ ◯ ◯ ... ] +-- | ... ... +-- | +-- | ----------------------------------------> t +-- t₀ t₁ t₂ t₃ +transpose :: [InstantVector a] -> TimeseriesVector a +transpose instants = + Set.foldl' (\vector ls -> form ls instants : vector) [] (setOfLabels instants) where + + -- | Given a set of labels (identifying a series) form up a series from a list of instant vectors. + form :: SeriesIdentifier -> [InstantVector a] -> Timeseries a + form ls insts = Timeseries ls (form ls insts) where + -- | Extract the data pertaining to the series (identified by the given `SeriesIdentifier`) from the list of + -- | ranges vectors. + form :: SeriesIdentifier -> [InstantVector a] -> [(Timestamp, a)] + form _ [] = [] + form ls (inst : insts) = + case find (\i -> Instant.labels i == ls) inst of + Just i -> (Instant.timestamp i, Instant.value i) : form ls insts + Nothing -> form ls insts + + setOfLabels' :: InstantVector a -> Set SeriesIdentifier + setOfLabels' [] = Set.empty + setOfLabels' (i : is) = Set.insert (Instant.labels i) (setOfLabels' is) + + setOfLabels :: [InstantVector a] -> Set SeriesIdentifier + setOfLabels [] = Set.empty + setOfLabels (v : vs) = setOfLabels' v `Set.union` setOfLabels vs + +toVector :: Timeseries Double -> Vector Double +toVector = Vector.fromList . fmap snd . dat diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Types.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Types.hs new file mode 100644 index 00000000000..c6c085848d8 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Types.hs @@ -0,0 +1,17 @@ +module Cardano.Timeseries.Domain.Types(MetricIdentifier, Label, Labelled, Timestamp, SeriesIdentifier) where + +import Prelude hiding (length) + +import Data.Set (Set) +import Data.Word (Word64) + +-- | Each series in the (metric) store can be identified by a metric name. +type MetricIdentifier = String + +type Label = String +type Labelled a = (Label, a) + +-- | Series is identified by a set of labels. Hence the name. +type SeriesIdentifier = Set (Labelled String) + +type Timestamp = Word64 diff --git a/timeseries-io/src/Cardano/Timeseries/Query.hs b/timeseries-io/src/Cardano/Timeseries/Query.hs new file mode 100644 index 00000000000..b9cd535b35f --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Query.hs @@ -0,0 +1,310 @@ +{-# OPTIONS_GHC -Wno-name-shadowing #-} +{-# OPTIONS_GHC -Wno-typed-holes #-} +{-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE UndecidableInstances #-} +module Cardano.Timeseries.Query(interp) where +import Cardano.Timeseries.Domain.Instant (Instant (Instant), InstantVector, share) +import qualified Cardano.Timeseries.Domain.Instant as Domain +import qualified Cardano.Timeseries.Domain.Instant as Instant +import Cardano.Timeseries.Domain.Interval +import Cardano.Timeseries.Domain.Timeseries (Timeseries (Timeseries), TimeseriesVector, transpose, eachOldest, eachNewest) +import qualified Cardano.Timeseries.Domain.Timeseries as Timeseries +import Cardano.Timeseries.Domain.Types (Labelled, MetricIdentifier, Timestamp) +import Cardano.Timeseries.Query.Expr as Expr +import Cardano.Timeseries.Query.Value as Value +import Cardano.Timeseries.Store (Store) +import qualified Cardano.Timeseries.Store as Store +import Cardano.Timeseries.Util (maybeToEither, safeToDouble, safeToWord64) + +import Control.Monad ((<=<), filterM) +import Data.List (find) +import Data.Set (isSubsetOf) +import qualified Data.Set as Set +import Data.Word (Word64) + +import Statistics.Function (minMax) +import Statistics.Quantile (cadpw, quantile) +import Statistics.Sample (mean) +import Data.Maybe (fromJust) + +join :: (a -> b -> c) -> InstantVector a -> InstantVector b -> Either Error (InstantVector c) +join _ [] _ = Right [] +join f (inst@(Domain.Instant ls t v) : xs) other = do + Domain.Instant _ _ v' <- maybeToEither ("No matching label: " <> show ls) $ find (share inst) other + rest <- join f xs other + Right (Domain.Instant ls t (f v v') : rest) + +avgOverTime :: Timestamp -> TimeseriesVector Double -> InstantVector Double +avgOverTime at = fmap compute where + compute :: Timeseries Double -> Instant Double + compute series = Domain.Instant (Timeseries.labels series) at (mean $ Timeseries.toVector series) + +sumOverTime :: Timestamp -> TimeseriesVector Double -> InstantVector Double +sumOverTime at = fmap compute where + compute :: Timeseries Double -> Instant Double + compute series = Domain.Instant (Timeseries.labels series) at (sum $ Timeseries.toVector series) + +expectInstantVector :: Value -> Either Error (InstantVector Value) +expectInstantVector (Value.InstantVector v) = Right v +expectInstantVector _ = Left "Unexpected expression type: expected an instant vector" + +expectRangeVector :: Value -> Either Error (TimeseriesVector Value) +expectRangeVector (Value.RangeVector v) = Right v +expectRangeVector _ = Left "Unexpected expression type: expected a range vector" + +expectTimeseriesScalar :: Timeseries Value -> Either Error (Timeseries Double) +expectTimeseriesScalar = traverse expectScalar + +expectRangeVectorScalar :: Value -> Either Error (TimeseriesVector Double) +expectRangeVectorScalar v = expectRangeVector v >>= traverse expectTimeseriesScalar + +expectInstantScalar :: Instant Value -> Either Error (Instant Double) +expectInstantScalar = traverse expectScalar + +expectInstantVectorScalar :: Value -> Either Error (InstantVector Double) +expectInstantVectorScalar v = expectInstantVector v >>= traverse expectInstantScalar + +expectPair :: Value -> Either Error (Value, Value) +expectPair (Value.Pair a b) = Right (a, b) +expectPair _ = Left "Unexpected expression type: expected a pair" + +expectScalar :: Value -> Either Error Double +expectScalar (Value.Scalar x) = Right x +expectScalar _ = Left "Unexpected expression type: expected a scalar" + +expectBoolean :: Value -> Either Error Bool +expectBoolean Truth = Right Prelude.True +expectBoolean Falsity = Right Prelude.False +expectBoolean _ = Left "Unexpected expression type: expected a boolean" + +expectDuration :: Value -> Either Error Word64 +expectDuration (Value.Duration x) = Right x +expectDuration e = Left "Unexpected expression type: expected a duration" + +expectTimestamp :: Value -> Either Error Word64 +expectTimestamp (Value.Timestamp x) = Right x +expectTimestamp e = Left "Unexpected expression type: expected a timestamp" + +expectFunction :: Value -> Either Error (Value -> Either Error Value) +expectFunction (Value.Function f) = Right f +expectFunction e = Left "Unexpected expression type: expected a function" + +toWord64 :: Integer -> Either Error Word64 +toWord64 x = maybeToEither ("Integer is to big to fit into a 64-bit unsigned integer: " <> show x) (safeToWord64 x) + +toDouble :: Integer -> Either Error Double +toDouble x = maybeToEither ("Integer is to big to fit into an IEEE 64-bit floating point" <> show x) (safeToDouble x) + +interpRange :: (Value -> Either Error Value) -> Interval -> Word64 -> Either Error (TimeseriesVector Value) +interpRange f Interval{..} rate = transpose <$> sample start end where + + sample :: Timestamp -> Timestamp -> Either Error [InstantVector Value] + sample t max | t > max = Right [] + sample t max = (:) <$> (expectInstantVector <=< f) (Value.Timestamp t) <*> sample (t + rate) max + +interpVariable :: Store s Double => s -> MetricIdentifier -> Value -> Either Error Value +interpVariable store x t = do + t <- expectTimestamp t + Right (Value.InstantVector (fmap (fmap Value.Scalar) (Store.evaluate store x t))) + +interpLabel :: Expr -> Either Error (Labelled String) +interpLabel (Application Label [Expr.Str k, Expr.Str v]) = Right (k, v) +interpLabel _ = Left "Unexpected expression: expected a label" + +interpLabels :: [Expr] -> Either Error [Labelled String] +interpLabels = traverse interpLabel + +interpFilter :: (Value -> Either Error Value) -> InstantVector Value -> Either Error (InstantVector Value) +interpFilter f = filterM pred where + pred :: Instant Value -> Either Error Bool + pred inst = (expectBoolean <=< f) (Instant.value inst) + +interpMap :: (Value -> Either Error Value) -> InstantVector Value -> Either Error (InstantVector Value) +interpMap f = traverse (traverse f) + +interpRate :: TimeseriesVector Double -> Either Error (InstantVector Double) +interpRate v = do + min <- maybeToEither "Can't compute rate" (eachOldest v) + max <- maybeToEither "Can't compute rate" (eachNewest v) + Right $ zipWith compute min max where + + compute :: Instant Double -> Instant Double -> Instant Double + compute min max = + let v = (Instant.value max - Instant.value min) / fromIntegral (Instant.timestamp max - Instant.timestamp min) in + Instant (Instant.labels min) (Instant.timestamp max) v + +interpIncrease :: TimeseriesVector Double -> Either Error (InstantVector Double) +interpIncrease v = do + min <- maybeToEither "Can't compute rate" (eachOldest v) + max <- maybeToEither "Can't compute rate" (eachNewest v) + Right $ zipWith compute min max where + + compute :: Instant Double -> Instant Double -> Instant Double + compute min max = + let v = Instant.value max - Instant.value min in + Instant (Instant.labels min) (Instant.timestamp max) v + +quantileTimeseries :: Int -> Timeseries Double -> Instant Double +quantileTimeseries k v@Timeseries{..} = + let value = quantile cadpw k 100 (Timeseries.toVector v) in + Instant labels (Instant.timestamp $ fromJust (Timeseries.newest v)) value + +quantileRangeVector :: Int -> TimeseriesVector Double -> InstantVector Double +quantileRangeVector k = map (quantileTimeseries k) + +interp :: Store s Double => s -> Expr -> Timestamp -> Either Error Value +interp _ (Expr.Number x) _ = do + x <- toDouble x + Right (Value.Scalar x) +interp store (Expr.Variable x) _ = Right $ Value.Function (interpVariable store x) +interp _ (Application Now []) now = Right (Timestamp (fromIntegral now)) +interp store (Application Range [s, a, b]) now = do + s <- interp store s now >>= expectFunction + a <- interp store a now >>= expectTimestamp + b <- interp store b now >>= expectTimestamp + RangeVector <$> interpRange s (Interval a b) (15 * 1000) +interp store (Application FilterByLabel (s : rest)) now = do + s <- interp store s now >>= expectInstantVector + ls <- interpLabels rest + Right (Value.InstantVector (filter (\i -> Set.fromList ls `isSubsetOf` Instant.labels i) s)) +interp store (Application Filter [f, t]) now = do + f <- interp store f now >>= expectFunction + t <- interp store t now >>= expectInstantVector + Value.InstantVector <$> interpFilter f t +interp store (Application Join [a, b]) now = do + a <- interp store a now >>= expectInstantVector + b <- interp store b now >>= expectInstantVector + Value.InstantVector <$> join Value.Pair a b +interp store (Application Map [f, x]) now = do + f <- interp store f now >>= expectFunction + x <- interp store x now >>= expectInstantVector + Value.InstantVector <$> interpMap f x +interp store (Application RangeWithRate [s, a, b, r]) now = do + s <- interp store s now >>= expectFunction + a <- interp store a now >>= expectTimestamp + b <- interp store b now >>= expectTimestamp + r <- interp store r now >>= expectDuration + RangeVector <$> interpRange s (Interval a b) r +interp store (Application Rewind [t, d]) now = do + t <- interp store t now >>= expectTimestamp + d <- interp store d now >>= expectDuration + Right (Timestamp (t - d)) +interp store (Application BoolToScalar [t]) now = do + t <- interp store t now >>= expectBoolean + Right (Scalar (if t then 1 else 0)) +interp store (Application TimestampToScalar [t]) now = do + t <- interp store t now >>= expectTimestamp + Right (Scalar (fromIntegral t)) +interp store (Application DurationToScalar [t]) now = do + t <- interp store t now >>= expectDuration + Right (Scalar (fromIntegral t)) +interp _ (Application Millis [Expr.Number t]) _ = + Duration <$> toWord64 t +interp _ (Application Seconds [Expr.Number t]) _ = + Duration . (1000 *) <$> toWord64 t +interp _ (Application Mins [Expr.Number t]) _ = + Duration . (60 * 1000 *) <$> toWord64 t +interp _ (Application Hours [Expr.Number t]) _ = + Duration . (60 * 60 * 1000 *) <$> toWord64 t +interp store (Application Add [a, b]) now = do + va <- interp store a now >>= expectInstantVectorScalar + vb <- interp store b now >>= expectInstantVectorScalar + v <- join (+) va vb + Right (Value.InstantVector (fmap (fmap Value.Scalar) v)) +interp store (Application Quantile [Expr.Number k, expr]) now = do + v <- interp store expr now >>= expectInstantVectorScalar + Right $ Value.Scalar $ quantile cadpw (fromIntegral k) 100 (Instant.toVector v) +interp store (Application QuantileOverTime [Expr.Number k, expr]) now = do + v <- interp store expr now >>= expectRangeVectorScalar + Right $ Value.InstantVector (fmap Value.Scalar <$> quantileRangeVector (fromIntegral k) v) +interp store (Application Rate [r]) now = do + r <- interp store r now >>= expectRangeVectorScalar + -- TODO: PromQL's rate() performs linear regression to extrapolate the samples to the bounds + r <- interpRate r + Right (Value.InstantVector (fmap (fmap Value.Scalar) r)) +interp store (Application Increase [r]) now = do + r <- interp store r now >>= expectRangeVectorScalar + -- TODO: PromQL's increase() performs linear regression to extrapolate the samples to the bounds + r <- interpIncrease r + Right (Value.InstantVector (fmap (fmap Value.Scalar) r)) +interp store (Application Avg [expr]) now = do + v <- interp store expr now >>= expectInstantVectorScalar + Right $ Value.Scalar $ mean (Instant.toVector v) +interp store (Application Max [expr]) now = do + v <- interp store expr now >>= expectInstantVectorScalar + Right $ Value.Scalar $ snd $ minMax (Instant.toVector v) +interp store (Application Min [expr]) now = do + v <- interp store expr now >>= expectInstantVectorScalar + Right $ Value.Scalar $ fst $ minMax (Instant.toVector v) +interp store (Application AvgOverTime [series]) now = do + v <- interp store series now >>= expectRangeVectorScalar + Right $ Value.InstantVector (fmap Value.Scalar <$> avgOverTime now v) +interp store (Application MkPair [a, b]) now = do + va <- interp store a now + vb <- interp store b now + Right $ Value.Pair va vb +interp store (Application Fst [t]) now = do + (a, _) <- interp store t now >>= expectPair + Right a +interp store (Application Snd [t]) now = do + (_, b) <- interp store t now >>= expectPair + Right b +interp store (Application Expr.True []) now = do + Right Truth +interp store (Application Expr.False []) now = do + Right Falsity +interp store (Application Expr.And [a, b]) now = do + va <- interp store a now >>= expectBoolean + vb <- interp store b now >>= expectBoolean + Right (fromBool (va && vb)) +interp store (Application Expr.Or [a, b]) now = do + va <- interp store a now >>= expectBoolean + vb <- interp store b now >>= expectBoolean + Right (fromBool (va || vb)) +interp store (Application Expr.Not [t]) now = do + vt <- interp store t now >>= expectBoolean + Right (fromBool (not vt)) +interp store (Application Expr.EqBool [a, b]) now = do + va <- interp store a now >>= expectBoolean + vb <- interp store b now >>= expectBoolean + Right (fromBool (va == vb)) +interp store (Application Expr.EqScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (fromBool (va == vb)) +interp store (Application Expr.LtScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (fromBool (va < vb)) +interp store (Application Expr.LteScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (fromBool (va <= vb)) +interp store (Application Expr.GtScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (fromBool (va > vb)) +interp store (Application Expr.GteScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (fromBool (va >= vb)) +interp store (Application Expr.AddScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (Value.Scalar (va + vb)) +interp store (Application Expr.MulScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (Value.Scalar (va * vb)) +interp store (Application Expr.SubScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (Value.Scalar (va - vb)) +interp store (Application Expr.DivScalar [a, b]) now = do + va <- interp store a now >>= expectScalar + vb <- interp store b now >>= expectScalar + Right (Value.Scalar (va / vb)) +interp store (Application Expr.Abs [x]) now = do + x <- interp store x now >>= expectScalar + Right (Value.Scalar (abs x)) +interp _ expr _ = Left $ "Can't interpret expression: " <> show expr diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs b/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs new file mode 100644 index 00000000000..04236d911cc --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs @@ -0,0 +1,71 @@ +module Cardano.Timeseries.Query.Expr(Function(..), Expr(..)) where + +-- average(add($metric1, $metric2), min(5)) + +{- n ::= + - x ::= + - s ::= + - c ::= add | mul | lte | and | mins | millis | eval | quantile | const | mean | mean_over_time | max + - e ::= n | $x | c ( e, ..., e ) + -} + + +data Function = Add + | Mul + | Lte + + | True + | False + | And + | Or + | Not + | EqBool + + | AddScalar + | SubScalar + | MulScalar + | DivScalar + | EqScalar + | LtScalar + | LteScalar + | GtScalar + | GteScalar + | BoolToScalar + | Abs + + | Millis + | Seconds + | Mins + | Hours + | DurationToScalar + + | Now + | Rewind + | TimestampToScalar + + | AvgOverTime + | SumOverTime + | Avg + | Quantile + | Max + | Min + | Rate + | Increase + | QuantileOverTime + + | Fst + | Snd + | MkPair + + | Range + | RangeWithRate + + | FilterByLabel + | Filter + | Label + | Join + | Map + + deriving Show + +data Expr = Number Integer | Variable String | Str String | Application Function [Expr] deriving Show diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs b/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs new file mode 100644 index 00000000000..46a5e978943 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs @@ -0,0 +1,87 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Cardano.Timeseries.Query.Parser(expr) where + +import Cardano.Timeseries.Query.Expr + +import Control.Applicative ((<|>)) +import Data.Attoparsec.ByteString.Char8 (isDigit) +import Data.Attoparsec.Combinator +import Data.Attoparsec.Text (Parser, decimal, satisfy, space, string) +import Data.Char (isAlpha) + +identifier :: Parser String +identifier = string "$" *> ((:) <$> firstChar <*> many' nextChar) where + firstChar :: Parser Char + firstChar = satisfy (\x -> isAlpha x || x == '_') + + nextChar :: Parser Char + nextChar = satisfy (\x -> isAlpha x || x == '_' || isDigit x) + +number :: Parser Expr +number = Number <$> decimal + +variable :: Parser Expr +variable = Variable <$> identifier + +str :: Parser Expr +str = Str <$> (string "\"" *> many' char <* string "\"") where + char :: Parser Char + char = satisfy (\x -> isAlpha x || x == '_' || x == ' ' || isDigit x) + +function :: Parser Function +function = Add <$ string "add" + <|> Mul <$ string "mul" + <|> Lte <$ string "lte" + <|> And <$ string "and" + <|> Or <$ string "or" + <|> Mins <$ string "mins" + <|> Millis <$ string "millis" + <|> Seconds <$ string "seconds" + <|> Hours <$ string "hours" + <|> Avg <$ string "avg" + <|> AvgOverTime <$ string "avg_over_time" + <|> SumOverTime <$ string "sum_over_time" + <|> Max <$ string "max" + <|> Min <$ string "min" + <|> Fst <$ string "fst" + <|> Snd <$ string "snd" + <|> MkPair <$ string "mk_pair" + <|> EqBool <$ string "eq_bool" + <|> EqScalar <$ string "eq_scalar" + <|> LtScalar <$ string "lt_scalar" + <|> LteScalar <$ string "lte_scalar" + <|> GtScalar <$ string "gt_scalar" + <|> GteScalar <$ string "gte_scalar" + <|> AddScalar <$ string "add_scalar" + <|> MulScalar <$ string "mul_scalar" + <|> SubScalar <$ string "sub_scalar" + <|> DivScalar <$ string "div_scalar" + <|> Abs <$ string "abs" + <|> Quantile <$ string "quantile" + <|> QuantileOverTime <$ string "quantile_over_time" + <|> Rate <$ string "rate" + <|> Increase <$ string "increase" + <|> Now <$ string "now" + <|> BoolToScalar <$ string "bool_to_scalar" + <|> TimestampToScalar <$ string "timestamp_to_scalar" + <|> DurationToScalar <$ string "duration_to_scalar" + <|> Range <$ string "range" + <|> RangeWithRate <$ string "range_with_rate" + <|> FilterByLabel <$ string "filter_by_label" + <|> Filter <$ string "filter" + <|> Join <$ string "join" + <|> Map <$ string "map" + +application :: Parser Expr +application = Application + <$> function + <* skipMany space + <* string "(" + <* skipMany space + <*> sepBy expr (skipMany space <* string "," <* skipMany space) + <* skipMany space + <* string ")" + +expr :: Parser Expr +expr = number <|> variable <|> application <|> str diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs new file mode 100644 index 00000000000..fb36932b705 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs @@ -0,0 +1,33 @@ +module Cardano.Timeseries.Query.Value(Error, Value(..), fromBool) where + +import Cardano.Timeseries.Domain.Instant + +import Data.Word (Word64) +import Cardano.Timeseries.Domain.Timeseries (TimeseriesVector) + +type Error = String + +-- | A model of values that queries interpret into. +data Value where + -- | A scalar. + Scalar :: Double -> Value + -- | A range vector. + RangeVector :: TimeseriesVector Value -> Value + -- | An instant vector. + InstantVector :: InstantVector Value -> Value + -- | A pair. + Pair :: Value -> Value -> Value + -- | Truth. + Truth :: Value + -- | Falsity. + Falsity :: Value + -- | Duration (milliseconds) + Duration :: Word64 -> Value + -- | Timestamp (milliseconds since epoch) + Timestamp :: Word64 -> Value + -- | Function + Function :: (Value -> Either Error Value) -> Value + +fromBool :: Bool -> Value +fromBool Prelude.True = Truth +fromBool Prelude.False = Falsity diff --git a/timeseries-io/src/Cardano/Timeseries/Store.hs b/timeseries-io/src/Cardano/Timeseries/Store.hs new file mode 100644 index 00000000000..e587745bf20 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Store.hs @@ -0,0 +1,22 @@ +{-# LANGUAGE FunctionalDependencies #-} + +module Cardano.Timeseries.Store(Store(..), stalenessConstant) where + +import Cardano.Timeseries.Domain.Instant +import Cardano.Timeseries.Domain.Types + +import Data.Word (Word64) + +stalenessConstant :: Word64 +stalenessConstant = 5 * 60 * 1000 + +class Store s a | s -> a where + -- | Insert an instant into the store under a metric name. + insert :: s -> MetricIdentifier -> Instant a -> s + -- | Compute a point vector of type `a` such that the timestamp of every point in the vector + -- | lies within the staleness window of the target timestamp and is the most recent of all + -- | points in the store sharing a series. + evaluate :: s -> MetricIdentifier -> Timestamp -> InstantVector a + + new :: s + diff --git a/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs new file mode 100644 index 00000000000..23b283a102b --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs @@ -0,0 +1,46 @@ +{-# OPTIONS_GHC -Wno-orphans #-} +{-# OPTIONS_GHC -Wno-name-shadowing #-} +module Cardano.Timeseries.Store.Flat(Flat, Point(..)) where + +import Cardano.Timeseries.Domain.Instant (Instant (..), InstantVector, mostRecent, share) +import Cardano.Timeseries.Domain.Types +import Cardano.Timeseries.Store +import Cardano.Timeseries.Util + +import Data.List (foldl') + +data Point a = Point { + name :: MetricIdentifier, + instant :: Instant a +} deriving (Show, Eq, Functor) + +type Flat a = [Point a] + +instance Store (Flat a) a where + insert :: Flat a -> MetricIdentifier -> Instant a -> Flat a + insert store metric instant = Point metric instant : store + + evaluate :: Flat a -> MetricIdentifier -> Timestamp -> InstantVector a + evaluate store targetMetric targetTime = foldl' choose [] store where + + choose :: InstantVector a -> Point a -> InstantVector a + choose acc p = accumulate acc (toMaybe (satisfies p) p) where + + -- | Does that point match target metric name? + -- | Does that point lie within the staleness window? + satisfies :: Point a -> Bool + satisfies x = name x == targetMetric + && timestamp (instant x) + stalenessConstant >= targetTime + && timestamp (instant x) <= targetTime + + accumulate :: InstantVector a -> Maybe (Point a) -> InstantVector a + accumulate acc Nothing = acc + accumulate acc (Just p) = accumulate acc p where + accumulate :: InstantVector a -> Point a -> InstantVector a + accumulate [] p = [instant p] + accumulate (x : xs) p | share x (instant p) = mostRecent x (instant p) : xs + accumulate (x : xs) p = x : accumulate xs p + + + new = [] + diff --git a/timeseries-io/src/Cardano/Timeseries/Store/Parser.hs b/timeseries-io/src/Cardano/Timeseries/Store/Parser.hs new file mode 100644 index 00000000000..3cdd17a7c4e --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Store/Parser.hs @@ -0,0 +1,70 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Cardano.Timeseries.Store.Parser(point, points) where + +import Cardano.Timeseries.Domain.Instant +import Cardano.Timeseries.Domain.Types (Labelled, MetricIdentifier, Timestamp) +import Cardano.Timeseries.Store.Flat (Point (..)) + +import Data.Attoparsec.ByteString.Char8 (isDigit) +import Data.Attoparsec.Combinator +import Data.Attoparsec.Text (Parser, decimal, endOfLine, satisfy, space, string) +import Data.Char (isAlpha) +import Data.Set (fromList) +import Data.Word (Word64) + +identifier :: Parser String +identifier = (:) <$> firstChar <*> many' nextChar where + firstChar :: Parser Char + firstChar = satisfy (\x -> isAlpha x || x == '_') + + nextChar :: Parser Char + nextChar = satisfy (\x -> isAlpha x || x == '_' || isDigit x) + +-- | x [x = x, ..., x = x] n n +point :: Parser a -> Parser (Point a) +point value = makePoint + <$> metric + <* skipMany space + <*> inBrackets labels + <* skipMany space + <*> timestamp + <* skipMany space + <*> value + + where + + makePoint :: MetricIdentifier -> [Labelled String] -> Timestamp -> a -> Point a + makePoint n ls t v = Point n (Instant (fromList ls) t v) + + comma :: Parser () + comma = skipMany space <* string "," <* skipMany space + + equals :: Parser () + equals = skipMany space <* string "=" <* skipMany space + + inDoublequotes :: forall a. Parser a -> Parser a + inDoublequotes f = string "\"" *> f <* string "\"" + + inBrackets :: forall a. Parser a -> Parser a + inBrackets f = string "[" *> skipMany space *> f <* skipMany space <* string "]" + + metric :: Parser String + metric = identifier + + labelValue :: Parser String + labelValue = many' $ satisfy (\x -> isAlpha x || x == '_' || isDigit x) + + labels :: Parser [(String, String)] + labels = sepBy' + ((,) <$> (skipMany space *> identifier) <* equals <*> inDoublequotes labelValue) + comma + + timestamp :: Parser Word64 + timestamp = decimal + +-- | point +-- | ... +-- | point +points :: Parser a -> Parser [Point a] +points value = sepBy' (point value) endOfLine diff --git a/timeseries-io/src/Cardano/Timeseries/Util.hs b/timeseries-io/src/Cardano/Timeseries/Util.hs new file mode 100644 index 00000000000..a3c284fb629 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Util.hs @@ -0,0 +1,41 @@ +{-# OPTIONS_GHC -Wno-unused-top-binds #-} + +module Cardano.Timeseries.Util(isSubsetOf, isEqual, toMaybe, maybeToEither, safeToWord64, safeToDouble, head) where + +import Prelude hiding (head) + +import Data.List (nub) +import Data.Word (Word64) + +isSubsetOf :: forall a. (Eq a) => [a] -> [a] -> Bool +isSubsetOf xs ys = all (`elem` ys) (nub xs) + +isEqual :: forall a. (Eq a) => [a] -> [a] -> Bool +isEqual xs ys = isSubsetOf xs ys && isSubsetOf ys xs + +toMaybe :: Bool -> a -> Maybe a +toMaybe False _ = Nothing +toMaybe True x = Just x + +maybeToEither :: e -> Maybe a -> Either e a +maybeToEither _ (Just x) = Right x +maybeToEither err Nothing = Left err + +-- | Geometric center of two 1D points +center :: Word64 -> Word64 -> Word64 +center a b | a <= b = a + (b - a) `div` 2 +center a b = b + (a - b) `div` 2 + +safeToWord64 :: Integer -> Maybe Word64 +safeToWord64 x + | x >= 0 && x <= fromIntegral (maxBound :: Word64) = Just (fromIntegral x) + | otherwise = Nothing + +safeToDouble :: Integer -> Maybe Double +safeToDouble x + | x >= 0 && x <= 2^(53 :: Integer) = Just (fromIntegral x) + | otherwise = Nothing + +head :: [a] -> Maybe a +head (x : _) = Just x +head [] = Nothing diff --git a/timeseries-io/timeseries-io.cabal b/timeseries-io/timeseries-io.cabal new file mode 100644 index 00000000000..d95b07e155f --- /dev/null +++ b/timeseries-io/timeseries-io.cabal @@ -0,0 +1,95 @@ +cabal-version: 3.0 +-- The cabal-version field refers to the version of the .cabal specification, +-- and can be different from the cabal-install (the tool) version and the +-- Cabal (the library) version you are using. As such, the Cabal (the library) +-- version used must be equal or greater than the version stated in this field. +-- Starting from the specification version 2.2, the cabal-version field must be +-- the first thing in the cabal file. + +-- Initial package description 'timeseries-io' generated by +-- 'cabal init'. For further documentation, see: +-- http://haskell.org/cabal/users-guide/ +-- +-- The name of the package. +name: timeseries-io + +-- The package version. +-- See the Haskell package versioning policy (PVP) for standards +-- guiding when and how versions should be incremented. +-- https://pvp.haskell.org +-- PVP summary: +-+------- breaking API changes +-- | | +----- non-breaking API additions +-- | | | +--- code changes with no API change +version: 0.1.0.0 + +-- A short (one-line) description of the package. +-- synopsis: + +-- A longer description of the package. +-- description: + +-- The license under which the package is released. +license: BSD-3-Clause + +-- The file containing the license text. +license-file: LICENSE + +-- The package author(s). +author: Russoul + +-- An email address to which users can send suggestions, bug reports, and patches. +maintainer: ruslan.feizerakhmanov@iohk.io + +-- A copyright notice. +-- copyright: +build-type: Simple + +-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README. +extra-doc-files: CHANGELOG.md + +-- Extra source files to be distributed with the package, such as examples, or a tutorial module. +-- extra-source-files: + +common warnings + ghc-options: -Wall + +executable timeseries-io + -- Import common warning flags. + import: warnings + + other-modules: + Cardano.Timeseries.Domain.Instant, + Cardano.Timeseries.Domain.Interval, + Cardano.Timeseries.Domain.Timeseries, + Cardano.Timeseries.Domain.Types, + Cardano.Timeseries.Query, + Cardano.Timeseries.Query.Expr, + Cardano.Timeseries.Query.Parser, + Cardano.Timeseries.Query.Value, + Cardano.Timeseries.Store, + Cardano.Timeseries.Store.Flat, + Cardano.Timeseries.Store.Parser, + Cardano.Timeseries.Util, + + -- .hs or .lhs file containing the Main module. + main-is: Main.hs + + -- Modules included in this executable, other than Main. + -- other-modules: + + -- LANGUAGE extensions used by modules in this package. + -- other-extensions: + + -- Other library packages from which modules are imported. + build-depends: base ^>=4.18.2.1, + attoparsec, + vector, + text, + statistics, + containers + + -- Directories containing source files. + hs-source-dirs: app, src + + -- Base language which the package is written in. + default-language: GHC2021 diff --git a/timeseries-io/todo.txt b/timeseries-io/todo.txt new file mode 100644 index 00000000000..bb50f03811b --- /dev/null +++ b/timeseries-io/todo.txt @@ -0,0 +1,8 @@ +— Bench suite for microbenchmarks (criterion) +— Store implementations (e.g. HashMap) +— Figure out memory consumption per store +— trace-resources package for heap stats +— Feature coverage? + +Together: +— See what's already in cardano-tracer in terms of realtime monitoring diff --git a/timeseries-io/wanted-expressions.txt b/timeseries-io/wanted-expressions.txt new file mode 100644 index 00000000000..a62f090e296 --- /dev/null +++ b/timeseries-io/wanted-expressions.txt @@ -0,0 +1,414 @@ +// ----------- Definitions -------------- + +A : Type +---------------------- +InstantVector A : Type + + +A : Type +-------------------- +RangeVector A : Type + + +Scalar : Type + + +Bool : Type + + +A : Type +B : Type +------------- +(A, B) : Type + + +Timestamp : Type + + +Duration : Type + + +t : (a, b) +------------ ✔ +fst t : a + + +t : (a, b) +---------- ✔ +snd t : b + + +a : A +b : B +--------------- ✔ +(a, b) : (A, B) + + +a : Scalar +b : Scalar +------------- ✔ +a == b : Bool + + +a : Scalar +b : Scalar +------------ ✔ +a < b : Bool + + +a : Scalar +b : Scalar +------------- ✔ +a <= b : Bool + + +a : Scalar +b : Scalar +------------ ✔ +a > b : Bool + + +a : Scalar +b : Scalar +------------- ✔ +a >= b : Bool + + +a : Scalar +b : Scalar +------------ ✔ +a + b : Bool + + +a : Scalar +b : Scalar +------------ ✔ +a - b : Bool + + +a : Scalar +b : Scalar +------------ ✔ +a * b : Bool + + +a : Scalar +b : Scalar +------------ ✔ +a / b : Bool + + +a : Bool +------------ ✔ +not a : Bool + + +a : Bool +b : Bool +------------- ✔ +a && b : Bool + + +a : Bool +b : Bool +------------- ✔ +a || b : Bool + + +n integer // integer literal +-------------------- // Syntax sugar: m ✔ +minutes n : Duration + + + +n integer // integer literal +------------------ // Syntax hugar: h ✔ +hours n : Duration + + +now : Timestamp ✔ + + +t : Timestamp +d : Duration +---------------------- // Syntax sugar: t - d ✔ +rewind t d : Timestamp + + +t : Timestamp +------------------- ✔ +toScalar t : Scalar + + +t : Bool +------------------- ✔ +toScalar t : Scalar + + +// Given a continuous timeseries vector and an interval computes a discrete timeseries vector +s : Timestamp -> InstantVector a +a : Timestamp +b : Timestamp +-------------------------------- ✔ +s[a; b] : RangeVector a + + +// More general version with a sampling rate +s : Timestamp -> InstantVector a +a : Timestamp +b : Timestamp +d : Duration +-------------------------------- ✔ +s[a; b; d] : RangeVector a + + +// Takes a subset of the instant vector by keeping only those instants whose labels are in the provided set. +v : InstantVector a +ls Set label // must be a literal expression (doesn't have a type) +----------------------- ✔ +v{ls} : InstantVector a + + +v : InstantVector Scalar +------------------------ ✔ +max v : Scalar + + +v : InstantVector Scalar +------------------------ ✔ +avg : Scalar + + +f : A -> Bool +v : InstantVector A +---------------------------- ✔ +filter f v : InstantVector A + + +u : InstantVector a +v : InstantVector b +---------------------------- // 1-to-1 match is a assumed ✔ +u ⊗ v : InstantVector (a, b) + + +f : A -> B +v : InstantVector A +-------------------- ✔ +f u : InstantVector B + + +t : Scalar +-------------- ✔ +abs t : Scalar + + +r : RangeVector Scalar +--------------------------------- ✔ +increase r : InstantVector Scalar + + +r : RangeVector Scalar +----------------------------------- ✔ +rate r : InstantVector Scalar + + +r : RangeVector Scalar +-------------------------------------- ✔ +avg_over_time r : InstantVector Scalar + + +r : RangeVector Scalar +------------------------------------- ✔ +sum_over_time r : InstantVector Scalar + + +q : Scalar // must be in range of [0; 1] +r : RangeVector +--------------------------------------------- +quantile_over_time q r : InstantVector Scalar + + +u : InstantVector a +v : InstantVector b +---------------------------- +unless u v : InstantVector a + + +a : InstantVector Scalar +s : Scalar +-------------------------------- // meta-level abbreviation +a <= s : InstantVector Scalar +a <= s ≡ filter (\v -> v <= s) a + + +v : InstantVector Scalar +s : Scalar +-------------------------------- // meta-level abbreviation +v <= bool s : InstantVector Bool +v <= bool s ≡ (\x -> x <= s) v + + +v : InstantVector Scalar +s : Scalar +---------------------------- // meta-level definition (define via map) +v / s : InstantVector Scalar + + +v : InstantVector Scalar +s : Scalar +---------------------------- // meta-level definition (define via map) +v * s : InstantVector Scalar + + +s : Scalar +v : InstantVector Scalar +----------------------------- // meta-level definition (define via map) +s - v : InstantVector Scalar + + +v : InstantVector Bool +--------------------------------- // meta-level definition (define via map) +toScalar v : InstantVector Scalar + +ls : Set Label +q : Scalar +v : InstantVector Scalar +----------------------------------------- +quantile-by ls q v : InstantVector Scalar + +// ----------------------------------- + + + +// PromQL +( + (abs(max(${blockMetric}{environment="${env}"}) - ${blockMetric}{environment="${env}"}) > bool ${toString lagBlocks}) + - + (abs(max(${slotMetric}{environment="${env}"}) - on() group_right() ${slotMetric}{environment="${env}"}) < bool ${toString lagSeconds}) +) == 1 + +// Ours +let maxBlock = max ((${blockMetric} now) {environment = "${env}"}) +let maxSlot = max ((${slotMetric} now) {environment="${env}"}) +let block = (\x -> abs (maxBlock - x)) ((${blockMetric} now) {environment="${env}"}) + > bool + ${toString lagBlocks} +let slot = (\x -> abs (maxSlot - x)) ((${slotMetric} now) {environment="${env}"}) + < bool + ${toString lagSeconds} +(\x -> fst x && not (snd x)) (block ⊗ slot) + + + + + + +//PromQL +${kesPeriodsRemaining} <= ${toString periodNotice} + +//Ours +${kesPeriodsRemaining} now <= ${toString periodNotice} + + + + + + +//PromQL +increase(cardano_node_metrics_Forge_forged_int[24h]) == 0 + +//Ours +increase cardano_node_metrics_Forge_forged_int[now - 24h; now] == 0.0 + + + + + +//PromQL +rate(cardano_node_metrics_slotsMissedNum_int[5m]) * 1 > 0.5 + +//Ours +rate cardano_node_metrics_slotsMissedNum_int[now - 5m; now] > 0.5 + + + + + + +//PromQL +avg_over_time(netdata_statsd_cardano_node_ping_latency_ms_gauge_value_average[5m]) > 500 + +//Ours +avg_over_time netdata_statsd_cardano_node_ping_latency_ms_gauge_value_average[now - 5m; now] > 500.0 + + + + + + +//PromQL +avg(quantile_over_time(0.95, cardano_node_metrics_blockadoption_forgeDelay_real[6h])) >= 4.5 + +//Ours +avg (quantile_over_time 0.95 cardano_node_metrics_blockadoption_forgeDelay_real[now - 6h; now]) >= 4.5 + + + + + + + +//PromQL +100 * avg(avg_over_time(cardano_node_metrics_blockfetchclient_blocksize[6h]) / 90112) > ${highBlockUtilization} + +//Ours +100.0 * avg(avg_over_time cardano_node_metrics_blockfetchclient_blocksize[now - 6h; now] / 90112.0) > ${highBlockUtilization} + + + + +//PromQL +cardano_node_metrics_blockfetchclient_blockdelay_cdfFive < 0.90 + +//Ours +cardano_node_metrics_blockfetchclient_blockdelay_cdfFive now < 0.90 + + + + + +//PromQL +round(increase((time() - cardano_node_metrics_nodeStartTime_int < bool 300)[1h:1m])) > 1 + +//Ours +round (increase (\t -> toScalar (t - cardano_node_metrics_nodeStartTime_int t < bool 300.0))[now-1h;now:1m]) > 1.0 + + + + +//PromQL +(sum_over_time((cardano_node_metrics_blockNum_int != bool 0)[360m:1m]) < bool 350) > 0 unless cardano_node_metrics_blockNum_int" + +//Ours +(sum_over_time (\t -> toScalar (cardano_node_metrics_blockNum_int t != bool 0.0))[now-360m;now:1m] < bool 350) > 0.0 + unless cardano_node_metrics_blockNum_int now + + + + +//PromQL +100 * quantile by(environment) (0.2, (cardano_node_metrics_density_real * 20)) < ${chainDensityVeryLow} + + +//Ours +100 * quantile-by [environment] 0.2 (cardano_node_metrics_density_real now * 20) < ${chainDensityVeryLow} + + + + + +//PromQL +100 * quantile by(environment) (0.2, (cardano_node_metrics_density_real{environment!~"preview"} * 20)) < ${chainDensityLow} + +//Ours +// We need to enhance the filtering by operations other than "subset" From f61273f4f7541b689e2af9948e4cd52bca392ac8 Mon Sep 17 00:00:00 2001 From: Michael Karg Date: Tue, 4 Nov 2025 10:06:10 +0100 Subject: [PATCH 2/8] be lenient with some warnings --- timeseries-io/app/Main.hs | 4 +++- timeseries-io/timeseries-io.cabal | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/timeseries-io/app/Main.hs b/timeseries-io/app/Main.hs index bfac270081d..e36c55bcae6 100644 --- a/timeseries-io/app/Main.hs +++ b/timeseries-io/app/Main.hs @@ -31,5 +31,7 @@ main = do Left err -> die err Right expr -> do print expr - print $ interp store expr 15 + + -- no instance Show Value + -- print $ interp store expr 15 diff --git a/timeseries-io/timeseries-io.cabal b/timeseries-io/timeseries-io.cabal index d95b07e155f..4aca3c82a08 100644 --- a/timeseries-io/timeseries-io.cabal +++ b/timeseries-io/timeseries-io.cabal @@ -52,6 +52,13 @@ extra-doc-files: CHANGELOG.md common warnings ghc-options: -Wall + + -- to ease development only + -Wno-unused-matches + -Wno-unused-top-binds + -Wno-unused-local-binds + -Wno-unused-imports + executable timeseries-io -- Import common warning flags. From bfc0f864be9f8f86e9e31b7f3936ac32ebb353e8 Mon Sep 17 00:00:00 2001 From: Michael Karg Date: Tue, 4 Nov 2025 10:10:27 +0100 Subject: [PATCH 3/8] add simple CBOR importer --- .../Cardano/Timeseries/Import/PlainCBOR.hs | 47 +++++++++++++++++++ timeseries-io/timeseries-io.cabal | 3 ++ 2 files changed, 50 insertions(+) create mode 100644 timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs diff --git a/timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs b/timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs new file mode 100644 index 00000000000..2d2e58faf30 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs @@ -0,0 +1,47 @@ +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE TypeSynonymInstances #-} + +{-# OPTIONS_GHC -Wno-type-defaults -Wno-orphans #-} + +module Cardano.Timeseries.Import.PlainCBOR where + +import Codec.Serialise +import Control.Applicative +import Data.Map.Strict as Map (Map, size) +import Data.Text (Text, unpack) +import Data.Time.Clock.POSIX (POSIXTime) +import GHC.Generics (Generic) + + +data NumericValue = + NVInt Int + | NVDouble Double + deriving (Generic, Show, Serialise) + + +data Snapshot = Snapshot + { singletonLabel :: Text + , timeStamp :: POSIXTime + , scrape :: Map Text NumericValue + } + deriving (Generic, Serialise) + +instance Show Snapshot where + show (Snapshot l t s) = "Snapshot{" ++ unpack l ++ "} @ " ++ show t ++ ", entries: " ++ show (Map.size s) + + +instance Serialise POSIXTime where + encode = encode . toInteger . floor + decode = fromInteger <$> decode + + +readFileSnapshots :: FilePath -> IO [Snapshot] +readFileSnapshots = readFileDeserialise + +-- can be used with Data.List.sortBy +snapshotOrd :: Snapshot -> Snapshot -> Ordering +snapshotOrd a b = + singletonLabel a `compare` singletonLabel b + <> timeStamp a `compare` timeStamp b diff --git a/timeseries-io/timeseries-io.cabal b/timeseries-io/timeseries-io.cabal index 4aca3c82a08..6fecd2681d9 100644 --- a/timeseries-io/timeseries-io.cabal +++ b/timeseries-io/timeseries-io.cabal @@ -69,6 +69,7 @@ executable timeseries-io Cardano.Timeseries.Domain.Interval, Cardano.Timeseries.Domain.Timeseries, Cardano.Timeseries.Domain.Types, + Cardano.Timeseries.Import.PlainCBOR, Cardano.Timeseries.Query, Cardano.Timeseries.Query.Expr, Cardano.Timeseries.Query.Parser, @@ -92,7 +93,9 @@ executable timeseries-io attoparsec, vector, text, + serialise, statistics, + time, containers -- Directories containing source files. From 2abfdb6dd966cd5026a39a2b96445d8dfac8fd20 Mon Sep 17 00:00:00 2001 From: Russoul Date: Wed, 5 Nov 2025 13:09:37 +0400 Subject: [PATCH 4/8] Further work --- timeseries-io/app/Main.hs | 40 +- timeseries-io/dataset.txt | 12 - timeseries-io/elab.txt | 108 ++++ timeseries-io/expression.txt | 1 - .../Cardano/Timeseries/Domain/Identifier.hs | 6 + .../src/Cardano/Timeseries/Domain/Instant.hs | 8 +- .../src/Cardano/Timeseries/Domain/Interval.hs | 5 +- .../Cardano/Timeseries/Domain/Timeseries.hs | 5 +- .../src/Cardano/Timeseries/Domain/Types.hs | 2 + .../Cardano/Timeseries/Import/PlainCBOR.hs | 23 +- timeseries-io/src/Cardano/Timeseries/Query.hs | 488 ++++++++++-------- .../Timeseries/Query/BinaryRelation.hs | 44 ++ .../src/Cardano/Timeseries/Query/Expr.hs | 104 +++- .../src/Cardano/Timeseries/Query/Parser.hs | 192 +++++-- .../src/Cardano/Timeseries/Query/Value.hs | 32 +- timeseries-io/src/Cardano/Timeseries/Store.hs | 3 + .../src/Cardano/Timeseries/Store/Flat.hs | 3 + timeseries-io/sre-expressions.txt | 132 +++++ timeseries-io/timeseries-io.cabal | 7 +- timeseries-io/todo.txt | 8 - timeseries-io/wanted-expressions.txt | 414 --------------- 21 files changed, 901 insertions(+), 736 deletions(-) delete mode 100644 timeseries-io/dataset.txt create mode 100644 timeseries-io/elab.txt delete mode 100644 timeseries-io/expression.txt create mode 100644 timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs create mode 100644 timeseries-io/src/Cardano/Timeseries/Query/BinaryRelation.hs create mode 100644 timeseries-io/sre-expressions.txt delete mode 100644 timeseries-io/todo.txt delete mode 100644 timeseries-io/wanted-expressions.txt diff --git a/timeseries-io/app/Main.hs b/timeseries-io/app/Main.hs index e36c55bcae6..d8074b7f3ca 100644 --- a/timeseries-io/app/Main.hs +++ b/timeseries-io/app/Main.hs @@ -3,20 +3,54 @@ module Main where +import Cardano.Timeseries.Import.PlainCBOR import Cardano.Timeseries.Query (interp) import Cardano.Timeseries.Query.Parser (expr) +import Cardano.Timeseries.Query.Value (Error, Value) import Cardano.Timeseries.Store import Cardano.Timeseries.Store.Flat (Flat, Point (instant, name)) import Cardano.Timeseries.Store.Parser (points) +import Control.Monad (forever) +import Control.Monad.Except (runExceptT) +import Control.Monad.State.Strict (evalState) import Data.Attoparsec (skipMany) -import Data.Attoparsec.Text (decimal, parseOnly, space) +import Data.Attoparsec.Text (decimal, endOfInput, parseOnly, space) +import Data.Foldable (for_, traverse_) import Data.Text (pack) import GHC.List (foldl') import System.Exit (die) +import System.IO (hFlush, stdout) + +snapshotsFile :: String +snapshotsFile = "6nodes_4hours_1mininterval.cbor" + +printStore :: Flat Double -> IO () +printStore = traverse_ print + +printQueryResult :: Either Error Value -> IO () +printQueryResult (Left err) = putStrLn ("Error: " <> err) +printQueryResult (Right ok) = print ok + +interactive :: Flat Double -> IO () +interactive store = forever $ do + putStr "> " + hFlush stdout + queryString <- getLine + case parseOnly (expr <* skipMany space <* endOfInput) (pack queryString) of + Left err -> putStrLn err + Right query -> do + putStrLn ("Expr: " <> show query) + printQueryResult (evalState (runExceptT $ interp store mempty query 0) 0) main :: IO () main = do + content <- readFileSnapshots snapshotsFile + let store = snapshotsToFlatStore content + interactive store + +main1 :: IO () +main1 = do putStrLn "This is a prototype!" string <- readFile "dataset.txt" let result = parseOnly (points decimal <* skipMany space) (pack string) @@ -26,12 +60,12 @@ main = do print (dataset :: [Point Integer]) let store = foldl' (\s p -> insert s (name p) (instant p)) (new :: Flat Double) (fmap (fmap fromIntegral) dataset) string <- readFile "expression.txt" - let result = parseOnly (expr <* skipMany space) (pack string) + let result = parseOnly (expr <* skipMany space <* endOfInput) (pack string) case result of Left err -> die err Right expr -> do print expr - + -- no instance Show Value -- print $ interp store expr 15 diff --git a/timeseries-io/dataset.txt b/timeseries-io/dataset.txt deleted file mode 100644 index cd62b703e25..00000000000 --- a/timeseries-io/dataset.txt +++ /dev/null @@ -1,12 +0,0 @@ -my_metric1 [node = "1"] 0 0 -my_metric1 [node = "1"] 2 2 -my_metric1 [node = "1"] 4 4 -my_metric1 [node = "2"] 8 10 -my_metric1 [node = "2"] 10 8 -my_metric1 [node = "2"] 12 4 -my_metric2 [node = "1"] 0 0 -my_metric2 [node = "1"] 2 2 -my_metric2 [node = "1"] 4 4 -my_metric2 [node = "2"] 8 10 -my_metric2 [node = "2"] 10 8 -my_metric2 [node = "2"] 12 4 diff --git a/timeseries-io/elab.txt b/timeseries-io/elab.txt new file mode 100644 index 00000000000..dcfe1700317 --- /dev/null +++ b/timeseries-io/elab.txt @@ -0,0 +1,108 @@ +// WIP: In case we want some ambiguity in the surface language + +fst t +snd t +(t, t) +t == t +t < t +t <= t +t > t +t >= t +t + t +t - t +t * t +t / t +not a +a && b +a || b +\x -> t +minutes n +hours n +epoch +now +rewind t d +fast_forward t d +toScalar t +s[t; t] +s[t; t; t] +v{ls} +max t +avg t +filter t t +t ⊗ t +t t +abs t : Scalar +increase t +rate t +avg_over_time t +sum_over_time t +quantile_over_time t t +unless t t +quantile-by ls t t + +Γ |- t ~> t' ∈ (A, B) +------------------------ +Γ |- fst t ~> fst t' ∈ A + + +Γ |- t ~> t' ∈ (A, B) +------------------- +Γ |- snd t ~> snd t' ∈ B + + +Γ |- a ~> a' ∈ A +Γ |- b ~> b' ∈ B +-------------------------------- +Γ |- (a, b) ~> (a', b') ∈ (A, B) + + +Γ |- a₀ ~> a₀' ∈ A +Γ |- a₁ ~> a₁' ∈ B +Γ |- A = B = Scalar +------------------------------------ +Γ |- a₀ == a₁ ~> eq_scalar a₀' a₁' ∈ Scalar + + +Γ |- a₀ ~> a₀' ∈ A +Γ |- a₁ ~> a₁' ∈ B +Γ |- A = B = Bool +--------------------------------------- +Γ |- a₀ == a₁ ~> eq_bool a₀' a₁' ∈ Bool + + +Γ |- a₀ ~> a₀' ∈ Scalar +Γ |- a₁ ~> a₁' ∈ Scalar +----------------------------------------- +Γ |- a₀ < a₁ ~> lt_scalar a₀' a₁' ∈ Scalar + + +Γ |- a₀ ~> a₀' ∈ InstantVector Scalar +Γ |- a₁ ~> a₁' ∈ Scalar +----------------------------------------------------------------------- +Γ |- a₀ < a₁ ~> lt_instant_vector_scalar a₀' a₁' ∈ InstantVector Scalar + + +Γ |- a₀ ~> a₀' ∈ Scalar +Γ |- a₁ ~> a₁' ∈ Scalar +---------------------------------------- +Γ |- a₀ + a₁ ~> add_scalar a₀ a₁ ∈ Scalar + + +Γ |- a₀ ~> a₀' ∈ InstantVector Scalar +Γ |- a₁ ~> a₁' ∈ InstantVector Scalar +---------------------------------------------------------------------- +Γ |- a₀ + a₁ ~> add_instant_vector_scalar a₀ a₁ ∈ InstantVector Scalar + + +Γ |- v ∋ Timestamp -> InstantVector Scalar +Γ |- a ∋ Timestamp +Γ |- b ∋ Timestamp +------------------------------------------ +Γ |- v[a, b] ∈ RangeVector Scalar + +Γ |- v ∋ Timestamp -> InstantVector Scalar +Γ |- a ∋ Timestamp +Γ |- b ∋ Timestamp +Γ |- d ∋ Duration +------------------------------------------ +Γ |- v[a, b, d] ∈ RangeVector Scalar diff --git a/timeseries-io/expression.txt b/timeseries-io/expression.txt deleted file mode 100644 index d32c1b6dc18..00000000000 --- a/timeseries-io/expression.txt +++ /dev/null @@ -1 +0,0 @@ -percentile(add($my_metric1, $my_metric2), 50, millis(10), millis(5)) diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs new file mode 100644 index 00000000000..ac532dec3cf --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs @@ -0,0 +1,6 @@ +module Cardano.Timeseries.Domain.Identifier(Identifier(..)) where + +-- | Identifiers come in two sorts: Userspace and Machine-generated. +-- | The first kind comes from user-typed expressions. +-- | The second kind is used for automatic code-generation for hygienic scoping (i.e. to avoid unintentional variable capture) +data Identifier = User !String | Machine !Int deriving (Show, Ord, Eq) diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs index c0a8f42a002..04b690b52cf 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs @@ -4,16 +4,18 @@ import Cardano.Timeseries.Domain.Types (SeriesIdentifier, Timestamp) import Data.Vector +-- | One datapoint in a series. data Instant a = Instant { - labels :: SeriesIdentifier, - timestamp :: Timestamp, - value :: a + labels :: !SeriesIdentifier, + timestamp :: !Timestamp, + value :: !a } deriving (Show, Eq, Functor, Foldable, Traversable) -- | Do the instant vectors share a series? share :: Instant a -> Instant b -> Bool share a b = labels a == labels b +-- | Datapoints from different series. The vector must not contain datapoints sharing a series. type InstantVector a = [Instant a] mostRecent :: Instant a -> Instant a -> Instant a diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs index 203576188b4..7fa22737418 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs @@ -4,9 +4,10 @@ import Cardano.Timeseries.Domain.Types (Timestamp) import Prelude hiding (length) +-- | A time interval. Assumption: `start` ≤ `end` data Interval = Interval { - start :: Timestamp, - end :: Timestamp + start :: !Timestamp, + end :: !Timestamp } deriving (Show, Eq) length :: Interval -> Double diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs index ae0068d6eeb..03a075c28ba 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs @@ -13,9 +13,10 @@ import qualified Data.Set as Set import Data.Vector (Vector) import qualified Data.Vector as Vector +-- | A collection of datapoints sharing a series. data Timeseries a = Timeseries { - labels :: SeriesIdentifier, - dat :: [(Timestamp, a)] + labels :: !SeriesIdentifier, + dat :: ![(Timestamp, a)] } deriving (Show, Functor, Foldable, Traversable) oldest :: Timeseries a -> Maybe (Instant a) diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Types.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Types.hs index c6c085848d8..7890f16c29a 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Types.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Types.hs @@ -9,6 +9,8 @@ import Data.Word (Word64) type MetricIdentifier = String type Label = String + +-- | Key-value pair of a label and its value. type Labelled a = (Label, a) -- | Series is identified by a set of labels. Hence the name. diff --git a/timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs b/timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs index 2d2e58faf30..c2e1f673f87 100644 --- a/timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs +++ b/timeseries-io/src/Cardano/Timeseries/Import/PlainCBOR.hs @@ -1,15 +1,20 @@ {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE LambdaCase #-} {-# LANGUAGE TypeSynonymInstances #-} {-# OPTIONS_GHC -Wno-type-defaults -Wno-orphans #-} module Cardano.Timeseries.Import.PlainCBOR where +import Cardano.Timeseries.Domain.Instant (Instant (..)) +import Cardano.Timeseries.Store.Flat (Flat, Point (..)) + import Codec.Serialise import Control.Applicative +import Control.Monad (join) import Data.Map.Strict as Map (Map, size) +import qualified Data.Map.Strict as Map +import qualified Data.Set as Set import Data.Text (Text, unpack) import Data.Time.Clock.POSIX (POSIXTime) import GHC.Generics (Generic) @@ -29,7 +34,7 @@ data Snapshot = Snapshot deriving (Generic, Serialise) instance Show Snapshot where - show (Snapshot l t s) = "Snapshot{" ++ unpack l ++ "} @ " ++ show t ++ ", entries: " ++ show (Map.size s) + show (Snapshot l t s) = "Snapshot{" ++ unpack l ++ "} @ " ++ show t ++ ", entries: " ++ show s instance Serialise POSIXTime where @@ -40,6 +45,20 @@ instance Serialise POSIXTime where readFileSnapshots :: FilePath -> IO [Snapshot] readFileSnapshots = readFileDeserialise +numericValueToDouble :: NumericValue -> Double +numericValueToDouble (NVInt x) = fromIntegral x +numericValueToDouble (NVDouble x) = x + +scrapeDatapointToPoint :: Text -> POSIXTime -> Text -> NumericValue -> Point Double +scrapeDatapointToPoint node t metric v = + Point (unpack metric) (Instant (Set.fromList [("node", unpack node)]) (floor (t * 1000)) (numericValueToDouble v)) + +snapshotToFlatStore :: Snapshot -> Flat Double +snapshotToFlatStore (Snapshot l t s) = Map.foldlWithKey' (\acc k v -> scrapeDatapointToPoint l t k v : acc) [] s + +snapshotsToFlatStore :: [Snapshot] -> Flat Double +snapshotsToFlatStore = (>>= snapshotToFlatStore) + -- can be used with Data.List.sortBy snapshotOrd :: Snapshot -> Snapshot -> Ordering snapshotOrd a b = diff --git a/timeseries-io/src/Cardano/Timeseries/Query.hs b/timeseries-io/src/Cardano/Timeseries/Query.hs index b9cd535b35f..bb8f1e706ba 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query.hs @@ -2,30 +2,44 @@ {-# OPTIONS_GHC -Wno-typed-holes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE ViewPatterns #-} module Cardano.Timeseries.Query(interp) where +import Cardano.Timeseries.Domain.Identifier (Identifier (..)) import Cardano.Timeseries.Domain.Instant (Instant (Instant), InstantVector, share) import qualified Cardano.Timeseries.Domain.Instant as Domain import qualified Cardano.Timeseries.Domain.Instant as Instant import Cardano.Timeseries.Domain.Interval -import Cardano.Timeseries.Domain.Timeseries (Timeseries (Timeseries), TimeseriesVector, transpose, eachOldest, eachNewest) +import Cardano.Timeseries.Domain.Timeseries (Timeseries (Timeseries), TimeseriesVector, + eachNewest, eachOldest, transpose) import qualified Cardano.Timeseries.Domain.Timeseries as Timeseries import Cardano.Timeseries.Domain.Types (Labelled, MetricIdentifier, Timestamp) +import Cardano.Timeseries.Query.BinaryRelation (BinaryRelation, embedScalar, + mbBinaryRelationInstantVector, mbBinaryRelationScalar) +import qualified Cardano.Timeseries.Query.BinaryRelation as BinaryRelation import Cardano.Timeseries.Query.Expr as Expr import Cardano.Timeseries.Query.Value as Value -import Cardano.Timeseries.Store (Store) +import Cardano.Timeseries.Store (Store (metrics)) import qualified Cardano.Timeseries.Store as Store import Cardano.Timeseries.Util (maybeToEither, safeToDouble, safeToWord64) -import Control.Monad ((<=<), filterM) +import Control.Monad (filterM, (<=<)) +import Control.Monad.Except (ExceptT, liftEither, throwError) +import Control.Monad.State (get, put) +import Control.Monad.State.Strict (State) +import Control.Monad.Trans (lift) import Data.List (find) -import Data.Set (isSubsetOf) +import Data.List.NonEmpty (fromList, toList) +import Data.Map.Strict (Map) +import qualified Data.Map.Strict as Map +import Data.Maybe (fromJust) +import Data.Set (isSubsetOf, member) import qualified Data.Set as Set import Data.Word (Word64) +import GHC.Base (NonEmpty ((:|))) import Statistics.Function (minMax) import Statistics.Quantile (cadpw, quantile) import Statistics.Sample (mean) -import Data.Maybe (fromJust) join :: (a -> b -> c) -> InstantVector a -> InstantVector b -> Either Error (InstantVector c) join _ [] _ = Right [] @@ -44,97 +58,113 @@ sumOverTime at = fmap compute where compute :: Timeseries Double -> Instant Double compute series = Domain.Instant (Timeseries.labels series) at (sum $ Timeseries.toVector series) -expectInstantVector :: Value -> Either Error (InstantVector Value) -expectInstantVector (Value.InstantVector v) = Right v -expectInstantVector _ = Left "Unexpected expression type: expected an instant vector" +expectInstantVector :: Value -> ExceptT Error (State Int) (InstantVector Value) +expectInstantVector (Value.InstantVector v) = pure v +expectInstantVector _ = throwError "Unexpected expression type: expected an instant vector" -expectRangeVector :: Value -> Either Error (TimeseriesVector Value) -expectRangeVector (Value.RangeVector v) = Right v -expectRangeVector _ = Left "Unexpected expression type: expected a range vector" +expectRangeVector :: Value -> ExceptT Error (State Int) (TimeseriesVector Value) +expectRangeVector (Value.RangeVector v) = pure v +expectRangeVector _ = throwError "Unexpected expression type: expected a range vector" -expectTimeseriesScalar :: Timeseries Value -> Either Error (Timeseries Double) +expectTimeseriesScalar :: Timeseries Value -> ExceptT Error (State Int) (Timeseries Double) expectTimeseriesScalar = traverse expectScalar -expectRangeVectorScalar :: Value -> Either Error (TimeseriesVector Double) +expectRangeVectorScalar :: Value -> ExceptT Error (State Int) (TimeseriesVector Double) expectRangeVectorScalar v = expectRangeVector v >>= traverse expectTimeseriesScalar -expectInstantScalar :: Instant Value -> Either Error (Instant Double) +expectInstantScalar :: Instant Value -> ExceptT Error (State Int) (Instant Double) expectInstantScalar = traverse expectScalar -expectInstantVectorScalar :: Value -> Either Error (InstantVector Double) +expectInstantBool :: Instant Value -> ExceptT Error (State Int) (Instant Bool) +expectInstantBool = traverse expectBool + +expectInstantVectorScalar :: Value -> ExceptT Error (State Int) (InstantVector Double) expectInstantVectorScalar v = expectInstantVector v >>= traverse expectInstantScalar -expectPair :: Value -> Either Error (Value, Value) -expectPair (Value.Pair a b) = Right (a, b) -expectPair _ = Left "Unexpected expression type: expected a pair" +expectInstantVectorBool :: Value -> ExceptT Error (State Int) (InstantVector Bool) +expectInstantVectorBool v = expectInstantVector v >>= traverse expectInstantBool + +expectPair :: Value -> ExceptT Error (State Int) (Value, Value) +expectPair (Value.Pair a b) = pure (a, b) +expectPair _ = throwError "Unexpected expression type: expected a pair" + +expectScalar :: Value -> ExceptT Error (State Int) Double +expectScalar (Value.Scalar x) = pure x +expectScalar _ = throwError "Unexpected expression type: expected a scalar" -expectScalar :: Value -> Either Error Double -expectScalar (Value.Scalar x) = Right x -expectScalar _ = Left "Unexpected expression type: expected a scalar" +expectBool :: Value -> ExceptT Error (State Int) Bool +expectBool Value.Truth = pure Prelude.True +expectBool Value.Falsity = pure Prelude.False +expectBool _ = throwError "Unexpected expression type: expected a bool" -expectBoolean :: Value -> Either Error Bool -expectBoolean Truth = Right Prelude.True -expectBoolean Falsity = Right Prelude.False -expectBoolean _ = Left "Unexpected expression type: expected a boolean" +expectBoolean :: Value -> ExceptT Error (State Int) Bool +expectBoolean Truth = pure Prelude.True +expectBoolean Falsity = pure Prelude.False +expectBoolean _ = throwError "Unexpected expression type: expected a boolean" -expectDuration :: Value -> Either Error Word64 -expectDuration (Value.Duration x) = Right x -expectDuration e = Left "Unexpected expression type: expected a duration" +expectDuration :: Value -> ExceptT Error (State Int) Word64 +expectDuration (Value.Duration x) = pure x +expectDuration e = throwError "Unexpected expression type: expected a duration" -expectTimestamp :: Value -> Either Error Word64 -expectTimestamp (Value.Timestamp x) = Right x -expectTimestamp e = Left "Unexpected expression type: expected a timestamp" +expectTimestamp :: Value -> ExceptT Error (State Int) Word64 +expectTimestamp (Value.Timestamp x) = pure x +expectTimestamp e = throwError "Unexpected expression type: expected a timestamp" -expectFunction :: Value -> Either Error (Value -> Either Error Value) -expectFunction (Value.Function f) = Right f -expectFunction e = Left "Unexpected expression type: expected a function" +expectFunction :: Value -> ExceptT Error (State Int) FunctionValue +expectFunction (Value.Function f) = pure f +expectFunction e = throwError "Unexpected expression type: expected a function" -toWord64 :: Integer -> Either Error Word64 -toWord64 x = maybeToEither ("Integer is to big to fit into a 64-bit unsigned integer: " <> show x) (safeToWord64 x) +doubleToInteger :: Double -> ExceptT Error (State Int) Integer +doubleToInteger x = if isWhole x then pure (truncate x) else throwError ("Expected a whole number, got: " <> show x) where + isWhole :: Double -> Bool + isWhole x = snd (properFraction x :: (Integer, Double)) == 0 + +toWord64 :: Integer -> ExceptT Error (State Int) Word64 +toWord64 x = liftEither $ maybeToEither ("Integer is to big to fit into a 64-bit unsigned integer: " <> show x) (safeToWord64 x) toDouble :: Integer -> Either Error Double toDouble x = maybeToEither ("Integer is to big to fit into an IEEE 64-bit floating point" <> show x) (safeToDouble x) -interpRange :: (Value -> Either Error Value) -> Interval -> Word64 -> Either Error (TimeseriesVector Value) +interpRange :: FunctionValue -> Interval -> Word64 -> ExceptT Error (State Int) (TimeseriesVector Value) interpRange f Interval{..} rate = transpose <$> sample start end where - sample :: Timestamp -> Timestamp -> Either Error [InstantVector Value] - sample t max | t > max = Right [] + sample :: Timestamp -> Timestamp -> ExceptT Error (State Int) [InstantVector Value] + sample t max | t > max = pure [] sample t max = (:) <$> (expectInstantVector <=< f) (Value.Timestamp t) <*> sample (t + rate) max -interpVariable :: Store s Double => s -> MetricIdentifier -> Value -> Either Error Value +interpVariable :: Store s Double => s -> MetricIdentifier -> Value -> ExceptT Error (State Int) Value interpVariable store x t = do t <- expectTimestamp t - Right (Value.InstantVector (fmap (fmap Value.Scalar) (Store.evaluate store x t))) + pure (Value.InstantVector (fmap (fmap Value.Scalar) (Store.evaluate store x t))) -interpLabel :: Expr -> Either Error (Labelled String) -interpLabel (Application Label [Expr.Str k, Expr.Str v]) = Right (k, v) -interpLabel _ = Left "Unexpected expression: expected a label" +interpLabel :: Expr -> ExceptT Error (State Int) (Labelled String) +interpLabel (Expr.MkPair (Expr.Str k) (Expr.Str v)) = pure (k, v) +interpLabel _ = throwError "Unexpected expression: expected a label" -interpLabels :: [Expr] -> Either Error [Labelled String] +interpLabels :: [Expr] -> ExceptT Error (State Int) [Labelled String] interpLabels = traverse interpLabel -interpFilter :: (Value -> Either Error Value) -> InstantVector Value -> Either Error (InstantVector Value) +interpFilter :: FunctionValue -> InstantVector Value -> ExceptT Error (State Int) (InstantVector Value) interpFilter f = filterM pred where - pred :: Instant Value -> Either Error Bool + pred :: Instant Value -> ExceptT Error (State Int) Bool pred inst = (expectBoolean <=< f) (Instant.value inst) -interpMap :: (Value -> Either Error Value) -> InstantVector Value -> Either Error (InstantVector Value) +interpMap :: FunctionValue -> InstantVector Value -> ExceptT Error (State Int) (InstantVector Value) interpMap f = traverse (traverse f) -interpRate :: TimeseriesVector Double -> Either Error (InstantVector Double) +interpRate :: TimeseriesVector Double -> ExceptT Error (State Int) (InstantVector Double) interpRate v = do - min <- maybeToEither "Can't compute rate" (eachOldest v) - max <- maybeToEither "Can't compute rate" (eachNewest v) - Right $ zipWith compute min max where + min <- liftEither $ maybeToEither "Can't compute rate" (eachOldest v) + max <- liftEither $ maybeToEither "Can't compute rate" (eachNewest v) + pure $ zipWith compute min max where compute :: Instant Double -> Instant Double -> Instant Double compute min max = let v = (Instant.value max - Instant.value min) / fromIntegral (Instant.timestamp max - Instant.timestamp min) in Instant (Instant.labels min) (Instant.timestamp max) v -interpIncrease :: TimeseriesVector Double -> Either Error (InstantVector Double) -interpIncrease v = do +interpIncrease :: TimeseriesVector Double -> ExceptT Error (State Int) (InstantVector Double) +interpIncrease v = liftEither $ do min <- maybeToEither "Can't compute rate" (eachOldest v) max <- maybeToEither "Can't compute rate" (eachNewest v) Right $ zipWith compute min max where @@ -144,167 +174,215 @@ interpIncrease v = do let v = Instant.value max - Instant.value min in Instant (Instant.labels min) (Instant.timestamp max) v -quantileTimeseries :: Int -> Timeseries Double -> Instant Double +quantileTimeseries :: Double -> Timeseries Double -> Instant Double quantileTimeseries k v@Timeseries{..} = - let value = quantile cadpw k 100 (Timeseries.toVector v) in + let value = quantile cadpw (floor (k * 100)) 100 (Timeseries.toVector v) in Instant labels (Instant.timestamp $ fromJust (Timeseries.newest v)) value -quantileRangeVector :: Int -> TimeseriesVector Double -> InstantVector Double +quantileRangeVector :: Double -> TimeseriesVector Double -> InstantVector Double quantileRangeVector k = map (quantileTimeseries k) -interp :: Store s Double => s -> Expr -> Timestamp -> Either Error Value -interp _ (Expr.Number x) _ = do - x <- toDouble x - Right (Value.Scalar x) -interp store (Expr.Variable x) _ = Right $ Value.Function (interpVariable store x) -interp _ (Application Now []) now = Right (Timestamp (fromIntegral now)) -interp store (Application Range [s, a, b]) now = do - s <- interp store s now >>= expectFunction - a <- interp store a now >>= expectTimestamp - b <- interp store b now >>= expectTimestamp - RangeVector <$> interpRange s (Interval a b) (15 * 1000) -interp store (Application FilterByLabel (s : rest)) now = do - s <- interp store s now >>= expectInstantVector +-- | (v `R` s) ≡ filter (\x -> x `R` s) v +-- | where v : InstantVector Scalar +-- | s : Scalar +interpFilterBinaryRelation :: Store s Double + => s + -> Map Identifier Value + -> Expr + -> BinaryRelation + -> Expr + -> Timestamp + -> ExceptT Error (State Int) Value +interpFilterBinaryRelation store env v rel k now = do + nextVarIdx <- lift get + lift (put (1 + nextVarIdx)) + interp store env + (Application + (Builtin Filter) + (fromList + [ + Lambda + (Machine nextVarIdx) + (Application (Builtin (embedScalar rel)) (fromList [Variable (Machine nextVarIdx), k])) + , + v + ] + ) + ) + now + +interp :: Store s Double => s -> Map Identifier Value -> Expr -> Timestamp -> ExceptT Error (State Int) Value +interp _ env (Expr.Number x) _ = do + pure (Value.Scalar x) +interp store env (Expr.Variable x) _ = + case Map.lookup x env of + Just v -> pure v + Nothing -> + case x of + User x | member x (metrics store) -> + pure $ Value.Function (interpVariable store x) + _ -> + throwError ("Undefined variable: " <> show x) +interp _ env (Builtin Now) now = pure (Timestamp (fromIntegral now)) +interp _ env (Builtin Epoch) now = pure (Timestamp 0) +interp store env (Lambda x body) now = pure $ Value.Function $ \v -> + interp store (Map.insert x v env) body now +interp store env (Let x rhs body) now = do + v <- interp store env rhs now + interp store (Map.insert x v env) body now +interp store env (Application (Builtin FastForward) (toList -> [t, d])) now = do + t <- interp store env t now >>= expectTimestamp + d <- interp store env d now >>= expectDuration + pure (Value.Timestamp (t + d)) +interp store env (Application (Builtin FilterByLabel) (s :| rest)) now = do + s <- interp store env s now >>= expectInstantVector ls <- interpLabels rest - Right (Value.InstantVector (filter (\i -> Set.fromList ls `isSubsetOf` Instant.labels i) s)) -interp store (Application Filter [f, t]) now = do - f <- interp store f now >>= expectFunction - t <- interp store t now >>= expectInstantVector + pure (Value.InstantVector (filter (\i -> Set.fromList ls `isSubsetOf` Instant.labels i) s)) +interp store env (Application (Builtin Filter) (toList -> [f, t])) now = do + f <- interp store env f now >>= expectFunction + t <- interp store env t now >>= expectInstantVector Value.InstantVector <$> interpFilter f t -interp store (Application Join [a, b]) now = do - a <- interp store a now >>= expectInstantVector - b <- interp store b now >>= expectInstantVector - Value.InstantVector <$> join Value.Pair a b -interp store (Application Map [f, x]) now = do - f <- interp store f now >>= expectFunction - x <- interp store x now >>= expectInstantVector +interp store env (Application (Builtin Join) (toList -> [a, b])) now = do + a <- interp store env a now >>= expectInstantVector + b <- interp store env b now >>= expectInstantVector + Value.InstantVector <$> liftEither (join Value.Pair a b) +interp store env (Application (Builtin Map) (toList -> [f, x])) now = do + f <- interp store env f now >>= expectFunction + x <- interp store env x now >>= expectInstantVector Value.InstantVector <$> interpMap f x -interp store (Application RangeWithRate [s, a, b, r]) now = do - s <- interp store s now >>= expectFunction - a <- interp store a now >>= expectTimestamp - b <- interp store b now >>= expectTimestamp - r <- interp store r now >>= expectDuration +interp store env (Application (Builtin Range) (toList -> [s, a, b])) now = do + s <- interp store env s now >>= expectFunction + a <- interp store env a now >>= expectTimestamp + b <- interp store env b now >>= expectTimestamp + RangeVector <$> interpRange s (Interval a b) (15 * 1000) +interp store env (Application (Builtin Range) (toList -> [s, a, b, r])) now = do + s <- interp store env s now >>= expectFunction + a <- interp store env a now >>= expectTimestamp + b <- interp store env b now >>= expectTimestamp + r <- interp store env r now >>= expectDuration RangeVector <$> interpRange s (Interval a b) r -interp store (Application Rewind [t, d]) now = do - t <- interp store t now >>= expectTimestamp - d <- interp store d now >>= expectDuration - Right (Timestamp (t - d)) -interp store (Application BoolToScalar [t]) now = do - t <- interp store t now >>= expectBoolean - Right (Scalar (if t then 1 else 0)) -interp store (Application TimestampToScalar [t]) now = do - t <- interp store t now >>= expectTimestamp - Right (Scalar (fromIntegral t)) -interp store (Application DurationToScalar [t]) now = do - t <- interp store t now >>= expectDuration - Right (Scalar (fromIntegral t)) -interp _ (Application Millis [Expr.Number t]) _ = - Duration <$> toWord64 t -interp _ (Application Seconds [Expr.Number t]) _ = - Duration . (1000 *) <$> toWord64 t -interp _ (Application Mins [Expr.Number t]) _ = - Duration . (60 * 1000 *) <$> toWord64 t -interp _ (Application Hours [Expr.Number t]) _ = - Duration . (60 * 60 * 1000 *) <$> toWord64 t -interp store (Application Add [a, b]) now = do - va <- interp store a now >>= expectInstantVectorScalar - vb <- interp store b now >>= expectInstantVectorScalar - v <- join (+) va vb - Right (Value.InstantVector (fmap (fmap Value.Scalar) v)) -interp store (Application Quantile [Expr.Number k, expr]) now = do - v <- interp store expr now >>= expectInstantVectorScalar - Right $ Value.Scalar $ quantile cadpw (fromIntegral k) 100 (Instant.toVector v) -interp store (Application QuantileOverTime [Expr.Number k, expr]) now = do - v <- interp store expr now >>= expectRangeVectorScalar - Right $ Value.InstantVector (fmap Value.Scalar <$> quantileRangeVector (fromIntegral k) v) -interp store (Application Rate [r]) now = do - r <- interp store r now >>= expectRangeVectorScalar +interp store env (Application (Builtin Rewind) (toList -> [t, d])) now = do + t <- interp store env t now >>= expectTimestamp + d <- interp store env d now >>= expectDuration + pure (Timestamp (t - d)) +interp store env (Application (Builtin BoolToScalar) (t :| [])) now = do + t <- interp store env t now >>= expectBoolean + pure (Scalar (if t then 1 else 0)) +interp store env (Application (Builtin InstantVectorToScalar) (t :| [])) now = do + t <- interp store env t now >>= expectInstantVectorBool + pure (Value.InstantVector (fmap (\x -> Value.Scalar (if x then 1.0 else 0.0)) <$> t)) +interp store env (Application (Builtin TimestampToScalar) (t :| [])) now = do + t <- interp store env t now >>= expectTimestamp + pure (Scalar (fromIntegral t)) +interp store env (Application (Builtin DurationToScalar) (t :| [])) now = do + t <- interp store env t now >>= expectDuration + pure (Scalar (fromIntegral t)) +interp _ env (Application (Builtin Milliseconds) (Expr.Number t :| [])) _ = + Duration <$> (toWord64 <=< doubleToInteger) t +interp _ env (Application (Builtin Seconds) (Expr.Number t :| [])) _ = + Duration . (1000 *) <$> (toWord64 <=< doubleToInteger) t +interp _ env (Application (Builtin Minutes) (Expr.Number t :| [])) _ = + Duration . (60 * 1000 *) <$> (toWord64 <=< doubleToInteger) t +interp _ env (Application (Builtin Hours) (Expr.Number t :| [])) _ = + Duration . (60 * 60 * 1000 *) <$> (toWord64 <=< doubleToInteger) t +interp store env (Application (Builtin AddInstantVectorScalar) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectInstantVectorScalar + vb <- interp store env b now >>= expectInstantVectorScalar + v <- liftEither (join (+) va vb) + pure (Value.InstantVector (fmap (fmap Value.Scalar) v)) +interp store env (Application (Builtin MulInstantVectorScalar) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectInstantVectorScalar + vb <- interp store env b now >>= expectInstantVectorScalar + v <- liftEither (join (*) va vb) + pure (Value.InstantVector (fmap (fmap Value.Scalar) v)) +interp store env (Application (Builtin Quantile) (toList -> [Expr.Number k, expr])) now = do + v <- interp store env expr now >>= expectInstantVectorScalar + pure $ Value.Scalar $ quantile cadpw (floor (k * 100)) 100 (Instant.toVector v) +interp store env (Application (Builtin QuantileOverTime) (toList -> [Expr.Number k, expr])) now = do + v <- interp store env expr now >>= expectRangeVectorScalar + pure $ Value.InstantVector (fmap Value.Scalar <$> quantileRangeVector k v) +interp store env (Application (Builtin Rate) (r :| [])) now = do + r <- interp store env r now >>= expectRangeVectorScalar -- TODO: PromQL's rate() performs linear regression to extrapolate the samples to the bounds r <- interpRate r - Right (Value.InstantVector (fmap (fmap Value.Scalar) r)) -interp store (Application Increase [r]) now = do - r <- interp store r now >>= expectRangeVectorScalar + pure (Value.InstantVector (fmap (fmap Value.Scalar) r)) +interp store env (Application (Builtin Increase) (r :| [])) now = do + r <- interp store env r now >>= expectRangeVectorScalar -- TODO: PromQL's increase() performs linear regression to extrapolate the samples to the bounds r <- interpIncrease r - Right (Value.InstantVector (fmap (fmap Value.Scalar) r)) -interp store (Application Avg [expr]) now = do - v <- interp store expr now >>= expectInstantVectorScalar - Right $ Value.Scalar $ mean (Instant.toVector v) -interp store (Application Max [expr]) now = do - v <- interp store expr now >>= expectInstantVectorScalar - Right $ Value.Scalar $ snd $ minMax (Instant.toVector v) -interp store (Application Min [expr]) now = do - v <- interp store expr now >>= expectInstantVectorScalar - Right $ Value.Scalar $ fst $ minMax (Instant.toVector v) -interp store (Application AvgOverTime [series]) now = do - v <- interp store series now >>= expectRangeVectorScalar - Right $ Value.InstantVector (fmap Value.Scalar <$> avgOverTime now v) -interp store (Application MkPair [a, b]) now = do - va <- interp store a now - vb <- interp store b now - Right $ Value.Pair va vb -interp store (Application Fst [t]) now = do - (a, _) <- interp store t now >>= expectPair - Right a -interp store (Application Snd [t]) now = do - (_, b) <- interp store t now >>= expectPair - Right b -interp store (Application Expr.True []) now = do - Right Truth -interp store (Application Expr.False []) now = do - Right Falsity -interp store (Application Expr.And [a, b]) now = do - va <- interp store a now >>= expectBoolean - vb <- interp store b now >>= expectBoolean - Right (fromBool (va && vb)) -interp store (Application Expr.Or [a, b]) now = do - va <- interp store a now >>= expectBoolean - vb <- interp store b now >>= expectBoolean - Right (fromBool (va || vb)) -interp store (Application Expr.Not [t]) now = do - vt <- interp store t now >>= expectBoolean - Right (fromBool (not vt)) -interp store (Application Expr.EqBool [a, b]) now = do - va <- interp store a now >>= expectBoolean - vb <- interp store b now >>= expectBoolean - Right (fromBool (va == vb)) -interp store (Application Expr.EqScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (fromBool (va == vb)) -interp store (Application Expr.LtScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (fromBool (va < vb)) -interp store (Application Expr.LteScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (fromBool (va <= vb)) -interp store (Application Expr.GtScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (fromBool (va > vb)) -interp store (Application Expr.GteScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (fromBool (va >= vb)) -interp store (Application Expr.AddScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (Value.Scalar (va + vb)) -interp store (Application Expr.MulScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (Value.Scalar (va * vb)) -interp store (Application Expr.SubScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (Value.Scalar (va - vb)) -interp store (Application Expr.DivScalar [a, b]) now = do - va <- interp store a now >>= expectScalar - vb <- interp store b now >>= expectScalar - Right (Value.Scalar (va / vb)) -interp store (Application Expr.Abs [x]) now = do - x <- interp store x now >>= expectScalar - Right (Value.Scalar (abs x)) -interp _ expr _ = Left $ "Can't interpret expression: " <> show expr + pure (Value.InstantVector (fmap (fmap Value.Scalar) r)) +interp store env (Application (Builtin Avg) (expr :| [])) now = do + v <- interp store env expr now >>= expectInstantVectorScalar + pure $ Value.Scalar $ mean (Instant.toVector v) +interp store env (Application (Builtin Max) (expr :| [])) now = do + v <- interp store env expr now >>= expectInstantVectorScalar + pure $ Value.Scalar $ snd $ minMax (Instant.toVector v) +interp store env (Application (Builtin Min) (expr :| [])) now = do + v <- interp store env expr now >>= expectInstantVectorScalar + pure $ Value.Scalar $ fst $ minMax (Instant.toVector v) +interp store env (Application (Builtin AvgOverTime) (expr :| [])) now = do + v <- interp store env expr now >>= expectRangeVectorScalar + pure $ Value.InstantVector (fmap Value.Scalar <$> avgOverTime now v) +interp store env (MkPair a b) now = do + va <- interp store env a now + vb <- interp store env b now + pure $ Value.Pair va vb +interp store env (Application (Builtin Fst) (t :| [])) now = do + (a, _) <- interp store env t now >>= expectPair + pure a +interp store env (Application (Builtin Snd) (t :| [])) now = do + (_, b) <- interp store env t now >>= expectPair + pure b +interp store env (Builtin Expr.True) now = do + pure Truth +interp store env (Builtin Expr.False) now = do + pure Falsity +interp store env (Application (Builtin Expr.And) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectBoolean + vb <- interp store env b now >>= expectBoolean + pure (fromBool (va && vb)) +interp store env (Application (Builtin Expr.Or) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectBoolean + vb <- interp store env b now >>= expectBoolean + pure (fromBool (va || vb)) +interp store env (Application (Builtin Expr.Not) (t :| [])) now = do + vt <- interp store env t now >>= expectBoolean + pure (fromBool (not vt)) +interp store env (Application (Builtin Expr.EqBool) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectBoolean + vb <- interp store env b now >>= expectBoolean + pure (fromBool (va == vb)) +interp store env (Application (Builtin (mbBinaryRelationScalar -> Just rel)) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectScalar + vb <- interp store env b now >>= expectScalar + pure (fromBool (BinaryRelation.materializeScalar rel va vb)) +interp store env (Application (Builtin Expr.AddScalar) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectScalar + vb <- interp store env b now >>= expectScalar + pure (Value.Scalar (va + vb)) +interp store env (Application (Builtin Expr.MulScalar) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectScalar + vb <- interp store env b now >>= expectScalar + pure (Value.Scalar (va * vb)) +interp store env (Application (Builtin Expr.SubScalar) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectScalar + vb <- interp store env b now >>= expectScalar + pure (Value.Scalar (va - vb)) +interp store env (Application (Builtin Expr.DivScalar) (toList -> [a, b])) now = do + va <- interp store env a now >>= expectScalar + vb <- interp store env b now >>= expectScalar + pure (Value.Scalar (va / vb)) +interp store env (Application (Builtin Expr.Abs) (x :| [])) now = do + x <- interp store env x now >>= expectScalar + pure (Value.Scalar (abs x)) +interp store env (Application f (e :| [])) now = do + f <- interp store env f now >>= expectFunction + e <- interp store env e now + f e +interp store env (Application (Builtin Expr.AddDuration) (toList -> [a, b])) now = do + a <- interp store env a now >>= expectDuration + b <- interp store env b now >>= expectDuration + pure (Value.Duration (a + b)) +interp store env (Application (Builtin (mbBinaryRelationInstantVector -> Just rel)) (toList -> [v, k])) now = + interpFilterBinaryRelation store env v rel k now +interp _ _ expr _ = throwError $ "Can't interpret expression: " <> show expr diff --git a/timeseries-io/src/Cardano/Timeseries/Query/BinaryRelation.hs b/timeseries-io/src/Cardano/Timeseries/Query/BinaryRelation.hs new file mode 100644 index 00000000000..74776c0885c --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Query/BinaryRelation.hs @@ -0,0 +1,44 @@ +module Cardano.Timeseries.Query.BinaryRelation( + BinaryRelation(..), + embedScalar, + mbBinaryRelationInstantVector, + mbBinaryRelationScalar, + materializeScalar) where +import Cardano.Timeseries.Query.Expr (Function (..)) + +-- | A datatype used to carve out a subset of `Function` that represents binary relations. +data BinaryRelation = Eq | Lt | Lte | Gt | Gte | NotEq + +embedScalar :: BinaryRelation -> Function +embedScalar Eq = EqScalar +embedScalar Lt = LtScalar +embedScalar Lte = LteScalar +embedScalar Gt = GtScalar +embedScalar Gte = GteScalar +embedScalar NotEq = NotEqScalar + +mbBinaryRelationInstantVector :: Function -> Maybe BinaryRelation +mbBinaryRelationInstantVector EqInstantVectorScalar = Just Eq +mbBinaryRelationInstantVector LtInstantVectorScalar = Just Lt +mbBinaryRelationInstantVector LteInstantVectorScalar = Just Lte +mbBinaryRelationInstantVector GtInstantVectorScalar = Just Gt +mbBinaryRelationInstantVector GteInstantVectorScalar = Just Gte +mbBinaryRelationInstantVector NotEqInstantVectorScalar = Just NotEq +mbBinaryRelationInstantVector _ = Nothing + +mbBinaryRelationScalar :: Function -> Maybe BinaryRelation +mbBinaryRelationScalar EqScalar = Just Eq +mbBinaryRelationScalar LtScalar = Just Lt +mbBinaryRelationScalar LteScalar = Just Lte +mbBinaryRelationScalar GtScalar = Just Gt +mbBinaryRelationScalar GteScalar = Just Gte +mbBinaryRelationScalar NotEqScalar = Just NotEq +mbBinaryRelationScalar _ = Nothing + +materializeScalar :: BinaryRelation -> Double -> Double -> Bool +materializeScalar Eq = (==) +materializeScalar Lt = (<) +materializeScalar Lte = (<=) +materializeScalar Gt = (>) +materializeScalar Gte = (>=) +materializeScalar NotEq = (/=) diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs b/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs index 04236d911cc..49942b31024 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs @@ -1,18 +1,78 @@ module Cardano.Timeseries.Query.Expr(Function(..), Expr(..)) where +import Cardano.Timeseries.Domain.Identifier (Identifier) +import Data.List.NonEmpty (NonEmpty) --- average(add($metric1, $metric2), min(5)) - -{- n ::= +{- f ::= - x ::= - s ::= - - c ::= add | mul | lte | and | mins | millis | eval | quantile | const | mean | mean_over_time | max - - e ::= n | $x | c ( e, ..., e ) + - c ::= add_instant_vector + - | mul_instant_vector + - | eq_instant_vector + - | not_eq_instant_vector + - | lt_instant_vector + - | lte_instant_vector + - | gt_instant_vector + - | gte_instant_vector + - | true + - | false + - | or + - | and + - | not + - | eq_bool + - | add_scalar + - | sub_scalar + - | mul_scalar + - | div_scalar + - | eq_scalar + - | not_eq_scalar + - | lt_scalar + - | lte_scalar + - | gt_scalar + - | gte_scalar + - | bool_to_scalar + - | instant_vector_to_scalar + - | minutes + - | seconds + - | milliseconds + - | hours + - | eval + - | quantile + - | avg + - | avg_over_time + - | quantile + - | quantile_over_time + - | min + - | max + - | abs + - | duration_to_scalar + - | add_duration + - | now + - | epoch + - | rewind + - | fast_forward + - | timestamp_to_scalar + - | sum_over_time + - | rate + - | increase + - | fst + - | snd + - | range + - | filter_by_label + - | filter + - | join + - | map + - e{1} ::= f | $x | x | s | (e{≥0}) | c | (e{≥0}, e{≥0}) + - e{0} ::= e{≥1} e{≥1} e{≥1} ... e{≥1} | \x -> e{≥0} | let x = e{≥0} in e{≥0} -} - -data Function = Add - | Mul - | Lte +data Function = AddInstantVectorScalar + | MulInstantVectorScalar + | EqInstantVectorScalar + | LtInstantVectorScalar + | LteInstantVectorScalar + | GtInstantVectorScalar + | GteInstantVectorScalar + | NotEqInstantVectorScalar | True | False @@ -30,17 +90,22 @@ data Function = Add | LteScalar | GtScalar | GteScalar + | NotEqScalar | BoolToScalar + | InstantVectorToScalar | Abs - | Millis + | Milliseconds | Seconds - | Mins + | Minutes | Hours | DurationToScalar + | AddDuration | Now + | Epoch | Rewind + | FastForward | TimestampToScalar | AvgOverTime @@ -55,17 +120,24 @@ data Function = Add | Fst | Snd - | MkPair | Range - | RangeWithRate | FilterByLabel | Filter - | Label | Join | Map - deriving Show -data Expr = Number Integer | Variable String | Str String | Application Function [Expr] deriving Show +-- | This expression has the following property, assumed in the interpreter: +-- | every expression can be given at most one type and can have at most one interpretation. +-- | The property essentially means that expressions like (a + b) can't be part of the language unless +-- | `+` has only one possible meaning, which is not that case (It can be addition of scalars and addition of instant vectors) +data Expr = Number Double + | Variable Identifier + | Str String + | Builtin Function + | Application Expr (NonEmpty Expr) + | Lambda Identifier Expr + | Let Identifier Expr Expr + | MkPair Expr Expr deriving Show diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs b/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs index 46a5e978943..8458d553d77 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs @@ -1,17 +1,27 @@ {-# LANGUAGE OverloadedStrings #-} +{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} +{-# HLINT ignore "Use <$>" #-} module Cardano.Timeseries.Query.Parser(expr) where +import Cardano.Timeseries.Domain.Identifier (Identifier (User)) import Cardano.Timeseries.Query.Expr import Control.Applicative ((<|>)) +import Control.Monad (guard) import Data.Attoparsec.ByteString.Char8 (isDigit) import Data.Attoparsec.Combinator -import Data.Attoparsec.Text (Parser, decimal, satisfy, space, string) +import Data.Attoparsec.Text (Parser, double, satisfy, space, string) import Data.Char (isAlpha) +import Data.Functor (void) +import Data.List.NonEmpty (fromList) +import GHC.Unicode (isControl) -identifier :: Parser String -identifier = string "$" *> ((:) <$> firstChar <*> many' nextChar) where +keywords :: [String] +keywords = ["let", "in"] + +variableIdentifier :: Parser String +variableIdentifier = (:) <$> firstChar <*> many' nextChar where firstChar :: Parser Char firstChar = satisfy (\x -> isAlpha x || x == '_') @@ -19,69 +29,137 @@ identifier = string "$" *> ((:) <$> firstChar <*> many' nextChar) where nextChar = satisfy (\x -> isAlpha x || x == '_' || isDigit x) number :: Parser Expr -number = Number <$> decimal +number = Number <$> double + +escapedVariable :: Parser String +escapedVariable = string "`" *> many' char <* string "`" where + char :: Parser Char + char = satisfy (\x -> not (isControl x) && (x /= '`') && (x /= '\n') && (x /= '\r')) + +literalVariable :: Parser String +literalVariable = do + x <- variableIdentifier + guard (x `notElem` keywords) + pure x variable :: Parser Expr -variable = Variable <$> identifier +variable = Variable . User <$> (literalVariable <|> escapedVariable) str :: Parser Expr str = Str <$> (string "\"" *> many' char <* string "\"") where char :: Parser Char - char = satisfy (\x -> isAlpha x || x == '_' || x == ' ' || isDigit x) + char = satisfy (\x -> not (isControl x) && (x /= '"') && (x /= '\n') && (x /= '\r')) function :: Parser Function -function = Add <$ string "add" - <|> Mul <$ string "mul" - <|> Lte <$ string "lte" - <|> And <$ string "and" - <|> Or <$ string "or" - <|> Mins <$ string "mins" - <|> Millis <$ string "millis" - <|> Seconds <$ string "seconds" - <|> Hours <$ string "hours" - <|> Avg <$ string "avg" - <|> AvgOverTime <$ string "avg_over_time" - <|> SumOverTime <$ string "sum_over_time" - <|> Max <$ string "max" - <|> Min <$ string "min" - <|> Fst <$ string "fst" - <|> Snd <$ string "snd" - <|> MkPair <$ string "mk_pair" - <|> EqBool <$ string "eq_bool" - <|> EqScalar <$ string "eq_scalar" - <|> LtScalar <$ string "lt_scalar" - <|> LteScalar <$ string "lte_scalar" - <|> GtScalar <$ string "gt_scalar" - <|> GteScalar <$ string "gte_scalar" - <|> AddScalar <$ string "add_scalar" - <|> MulScalar <$ string "mul_scalar" - <|> SubScalar <$ string "sub_scalar" - <|> DivScalar <$ string "div_scalar" - <|> Abs <$ string "abs" - <|> Quantile <$ string "quantile" - <|> QuantileOverTime <$ string "quantile_over_time" - <|> Rate <$ string "rate" - <|> Increase <$ string "increase" - <|> Now <$ string "now" - <|> BoolToScalar <$ string "bool_to_scalar" - <|> TimestampToScalar <$ string "timestamp_to_scalar" - <|> DurationToScalar <$ string "duration_to_scalar" - <|> Range <$ string "range" - <|> RangeWithRate <$ string "range_with_rate" - <|> FilterByLabel <$ string "filter_by_label" - <|> Filter <$ string "filter" - <|> Join <$ string "join" - <|> Map <$ string "map" +function = + AddDuration <$ string "add_duration" + <|> Minutes <$ string "minutes" + <|> Milliseconds <$ string "milliseconds" + <|> Seconds <$ string "seconds" + <|> Hours <$ string "hours" + <|> AvgOverTime <$ string "avg_over_time" + <|> Avg <$ string "avg" + <|> SumOverTime <$ string "sum_over_time" + <|> Max <$ string "max" + <|> Min <$ string "min" + <|> Fst <$ string "fst" + <|> Snd <$ string "snd" + <|> EqBool <$ string "eq_bool" + <|> EqScalar <$ string "eq_scalar" + <|> NotEqScalar <$ string "not_eq_scalar" + <|> LtScalar <$ string "lt_scalar" + <|> LteScalar <$ string "lte_scalar" + <|> GtScalar <$ string "gt_scalar" + <|> GteScalar <$ string "gte_scalar" + <|> AddScalar <$ string "add_scalar" + <|> MulScalar <$ string "mul_scalar" + <|> SubScalar <$ string "sub_scalar" + <|> DivScalar <$ string "div_scalar" + <|> Abs <$ string "abs" + <|> QuantileOverTime <$ string "quantile_over_time" + <|> Quantile <$ string "quantile" + <|> Rate <$ string "rate" + <|> Increase <$ string "increase" + <|> Now <$ string "now" + <|> BoolToScalar <$ string "bool_to_scalar" + <|> InstantVectorToScalar <$ string "instant_vector_to_scalar" + <|> TimestampToScalar <$ string "timestamp_to_scalar" + <|> DurationToScalar <$ string "duration_to_scalar" + <|> Range <$ string "range" + <|> FilterByLabel <$ string "filter_by_label" + <|> Filter <$ string "filter" + <|> Join <$ string "join" + <|> Map <$ string "map" + <|> Epoch <$ string "epoch" + <|> FastForward <$ string "fast_forward" + <|> AddInstantVectorScalar <$ string "add_instant_vector_scalar" + <|> MulInstantVectorScalar <$ string "mul_instant_vector_scalar" + <|> And <$ string "and" + <|> Or <$ string "or" + <|> EqInstantVectorScalar <$ string "eq_instant_vector_scalar" + <|> NotEqInstantVectorScalar <$ string "not_eq_instant_vector_scalar" + <|> LtInstantVectorScalar <$ string "lt_instant_vector_scalar" + <|> LteInstantVectorScalar <$ string "lte_instant_vector_scalar" + <|> GtInstantVectorScalar <$ string "gt_instant_vector_scalar" + <|> GteInstantVectorScalar <$ string "gte_instant_vector_scalar" + +builtin :: Parser Expr +builtin = Builtin <$> function application :: Parser Expr -application = Application - <$> function - <* skipMany space - <* string "(" - <* skipMany space - <*> sepBy expr (skipMany space <* string "," <* skipMany space) - <* skipMany space - <* string ")" +application = do + f <- expr1 + args <- many1 (many1 space *> expr1) + pure $ Application f (fromList args) + +lambda :: Parser Expr +lambda = do + void $ string "\\" + skipMany space + x <- variableIdentifier + skipMany space + void $ string "->" + skipMany space + body <- expr + pure $ Lambda (User x) body + +let_ :: Parser Expr +let_ = do + void $ string "let" + skipMany space + x <- variableIdentifier + skipMany space + void $ string "=" + skipMany space + rhs <- expr + skipMany space + void $ string "in" + skipMany space + body <- expr + pure $ Let (User x) rhs body + +continueTight :: Expr -> Parser Expr +continueTight a = a <$ string ")" + +continuePair :: Expr -> Parser Expr +continuePair a = do + void $ string "," + skipMany space + b <- expr + skipMany space + void $ string ")" + pure (MkPair a b) + +tightOrPair :: Parser Expr +tightOrPair = do + void $ string "(" + skipMany space + a <- expr + skipMany space + continueTight a <|> continuePair a + +expr1 :: Parser Expr +expr1 = number <|> builtin <|> variable <|> str <|> tightOrPair expr :: Parser Expr -expr = number <|> variable <|> application <|> str +expr = let_ <|> lambda <|> application <|> number <|> variable <|> str <|> tightOrPair diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs index fb36932b705..08820d19c80 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs @@ -1,32 +1,46 @@ -module Cardano.Timeseries.Query.Value(Error, Value(..), fromBool) where +module Cardano.Timeseries.Query.Value(Error, Value(..), FunctionValue, fromBool) where import Cardano.Timeseries.Domain.Instant +import Cardano.Timeseries.Domain.Timeseries (TimeseriesVector) +import Control.Monad.Except (ExceptT) +import Control.Monad.State.Strict (State) import Data.Word (Word64) -import Cardano.Timeseries.Domain.Timeseries (TimeseriesVector) type Error = String +type FunctionValue = Value -> ExceptT Error (State Int) Value -- | A model of values that queries interpret into. data Value where -- | A scalar. - Scalar :: Double -> Value + Scalar :: !Double -> Value -- | A range vector. - RangeVector :: TimeseriesVector Value -> Value + RangeVector :: !(TimeseriesVector Value) -> Value -- | An instant vector. - InstantVector :: InstantVector Value -> Value + InstantVector :: !(InstantVector Value) -> Value -- | A pair. - Pair :: Value -> Value -> Value + Pair :: !Value -> !Value -> Value -- | Truth. Truth :: Value -- | Falsity. Falsity :: Value -- | Duration (milliseconds) - Duration :: Word64 -> Value + Duration :: !Word64 -> Value -- | Timestamp (milliseconds since epoch) - Timestamp :: Word64 -> Value + Timestamp :: !Word64 -> Value -- | Function - Function :: (Value -> Either Error Value) -> Value + Function :: !FunctionValue -> Value + +instance Show Value where + show (Scalar x) = show x + show (RangeVector x) = show x + show (InstantVector x) = show x + show (Pair x y) = "(" <> show x <> ", " <> show y <> ")" + show Truth = "True" + show Falsity = "False" + show (Duration d) = show d <> "ms" + show (Timestamp t) = show t + show (Function t) = show "" fromBool :: Bool -> Value fromBool Prelude.True = Truth diff --git a/timeseries-io/src/Cardano/Timeseries/Store.hs b/timeseries-io/src/Cardano/Timeseries/Store.hs index e587745bf20..c7ef18f2ff6 100644 --- a/timeseries-io/src/Cardano/Timeseries/Store.hs +++ b/timeseries-io/src/Cardano/Timeseries/Store.hs @@ -6,6 +6,7 @@ import Cardano.Timeseries.Domain.Instant import Cardano.Timeseries.Domain.Types import Data.Word (Word64) +import Data.Set (Set) stalenessConstant :: Word64 stalenessConstant = 5 * 60 * 1000 @@ -20,3 +21,5 @@ class Store s a | s -> a where new :: s + metrics :: s -> Set MetricIdentifier + diff --git a/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs index 23b283a102b..5507ea3afac 100644 --- a/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs +++ b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs @@ -8,6 +8,7 @@ import Cardano.Timeseries.Store import Cardano.Timeseries.Util import Data.List (foldl') +import Data.Set (fromList) data Point a = Point { name :: MetricIdentifier, @@ -44,3 +45,5 @@ instance Store (Flat a) a where new = [] + metrics store = fromList (map name store) + diff --git a/timeseries-io/sre-expressions.txt b/timeseries-io/sre-expressions.txt new file mode 100644 index 00000000000..83effdd2106 --- /dev/null +++ b/timeseries-io/sre-expressions.txt @@ -0,0 +1,132 @@ +// PromQL +( + (abs(max(${blockMetric}{environment="${env}"}) - ${blockMetric}{environment="${env}"}) > bool ${toString lagBlocks}) + - + (abs(max(${slotMetric}{environment="${env}"}) - on() group_right() ${slotMetric}{environment="${env}"}) < bool ${toString lagSeconds}) +) == 1 + +// Ours +let maxBlock = max ((${blockMetric} now) {environment = "${env}"}) +let maxSlot = max ((${slotMetric} now) {environment="${env}"}) +let block = (\x -> abs (maxBlock - x)) ((${blockMetric} now) {environment="${env}"}) + > bool + ${toString lagBlocks} +let slot = (\x -> abs (maxSlot - x)) ((${slotMetric} now) {environment="${env}"}) + < bool + ${toString lagSeconds} +(\x -> fst x && not (snd x)) (block ⊗ slot) + + + + + + +//PromQL +${kesPeriodsRemaining} <= ${toString periodNotice} + +//Ours +${kesPeriodsRemaining} now <= ${toString periodNotice} + + + + + + +//PromQL +increase(cardano_node_metrics_Forge_forged_int[24h]) == 0 + +//Ours +increase cardano_node_metrics_Forge_forged_int[now - 24h; now] == 0.0 + + + + + +//PromQL +rate(cardano_node_metrics_slotsMissedNum_int[5m]) * 1 > 0.5 + +//Ours +rate cardano_node_metrics_slotsMissedNum_int[now - 5m; now] > 0.5 + + + + + + +//PromQL +avg_over_time(netdata_statsd_cardano_node_ping_latency_ms_gauge_value_average[5m]) > 500 + +//Ours +avg_over_time netdata_statsd_cardano_node_ping_latency_ms_gauge_value_average[now - 5m; now] > 500.0 + + + + + + +//PromQL +avg(quantile_over_time(0.95, cardano_node_metrics_blockadoption_forgeDelay_real[6h])) >= 4.5 + +//Ours +avg (quantile_over_time 0.95 cardano_node_metrics_blockadoption_forgeDelay_real[now - 6h; now]) >= 4.5 + + + + + + + +//PromQL +100 * avg(avg_over_time(cardano_node_metrics_blockfetchclient_blocksize[6h]) / 90112) > ${highBlockUtilization} + +//Ours +100.0 * avg(avg_over_time cardano_node_metrics_blockfetchclient_blocksize[now - 6h; now] / 90112.0) > ${highBlockUtilization} + + + + +//PromQL +cardano_node_metrics_blockfetchclient_blockdelay_cdfFive < 0.90 + +//Ours +cardano_node_metrics_blockfetchclient_blockdelay_cdfFive now < 0.90 + + + + + +//PromQL +round(increase((time() - cardano_node_metrics_nodeStartTime_int < bool 300)[1h:1m])) > 1 + +//Ours +round (increase (\t -> toScalar (t - cardano_node_metrics_nodeStartTime_int t < bool 300.0))[now-1h;now:1m]) > 1.0 + + + + +//PromQL +(sum_over_time((cardano_node_metrics_blockNum_int != bool 0)[360m:1m]) < bool 350) > 0 unless cardano_node_metrics_blockNum_int" + +//Ours +(sum_over_time (\t -> toScalar (cardano_node_metrics_blockNum_int t != bool 0.0))[now-360m;now:1m] < bool 350) > 0.0 + unless cardano_node_metrics_blockNum_int now + + + + +//PromQL +100 * quantile by(environment) (0.2, (cardano_node_metrics_density_real * 20)) < ${chainDensityVeryLow} + + +//Ours +100 * quantile-by [environment] 0.2 (cardano_node_metrics_density_real now * 20) < ${chainDensityVeryLow} + + + + + +//PromQL +100 * quantile by(environment) (0.2, (cardano_node_metrics_density_real{environment!~"preview"} * 20)) < ${chainDensityLow} + +//Ours +// We need to enhance the filtering by operations other than "subset" diff --git a/timeseries-io/timeseries-io.cabal b/timeseries-io/timeseries-io.cabal index 6fecd2681d9..2fc19cfb96e 100644 --- a/timeseries-io/timeseries-io.cabal +++ b/timeseries-io/timeseries-io.cabal @@ -52,7 +52,7 @@ extra-doc-files: CHANGELOG.md common warnings ghc-options: -Wall - + -- to ease development only -Wno-unused-matches -Wno-unused-top-binds @@ -69,11 +69,13 @@ executable timeseries-io Cardano.Timeseries.Domain.Interval, Cardano.Timeseries.Domain.Timeseries, Cardano.Timeseries.Domain.Types, + Cardano.Timeseries.Domain.Identifier, Cardano.Timeseries.Import.PlainCBOR, Cardano.Timeseries.Query, Cardano.Timeseries.Query.Expr, Cardano.Timeseries.Query.Parser, Cardano.Timeseries.Query.Value, + Cardano.Timeseries.Query.BinaryRelation, Cardano.Timeseries.Store, Cardano.Timeseries.Store.Flat, Cardano.Timeseries.Store.Parser, @@ -96,7 +98,8 @@ executable timeseries-io serialise, statistics, time, - containers + containers, + mtl -- Directories containing source files. hs-source-dirs: app, src diff --git a/timeseries-io/todo.txt b/timeseries-io/todo.txt deleted file mode 100644 index bb50f03811b..00000000000 --- a/timeseries-io/todo.txt +++ /dev/null @@ -1,8 +0,0 @@ -— Bench suite for microbenchmarks (criterion) -— Store implementations (e.g. HashMap) -— Figure out memory consumption per store -— trace-resources package for heap stats -— Feature coverage? - -Together: -— See what's already in cardano-tracer in terms of realtime monitoring diff --git a/timeseries-io/wanted-expressions.txt b/timeseries-io/wanted-expressions.txt deleted file mode 100644 index a62f090e296..00000000000 --- a/timeseries-io/wanted-expressions.txt +++ /dev/null @@ -1,414 +0,0 @@ -// ----------- Definitions -------------- - -A : Type ----------------------- -InstantVector A : Type - - -A : Type --------------------- -RangeVector A : Type - - -Scalar : Type - - -Bool : Type - - -A : Type -B : Type -------------- -(A, B) : Type - - -Timestamp : Type - - -Duration : Type - - -t : (a, b) ------------- ✔ -fst t : a - - -t : (a, b) ----------- ✔ -snd t : b - - -a : A -b : B ---------------- ✔ -(a, b) : (A, B) - - -a : Scalar -b : Scalar -------------- ✔ -a == b : Bool - - -a : Scalar -b : Scalar ------------- ✔ -a < b : Bool - - -a : Scalar -b : Scalar -------------- ✔ -a <= b : Bool - - -a : Scalar -b : Scalar ------------- ✔ -a > b : Bool - - -a : Scalar -b : Scalar -------------- ✔ -a >= b : Bool - - -a : Scalar -b : Scalar ------------- ✔ -a + b : Bool - - -a : Scalar -b : Scalar ------------- ✔ -a - b : Bool - - -a : Scalar -b : Scalar ------------- ✔ -a * b : Bool - - -a : Scalar -b : Scalar ------------- ✔ -a / b : Bool - - -a : Bool ------------- ✔ -not a : Bool - - -a : Bool -b : Bool -------------- ✔ -a && b : Bool - - -a : Bool -b : Bool -------------- ✔ -a || b : Bool - - -n integer // integer literal --------------------- // Syntax sugar: m ✔ -minutes n : Duration - - - -n integer // integer literal ------------------- // Syntax hugar: h ✔ -hours n : Duration - - -now : Timestamp ✔ - - -t : Timestamp -d : Duration ----------------------- // Syntax sugar: t - d ✔ -rewind t d : Timestamp - - -t : Timestamp -------------------- ✔ -toScalar t : Scalar - - -t : Bool -------------------- ✔ -toScalar t : Scalar - - -// Given a continuous timeseries vector and an interval computes a discrete timeseries vector -s : Timestamp -> InstantVector a -a : Timestamp -b : Timestamp --------------------------------- ✔ -s[a; b] : RangeVector a - - -// More general version with a sampling rate -s : Timestamp -> InstantVector a -a : Timestamp -b : Timestamp -d : Duration --------------------------------- ✔ -s[a; b; d] : RangeVector a - - -// Takes a subset of the instant vector by keeping only those instants whose labels are in the provided set. -v : InstantVector a -ls Set label // must be a literal expression (doesn't have a type) ------------------------ ✔ -v{ls} : InstantVector a - - -v : InstantVector Scalar ------------------------- ✔ -max v : Scalar - - -v : InstantVector Scalar ------------------------- ✔ -avg : Scalar - - -f : A -> Bool -v : InstantVector A ----------------------------- ✔ -filter f v : InstantVector A - - -u : InstantVector a -v : InstantVector b ----------------------------- // 1-to-1 match is a assumed ✔ -u ⊗ v : InstantVector (a, b) - - -f : A -> B -v : InstantVector A --------------------- ✔ -f u : InstantVector B - - -t : Scalar --------------- ✔ -abs t : Scalar - - -r : RangeVector Scalar ---------------------------------- ✔ -increase r : InstantVector Scalar - - -r : RangeVector Scalar ------------------------------------ ✔ -rate r : InstantVector Scalar - - -r : RangeVector Scalar --------------------------------------- ✔ -avg_over_time r : InstantVector Scalar - - -r : RangeVector Scalar -------------------------------------- ✔ -sum_over_time r : InstantVector Scalar - - -q : Scalar // must be in range of [0; 1] -r : RangeVector ---------------------------------------------- -quantile_over_time q r : InstantVector Scalar - - -u : InstantVector a -v : InstantVector b ----------------------------- -unless u v : InstantVector a - - -a : InstantVector Scalar -s : Scalar --------------------------------- // meta-level abbreviation -a <= s : InstantVector Scalar -a <= s ≡ filter (\v -> v <= s) a - - -v : InstantVector Scalar -s : Scalar --------------------------------- // meta-level abbreviation -v <= bool s : InstantVector Bool -v <= bool s ≡ (\x -> x <= s) v - - -v : InstantVector Scalar -s : Scalar ----------------------------- // meta-level definition (define via map) -v / s : InstantVector Scalar - - -v : InstantVector Scalar -s : Scalar ----------------------------- // meta-level definition (define via map) -v * s : InstantVector Scalar - - -s : Scalar -v : InstantVector Scalar ------------------------------ // meta-level definition (define via map) -s - v : InstantVector Scalar - - -v : InstantVector Bool ---------------------------------- // meta-level definition (define via map) -toScalar v : InstantVector Scalar - -ls : Set Label -q : Scalar -v : InstantVector Scalar ------------------------------------------ -quantile-by ls q v : InstantVector Scalar - -// ----------------------------------- - - - -// PromQL -( - (abs(max(${blockMetric}{environment="${env}"}) - ${blockMetric}{environment="${env}"}) > bool ${toString lagBlocks}) - - - (abs(max(${slotMetric}{environment="${env}"}) - on() group_right() ${slotMetric}{environment="${env}"}) < bool ${toString lagSeconds}) -) == 1 - -// Ours -let maxBlock = max ((${blockMetric} now) {environment = "${env}"}) -let maxSlot = max ((${slotMetric} now) {environment="${env}"}) -let block = (\x -> abs (maxBlock - x)) ((${blockMetric} now) {environment="${env}"}) - > bool - ${toString lagBlocks} -let slot = (\x -> abs (maxSlot - x)) ((${slotMetric} now) {environment="${env}"}) - < bool - ${toString lagSeconds} -(\x -> fst x && not (snd x)) (block ⊗ slot) - - - - - - -//PromQL -${kesPeriodsRemaining} <= ${toString periodNotice} - -//Ours -${kesPeriodsRemaining} now <= ${toString periodNotice} - - - - - - -//PromQL -increase(cardano_node_metrics_Forge_forged_int[24h]) == 0 - -//Ours -increase cardano_node_metrics_Forge_forged_int[now - 24h; now] == 0.0 - - - - - -//PromQL -rate(cardano_node_metrics_slotsMissedNum_int[5m]) * 1 > 0.5 - -//Ours -rate cardano_node_metrics_slotsMissedNum_int[now - 5m; now] > 0.5 - - - - - - -//PromQL -avg_over_time(netdata_statsd_cardano_node_ping_latency_ms_gauge_value_average[5m]) > 500 - -//Ours -avg_over_time netdata_statsd_cardano_node_ping_latency_ms_gauge_value_average[now - 5m; now] > 500.0 - - - - - - -//PromQL -avg(quantile_over_time(0.95, cardano_node_metrics_blockadoption_forgeDelay_real[6h])) >= 4.5 - -//Ours -avg (quantile_over_time 0.95 cardano_node_metrics_blockadoption_forgeDelay_real[now - 6h; now]) >= 4.5 - - - - - - - -//PromQL -100 * avg(avg_over_time(cardano_node_metrics_blockfetchclient_blocksize[6h]) / 90112) > ${highBlockUtilization} - -//Ours -100.0 * avg(avg_over_time cardano_node_metrics_blockfetchclient_blocksize[now - 6h; now] / 90112.0) > ${highBlockUtilization} - - - - -//PromQL -cardano_node_metrics_blockfetchclient_blockdelay_cdfFive < 0.90 - -//Ours -cardano_node_metrics_blockfetchclient_blockdelay_cdfFive now < 0.90 - - - - - -//PromQL -round(increase((time() - cardano_node_metrics_nodeStartTime_int < bool 300)[1h:1m])) > 1 - -//Ours -round (increase (\t -> toScalar (t - cardano_node_metrics_nodeStartTime_int t < bool 300.0))[now-1h;now:1m]) > 1.0 - - - - -//PromQL -(sum_over_time((cardano_node_metrics_blockNum_int != bool 0)[360m:1m]) < bool 350) > 0 unless cardano_node_metrics_blockNum_int" - -//Ours -(sum_over_time (\t -> toScalar (cardano_node_metrics_blockNum_int t != bool 0.0))[now-360m;now:1m] < bool 350) > 0.0 - unless cardano_node_metrics_blockNum_int now - - - - -//PromQL -100 * quantile by(environment) (0.2, (cardano_node_metrics_density_real * 20)) < ${chainDensityVeryLow} - - -//Ours -100 * quantile-by [environment] 0.2 (cardano_node_metrics_density_real now * 20) < ${chainDensityVeryLow} - - - - - -//PromQL -100 * quantile by(environment) (0.2, (cardano_node_metrics_density_real{environment!~"preview"} * 20)) < ${chainDensityLow} - -//Ours -// We need to enhance the filtering by operations other than "subset" From 8317d82d35084cc9c1d0410d5312dcee2f1995a4 Mon Sep 17 00:00:00 2001 From: Russoul Date: Thu, 6 Nov 2025 12:51:45 +0400 Subject: [PATCH 5/8] Add typing.txt --- timeseries-io/typing.txt | 328 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 328 insertions(+) create mode 100644 timeseries-io/typing.txt diff --git a/timeseries-io/typing.txt b/timeseries-io/typing.txt new file mode 100644 index 00000000000..b42a0dd40b5 --- /dev/null +++ b/timeseries-io/typing.txt @@ -0,0 +1,328 @@ +A : Type +---------------------- +InstantVector A : Type + + +A : Type +-------------------- +RangeVector A : Type + + +Scalar : Type + + +Bool : Type + + +A : Type +B : Type +------------- +(A, B) : Type + + +Timestamp : Type + + +Duration : Type + + +t : A +(x := t : A) |- e : B +--------------------- ✔ +let x = t in e : B + + +(x : A) |- t : B +------------------ ✔ +\x -> t : A -> B + + +t : (a, b) +------------ ✔ +fst t : a + + +t : (a, b) +---------- ✔ +snd t : b + + +a : A +b : B +--------------- ✔ +(a, b) : (A, B) + + +a : Scalar +b : Scalar +-------------------- ✔ +eq_scalar a b : Bool + + +a : Scalar +b : Scalar +------------------------ ✔ +not_eq_scalar a b : Bool + + +a : Scalar +b : Scalar +-------------------- ✔ +lt_scalar a b : Bool + + +a : Scalar +b : Scalar +--------------------- ✔ +lte_scalar a b : Bool + + +a : Scalar +b : Scalar +-------------------- ✔ +gt_scalar a b : Bool + + +a : Scalar +b : Scalar +--------------------- ✔ +gte_scalar a b : Bool + + +a : Scalar +b : Scalar +----------------------- ✔ +add_scalar a b : Scalar + + +a : Scalar +b : Scalar +----------------------- ✔ +sub_scalar a b : Scalar + + +a : Scalar +b : Scalar +----------------------- ✔ +mul_scalar a b : Scalar + + +a : Scalar +b : Scalar +----------------------- ✔ +div_scalar a b : Scalar + + +a : Bool +------------ ✔ +not a : Bool + + +a : Bool +b : Bool +------------- ✔ +and a b : Bool + + +a : Bool +b : Bool +------------- ✔ +or a b : Bool + + +n integer // integer literal +----------------------------------- ✔ +milliseconds n : Duration + + +n integer // integer literal +----------------------------------- ✔ +seconds n : Duration + + +n integer // integer literal +----------------------------------- ✔ +minutes n : Duration + + +n integer // integer literal + // Syntax hugar: h ✗ +----------------------------------- ✔ +hours n : Duration + + +epoch : Timestamp ✔ + + +now : Timestamp ✔ + + +t : Timestamp +d : Duration +---------------------- ✔ +rewind t d : Timestamp + + +t : Timestamp +d : Duration +---------------------------- ✔ +fast_forward t d : Timestamp + + +t : Timestamp +------------------------------ ✔ +timestamp_to_scalar t : Scalar + + +t : Bool +------------------------- ✔ +bool_to_scalar t : Scalar + + +// Given a continuous timeseries vector and an interval computes a discrete timeseries vector (range vector) +s : Timestamp -> InstantVector a +a : Timestamp +b : Timestamp +-------------------------------- ✔ +range a b : RangeVector a + + +// More general version with a sampling rate +s : Timestamp -> InstantVector a +a : Timestamp +b : Timestamp +d : Duration +-------------------------------- ✔ +range a b d : RangeVector a + + +∅ labels + + +s string +s' string +l̅s̅ labels +----------------- +(s, s') l̅s̅ labels + + +// Takes a subset of the instant vector by keeping only those instants whose labels are in the provided set. +v : InstantVector a +l̅s̅ labels +-------------------------------------- ✔ +filter_by_label v l̅s̅ : InstantVector a + + +v : InstantVector Scalar +------------------------ ✔ +max v : Scalar + + +v : InstantVector Scalar +------------------------ ✔ +avg : Scalar + + +f : A -> Bool +v : InstantVector A +---------------------------- ✔ +filter f v : InstantVector A + + +u : InstantVector A +v : InstantVector B +------------------------------- // 1-to-1 match is a assumed ✔ +join u v : InstantVector (A, B) + + +f : A -> B +v : InstantVector A +------------------------- ✔ +map f u : InstantVector B + + +t : Scalar +-------------- ✔ +abs t : Scalar + + +r : RangeVector Scalar +--------------------------------- ✔ +increase r : InstantVector Scalar + + +r : RangeVector Scalar +----------------------------------- ✔ +rate r : InstantVector Scalar + + +r : RangeVector Scalar +-------------------------------------- ✔ +avg_over_time r : InstantVector Scalar + + +r : RangeVector Scalar +------------------------------------- ✔ +sum_over_time r : InstantVector Scalar + + +q : Scalar // must be in range of [0; 1] +r : RangeVector +--------------------------------------------- ✔ +quantile_over_time q r : InstantVector Scalar + + +u : InstantVector a +v : InstantVector b +---------------------------- ✗ +unless u v : InstantVector a + + +// meta-level abbreviation +a : InstantVector Scalar +s : Scalar +-------------------------------- ✔ +lte_instant_vector_scalar a s : InstantVector Scalar +lte_instant_vector_scalar a s ≡ filter (\v -> v <= s) a + + +// meta-level abbreviation +v : InstantVector Scalar +s : Scalar +-------------------------------- ✗ +v <= bool s : InstantVector Bool +v <= bool s ≡ (\x -> x <= s) v + + +// meta-level definition (define via map) +v : InstantVector Scalar +s : Scalar +---------------------------- ✗ +v / s : InstantVector Scalar + + +// meta-level definition (define via map) +v : InstantVector Scalar +s : Scalar +---------------------------- ✗ +v * s : InstantVector Scalar + + +// meta-level definition (define via map) +s : Scalar +v : InstantVector Scalar +----------------------------- ✗ +s - v : InstantVector Scalar + + +// meta-level definition (define via map) +v : InstantVector Bool +--------------------------------- ✗ +toScalar v : InstantVector Scalar + + +ls : Set Label +q : Scalar +v : InstantVector Scalar +----------------------------------------- ✗ +quantile-by ls q v : InstantVector Scalar From e4ec16a1b4a9922d14d488f8a9a09cbbadf04fc3 Mon Sep 17 00:00:00 2001 From: Russoul Date: Tue, 11 Nov 2025 09:24:36 +0400 Subject: [PATCH 6/8] Tree store, cabal file --- timeseries-io/app/Main.hs | 42 ++--- .../src/Cardano/Timeseries/Domain/Instant.hs | 13 +- .../src/Cardano/Timeseries/Query/Expr.hs | 2 +- .../src/Cardano/Timeseries/Query/Value.hs | 3 +- timeseries-io/src/Cardano/Timeseries/Store.hs | 3 + .../src/Cardano/Timeseries/Store/Flat.hs | 5 +- .../src/Cardano/Timeseries/Store/Tree.hs | 61 ++++++ timeseries-io/src/Cardano/Timeseries/Util.hs | 13 +- timeseries-io/timeseries-io.cabal | 177 ++++++++---------- 9 files changed, 195 insertions(+), 124 deletions(-) create mode 100644 timeseries-io/src/Cardano/Timeseries/Store/Tree.hs diff --git a/timeseries-io/app/Main.hs b/timeseries-io/app/Main.hs index d8074b7f3ca..fb120ceb500 100644 --- a/timeseries-io/app/Main.hs +++ b/timeseries-io/app/Main.hs @@ -21,6 +21,11 @@ import Data.Text (pack) import GHC.List (foldl') import System.Exit (die) import System.IO (hFlush, stdout) +import Cardano.Timeseries.Store.Tree (fromFlat) +import Cardano.Logging.Resources (readResourceStats) +import Cardano.Logging (forHuman) +import Cardano.Logging.Resources (ResourceStats) +import Cardano.Logging.Resources (Resources(..)) snapshotsFile :: String snapshotsFile = "6nodes_4hours_1mininterval.cbor" @@ -32,8 +37,20 @@ printQueryResult :: Either Error Value -> IO () printQueryResult (Left err) = putStrLn ("Error: " <> err) printQueryResult (Right ok) = print ok -interactive :: Flat Double -> IO () +printStats :: ResourceStats -> IO () +printStats stats = + putStrLn $ "Alloc: " <> show ((fromIntegral (rAlloc stats) :: Double) / 1024 / 1024) <> "MB\n" + <> "Live: " <> show ((fromIntegral (rLive stats) :: Double) / 1024 / 1024) <> "MB\n" + <> "Heap: " <> show ((fromIntegral (rHeap stats) :: Double) / 1024 / 1024) <> "MB\n" + <> "RSS: " <> show ((fromIntegral (rRSS stats) :: Double) / 1024 / 1024) <> "MB" + +interactive :: Store s Double => s -> IO () interactive store = forever $ do + Just stats <- readResourceStats + putStrLn "----------" + printStats stats + putStrLn $ "Number of store entries: " <> show (count store) + putStrLn "----------" putStr "> " hFlush stdout queryString <- getLine @@ -47,25 +64,4 @@ main :: IO () main = do content <- readFileSnapshots snapshotsFile let store = snapshotsToFlatStore content - interactive store - -main1 :: IO () -main1 = do - putStrLn "This is a prototype!" - string <- readFile "dataset.txt" - let result = parseOnly (points decimal <* skipMany space) (pack string) - case result of - Left err -> die err - Right dataset -> do - print (dataset :: [Point Integer]) - let store = foldl' (\s p -> insert s (name p) (instant p)) (new :: Flat Double) (fmap (fmap fromIntegral) dataset) - string <- readFile "expression.txt" - let result = parseOnly (expr <* skipMany space <* endOfInput) (pack string) - case result of - Left err -> die err - Right expr -> do - print expr - - -- no instance Show Value - -- print $ interp store expr 15 - + interactive (fromFlat store) diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs index 04b690b52cf..b8269aca081 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs @@ -1,7 +1,11 @@ -module Cardano.Timeseries.Domain.Instant(Instant(..), InstantVector, mostRecent, share, toVector) where +{-# LANGUAGE OverloadedStrings #-} + +module Cardano.Timeseries.Domain.Instant(Instant(..), InstantVector, mostRecent, share, toVector, prettyInstant, prettyInstantVector) where import Cardano.Timeseries.Domain.Types (SeriesIdentifier, Timestamp) +import qualified Data.Set as Set +import Data.Text (Text, intercalate, pack) import Data.Vector -- | One datapoint in a series. @@ -23,3 +27,10 @@ mostRecent u v = if timestamp u < timestamp v then v else u toVector :: InstantVector Double -> Vector Double toVector = fromList . fmap value + +prettyInstant :: Show a => Instant a -> Text +prettyInstant (Instant ls t v) = + pack (show (Set.toList ls)) <> " " <> pack (show t) <> " " <> pack (show v) + +prettyInstantVector :: Show a => InstantVector a -> Text +prettyInstantVector = intercalate "\n" . fmap prettyInstant diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs b/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs index 49942b31024..6c69ebe6ac6 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Expr.hs @@ -61,7 +61,7 @@ import Data.List.NonEmpty (NonEmpty) - | filter - | join - | map - - e{1} ::= f | $x | x | s | (e{≥0}) | c | (e{≥0}, e{≥0}) + - e{1} ::= f | x | s | (e{≥0}) | c | (e{≥0}, e{≥0}) - e{0} ::= e{≥1} e{≥1} e{≥1} ... e{≥1} | \x -> e{≥0} | let x = e{≥0} in e{≥0} -} diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs index 08820d19c80..1b5fae323ba 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs @@ -5,6 +5,7 @@ import Cardano.Timeseries.Domain.Timeseries (TimeseriesVector) import Control.Monad.Except (ExceptT) import Control.Monad.State.Strict (State) +import Data.Text (unpack) import Data.Word (Word64) type Error = String @@ -34,7 +35,7 @@ data Value where instance Show Value where show (Scalar x) = show x show (RangeVector x) = show x - show (InstantVector x) = show x + show (InstantVector x) = unpack (prettyInstantVector x) show (Pair x y) = "(" <> show x <> ", " <> show y <> ")" show Truth = "True" show Falsity = "False" diff --git a/timeseries-io/src/Cardano/Timeseries/Store.hs b/timeseries-io/src/Cardano/Timeseries/Store.hs index c7ef18f2ff6..f31ff1412e1 100644 --- a/timeseries-io/src/Cardano/Timeseries/Store.hs +++ b/timeseries-io/src/Cardano/Timeseries/Store.hs @@ -8,6 +8,7 @@ import Cardano.Timeseries.Domain.Types import Data.Word (Word64) import Data.Set (Set) +-- | Milliseconds stalenessConstant :: Word64 stalenessConstant = 5 * 60 * 1000 @@ -23,3 +24,5 @@ class Store s a | s -> a where metrics :: s -> Set MetricIdentifier + -- | Total number of (, , , ) tuples. + count :: s -> Int diff --git a/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs index 5507ea3afac..d4517bab11f 100644 --- a/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs +++ b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs @@ -11,8 +11,8 @@ import Data.List (foldl') import Data.Set (fromList) data Point a = Point { - name :: MetricIdentifier, - instant :: Instant a + name :: !MetricIdentifier, + instant :: !(Instant a) } deriving (Show, Eq, Functor) type Flat a = [Point a] @@ -47,3 +47,4 @@ instance Store (Flat a) a where metrics store = fromList (map name store) + count = length diff --git a/timeseries-io/src/Cardano/Timeseries/Store/Tree.hs b/timeseries-io/src/Cardano/Timeseries/Store/Tree.hs new file mode 100644 index 00000000000..151d6408c80 --- /dev/null +++ b/timeseries-io/src/Cardano/Timeseries/Store/Tree.hs @@ -0,0 +1,61 @@ +{-# OPTIONS_GHC -Wno-name-shadowing #-} +module Cardano.Timeseries.Store.Tree(Point(..), Tree, fromFlat) where + +import Cardano.Timeseries.Domain.Instant (Instant (..), InstantVector) +import Cardano.Timeseries.Domain.Types (MetricIdentifier, SeriesIdentifier, Timestamp) +import Cardano.Timeseries.Store +import Cardano.Timeseries.Store.Flat (Flat) +import qualified Cardano.Timeseries.Store.Flat as Flat +import Cardano.Timeseries.Util (range) + +import Prelude hiding (lookup) + +import qualified Data.List as List +import Data.Map.Strict (Map) +import qualified Data.Map.Strict as Map +import Data.Maybe (fromMaybe) +import Data.Set (Set) +import qualified Data.Set as Set + +data Point a = Point { + labels :: !SeriesIdentifier, + value :: !a +} deriving (Show, Ord, Eq, Foldable, Functor) + +type Tree a = Map MetricIdentifier (Map Timestamp [Point a]) + +instance Store (Tree a) a where + insert :: Tree a -> MetricIdentifier -> Instant a -> Tree a + insert store x (Instant ls t v) = flip (Map.insert x) store $ uncurry (Map.insert t) $ + case Map.lookup x store of + Nothing -> (Point ls v : [], Map.empty) + Just inner -> (Point ls v : fromMaybe [] (Map.lookup t inner), inner) + + evaluate :: Tree a -> MetricIdentifier -> Timestamp -> InstantVector a + evaluate store x t = case Map.lookup x store of + Just inner -> + convert $ Map.foldlWithKey accumulate Map.empty (range (t - stalenessConstant) (t + 1) inner) where + + accumulate :: Map SeriesIdentifier (Timestamp, a) -> Timestamp -> [Point a] -> Map SeriesIdentifier (Timestamp, a) + accumulate closest t = List.foldl' (accumulate t) closest where + accumulate :: Timestamp -> Map SeriesIdentifier (Timestamp, a) -> Point a -> Map SeriesIdentifier (Timestamp, a) + accumulate t closest (Point ls v) = flip (Map.insert ls) closest $ + case Map.lookup ls closest of + Just (t', v') | t' > t -> (t', v') + _ -> (t, v) + + convert :: Map SeriesIdentifier (Timestamp, a) -> InstantVector a + convert = map (\(ls, (t, v)) -> Instant ls t v) . Map.toList + Nothing -> [] + + new :: Tree a + new = Map.empty + + metrics :: Tree a -> Set MetricIdentifier + metrics = Set.fromList . Map.keys + + count = Map.foldl (Map.foldl (\acc ps -> acc + length ps)) 0 + +fromFlat :: Flat a -> Tree a +fromFlat [] = new +fromFlat (Flat.Point x instant : ps) = insert (fromFlat ps) x instant diff --git a/timeseries-io/src/Cardano/Timeseries/Util.hs b/timeseries-io/src/Cardano/Timeseries/Util.hs index a3c284fb629..31bbd869f54 100644 --- a/timeseries-io/src/Cardano/Timeseries/Util.hs +++ b/timeseries-io/src/Cardano/Timeseries/Util.hs @@ -1,10 +1,12 @@ {-# OPTIONS_GHC -Wno-unused-top-binds #-} -module Cardano.Timeseries.Util(isSubsetOf, isEqual, toMaybe, maybeToEither, safeToWord64, safeToDouble, head) where +module Cardano.Timeseries.Util(isSubsetOf, isEqual, toMaybe, maybeToEither, safeToWord64, safeToDouble, head, range) where import Prelude hiding (head) import Data.List (nub) +import Data.Map.Strict (Map) +import qualified Data.Map.Strict as Map import Data.Word (Word64) isSubsetOf :: forall a. (Eq a) => [a] -> [a] -> Bool @@ -39,3 +41,12 @@ safeToDouble x head :: [a] -> Maybe a head (x : _) = Just x head [] = Nothing + +-- | Return submap containing only keys in (lo, hi). +-- | Complexity: O(log(n)). +range :: Ord k => k -> k -> Map k v -> Map k v +range lo hi m = + let (_, m1) = Map.split lo m -- drop all < lo + (m2, _) = Map.split hi m1 -- drop all > hi + in m2 + diff --git a/timeseries-io/timeseries-io.cabal b/timeseries-io/timeseries-io.cabal index 2fc19cfb96e..c62a3c79800 100644 --- a/timeseries-io/timeseries-io.cabal +++ b/timeseries-io/timeseries-io.cabal @@ -1,108 +1,95 @@ cabal-version: 3.0 --- The cabal-version field refers to the version of the .cabal specification, --- and can be different from the cabal-install (the tool) version and the --- Cabal (the library) version you are using. As such, the Cabal (the library) --- version used must be equal or greater than the version stated in this field. --- Starting from the specification version 2.2, the cabal-version field must be --- the first thing in the cabal file. - --- Initial package description 'timeseries-io' generated by --- 'cabal init'. For further documentation, see: --- http://haskell.org/cabal/users-guide/ --- --- The name of the package. name: timeseries-io - --- The package version. --- See the Haskell package versioning policy (PVP) for standards --- guiding when and how versions should be incremented. --- https://pvp.haskell.org --- PVP summary: +-+------- breaking API changes --- | | +----- non-breaking API additions --- | | | +--- code changes with no API change version: 0.1.0.0 - --- A short (one-line) description of the package. --- synopsis: - --- A longer description of the package. --- description: - --- The license under which the package is released. -license: BSD-3-Clause - --- The file containing the license text. -license-file: LICENSE - --- The package author(s). author: Russoul - --- An email address to which users can send suggestions, bug reports, and patches. maintainer: ruslan.feizerakhmanov@iohk.io - --- A copyright notice. --- copyright: build-type: Simple - --- Extra doc files to be distributed with the package, such as a CHANGELOG or a README. extra-doc-files: CHANGELOG.md --- Extra source files to be distributed with the package, such as examples, or a tutorial module. --- extra-source-files: +common common + ghc-options: + -Wall -common warnings - ghc-options: -Wall + -- to ease development only + -Wno-unused-matches + -Wno-unused-top-binds + -Wno-unused-local-binds + -Wno-unused-imports - -- to ease development only - -Wno-unused-matches - -Wno-unused-top-binds - -Wno-unused-local-binds - -Wno-unused-imports + default-language: GHC2021 +library + import: common + hs-source-dirs: src + + build-depends: + base ^>=4.18.2.1, + attoparsec, + vector, + text, + serialise, + statistics, + time, + containers, + mtl, + trace-resources, + trace-dispatcher + + exposed-modules: + Cardano.Timeseries.Domain.Instant, + Cardano.Timeseries.Domain.Interval, + Cardano.Timeseries.Domain.Timeseries, + Cardano.Timeseries.Domain.Types, + Cardano.Timeseries.Domain.Identifier, + Cardano.Timeseries.Import.PlainCBOR, + Cardano.Timeseries.Query, + Cardano.Timeseries.Query.Expr, + Cardano.Timeseries.Query.Parser, + Cardano.Timeseries.Query.Value, + Cardano.Timeseries.Query.BinaryRelation, + Cardano.Timeseries.Store, + Cardano.Timeseries.Store.Flat, + Cardano.Timeseries.Store.Tree, + Cardano.Timeseries.Store.Parser, + Cardano.Timeseries.Util, executable timeseries-io - -- Import common warning flags. - import: warnings - - other-modules: - Cardano.Timeseries.Domain.Instant, - Cardano.Timeseries.Domain.Interval, - Cardano.Timeseries.Domain.Timeseries, - Cardano.Timeseries.Domain.Types, - Cardano.Timeseries.Domain.Identifier, - Cardano.Timeseries.Import.PlainCBOR, - Cardano.Timeseries.Query, - Cardano.Timeseries.Query.Expr, - Cardano.Timeseries.Query.Parser, - Cardano.Timeseries.Query.Value, - Cardano.Timeseries.Query.BinaryRelation, - Cardano.Timeseries.Store, - Cardano.Timeseries.Store.Flat, - Cardano.Timeseries.Store.Parser, - Cardano.Timeseries.Util, - - -- .hs or .lhs file containing the Main module. - main-is: Main.hs - - -- Modules included in this executable, other than Main. - -- other-modules: - - -- LANGUAGE extensions used by modules in this package. - -- other-extensions: - - -- Other library packages from which modules are imported. - build-depends: base ^>=4.18.2.1, - attoparsec, - vector, - text, - serialise, - statistics, - time, - containers, - mtl - - -- Directories containing source files. - hs-source-dirs: app, src - - -- Base language which the package is written in. - default-language: GHC2021 + -- Import common source files and warning flags. + import: common + ghc-options: -rtsopts + hs-source-dirs: app + main-is: Main.hs + + build-depends: + base ^>=4.18.2.1, + attoparsec, + vector, + text, + serialise, + statistics, + time, + containers, + mtl, + trace-resources, + trace-dispatcher, + timeseries-io + +benchmark timeseries-io-bench + import: common + type: exitcode-stdio-1.0 + hs-source-dirs: bench + main-is: Bench.hs + + build-depends: + base ^>=4.18.2.1, + attoparsec, + vector, + text, + serialise, + statistics, + time, + containers, + mtl, + trace-resources, + trace-dispatcher, + timeseries-io From 667a431459d119dbbe746036f7af04b1014248ad Mon Sep 17 00:00:00 2001 From: Russoul Date: Tue, 11 Nov 2025 09:31:33 +0400 Subject: [PATCH 7/8] Strict & StrictData by default --- .../src/Cardano/Timeseries/Domain/Identifier.hs | 2 +- .../src/Cardano/Timeseries/Domain/Instant.hs | 8 +++----- .../src/Cardano/Timeseries/Domain/Interval.hs | 4 ++-- .../src/Cardano/Timeseries/Domain/Timeseries.hs | 5 +++-- .../src/Cardano/Timeseries/Query/Parser.hs | 1 - .../src/Cardano/Timeseries/Query/Value.hs | 16 ++++++++-------- .../src/Cardano/Timeseries/Store/Flat.hs | 4 ++-- .../src/Cardano/Timeseries/Store/Tree.hs | 4 ++-- timeseries-io/timeseries-io.cabal | 7 +++++++ 9 files changed, 28 insertions(+), 23 deletions(-) diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs index ac532dec3cf..77ae2d9cdef 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Identifier.hs @@ -3,4 +3,4 @@ module Cardano.Timeseries.Domain.Identifier(Identifier(..)) where -- | Identifiers come in two sorts: Userspace and Machine-generated. -- | The first kind comes from user-typed expressions. -- | The second kind is used for automatic code-generation for hygienic scoping (i.e. to avoid unintentional variable capture) -data Identifier = User !String | Machine !Int deriving (Show, Ord, Eq) +data Identifier = User String | Machine Int deriving (Show, Ord, Eq) diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs index b8269aca081..01f17f2655e 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Instant.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} - module Cardano.Timeseries.Domain.Instant(Instant(..), InstantVector, mostRecent, share, toVector, prettyInstant, prettyInstantVector) where import Cardano.Timeseries.Domain.Types (SeriesIdentifier, Timestamp) @@ -10,9 +8,9 @@ import Data.Vector -- | One datapoint in a series. data Instant a = Instant { - labels :: !SeriesIdentifier, - timestamp :: !Timestamp, - value :: !a + labels :: SeriesIdentifier, + timestamp :: Timestamp, + value :: a } deriving (Show, Eq, Functor, Foldable, Traversable) -- | Do the instant vectors share a series? diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs index 7fa22737418..26f8ff6656e 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Interval.hs @@ -6,8 +6,8 @@ import Prelude hiding (length) -- | A time interval. Assumption: `start` ≤ `end` data Interval = Interval { - start :: !Timestamp, - end :: !Timestamp + start :: Timestamp, + end :: Timestamp } deriving (Show, Eq) length :: Interval -> Double diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs index 03a075c28ba..91cda36b804 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs @@ -1,5 +1,6 @@ {-# OPTIONS_GHC -Wno-name-shadowing #-} {-# LANGUAGE RecordWildCards #-} + module Cardano.Timeseries.Domain.Timeseries(Timeseries(..), TimeseriesVector, transpose, toVector, oldest, newest, eachOldest, eachNewest) where @@ -15,8 +16,8 @@ import qualified Data.Vector as Vector -- | A collection of datapoints sharing a series. data Timeseries a = Timeseries { - labels :: !SeriesIdentifier, - dat :: ![(Timestamp, a)] + labels :: SeriesIdentifier, + dat :: [(Timestamp, a)] } deriving (Show, Functor, Foldable, Traversable) oldest :: Timeseries a -> Maybe (Instant a) diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs b/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs index 8458d553d77..d46bbc38b99 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Parser.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} {-# HLINT ignore "Use <$>" #-} diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs index 1b5fae323ba..0d0cba6c6aa 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs @@ -14,23 +14,23 @@ type FunctionValue = Value -> ExceptT Error (State Int) Value -- | A model of values that queries interpret into. data Value where -- | A scalar. - Scalar :: !Double -> Value + Scalar :: Double -> Value -- | A range vector. - RangeVector :: !(TimeseriesVector Value) -> Value + RangeVector :: TimeseriesVector Value -> Value -- | An instant vector. - InstantVector :: !(InstantVector Value) -> Value + InstantVector :: InstantVector Value -> Value -- | A pair. - Pair :: !Value -> !Value -> Value + Pair :: Value -> Value -> Value -- | Truth. Truth :: Value -- | Falsity. Falsity :: Value -- | Duration (milliseconds) - Duration :: !Word64 -> Value + Duration :: Word64 -> Value -- | Timestamp (milliseconds since epoch) - Timestamp :: !Word64 -> Value + Timestamp :: Word64 -> Value -- | Function - Function :: !FunctionValue -> Value + Function :: FunctionValue -> Value instance Show Value where show (Scalar x) = show x @@ -41,7 +41,7 @@ instance Show Value where show Falsity = "False" show (Duration d) = show d <> "ms" show (Timestamp t) = show t - show (Function t) = show "" + show (Function t) = "" fromBool :: Bool -> Value fromBool Prelude.True = Truth diff --git a/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs index d4517bab11f..c1bf376f6f7 100644 --- a/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs +++ b/timeseries-io/src/Cardano/Timeseries/Store/Flat.hs @@ -11,8 +11,8 @@ import Data.List (foldl') import Data.Set (fromList) data Point a = Point { - name :: !MetricIdentifier, - instant :: !(Instant a) + name :: MetricIdentifier, + instant :: Instant a } deriving (Show, Eq, Functor) type Flat a = [Point a] diff --git a/timeseries-io/src/Cardano/Timeseries/Store/Tree.hs b/timeseries-io/src/Cardano/Timeseries/Store/Tree.hs index 151d6408c80..d3378f5c808 100644 --- a/timeseries-io/src/Cardano/Timeseries/Store/Tree.hs +++ b/timeseries-io/src/Cardano/Timeseries/Store/Tree.hs @@ -18,8 +18,8 @@ import Data.Set (Set) import qualified Data.Set as Set data Point a = Point { - labels :: !SeriesIdentifier, - value :: !a + labels :: SeriesIdentifier, + value :: a } deriving (Show, Ord, Eq, Foldable, Functor) type Tree a = Map MetricIdentifier (Map Timestamp [Point a]) diff --git a/timeseries-io/timeseries-io.cabal b/timeseries-io/timeseries-io.cabal index c62a3c79800..ff704832c2b 100644 --- a/timeseries-io/timeseries-io.cabal +++ b/timeseries-io/timeseries-io.cabal @@ -18,6 +18,13 @@ common common default-language: GHC2021 + default-extensions: + LambdaCase + NamedFieldPuns + OverloadedStrings + StrictData + Strict + library import: common hs-source-dirs: src From ef60bf542a70f38010b211f735363261ad6b2cc1 Mon Sep 17 00:00:00 2001 From: Russoul Date: Wed, 12 Nov 2025 11:32:38 +0400 Subject: [PATCH 8/8] Implement basic criterion benchmarking suite --- timeseries-io/bench/Bench.hs | 62 ++++++++++++++++++ .../data/6nodes_4hours_1mininterval.cbor | Bin 0 -> 8212348 bytes .../src/Cardano/Timeseries/Domain/Instant.hs | 6 +- .../Cardano/Timeseries/Domain/Timeseries.hs | 8 ++- .../src/Cardano/Timeseries/Query/Value.hs | 6 +- timeseries-io/timeseries-io.cabal | 7 +- 6 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 timeseries-io/bench/Bench.hs create mode 100644 timeseries-io/data/6nodes_4hours_1mininterval.cbor diff --git a/timeseries-io/bench/Bench.hs b/timeseries-io/bench/Bench.hs new file mode 100644 index 00000000000..8a134f6ebd9 --- /dev/null +++ b/timeseries-io/bench/Bench.hs @@ -0,0 +1,62 @@ +{-# OPTIONS_GHC -Wno-name-shadowing #-} +{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} +{-# OPTIONS_GHC -Wno-deprecations #-} +import Cardano.Logging (forHuman) +import Cardano.Logging.Resources (ResourceStats, Resources (..), readResourceStats) +import Cardano.Timeseries.Import.PlainCBOR +import Cardano.Timeseries.Query (interp) +import Cardano.Timeseries.Query.Expr (Expr) +import Cardano.Timeseries.Query.Parser (expr) +import Cardano.Timeseries.Query.Value (Error, Value) +import Cardano.Timeseries.Store +import Cardano.Timeseries.Store.Flat (Flat, Point (instant, name)) +import Cardano.Timeseries.Store.Parser (points) +import Cardano.Timeseries.Store.Tree (fromFlat) + +import Control.Monad (forever) +import Control.Monad.Except (runExceptT) +import Control.Monad.State.Strict (evalState) +import Data.Attoparsec (skipMany) +import Data.Attoparsec.Text (decimal, endOfInput, parseOnly, space) +import Data.Either (fromRight) +import Data.Foldable (for_, traverse_) +import Data.Text (pack) +import GHC.List (foldl') +import System.Exit (die) +import System.IO (hFlush, stdout) + +import Criterion.Main + +-- Given a snapshots file +-- Given a query string +-- Bench mark evaluation of the query + +snapshotsFile :: String +snapshotsFile = "data/6nodes_4hours_1mininterval.cbor" + +query :: String +query = "\ + \let start = milliseconds 1762173870000 in \ + \let period = minutes 10 in \ + \let F = range Forge_forged_counter \ + \(fast_forward epoch start) \ + \(fast_forward epoch (add_duration start period)) in \ + \increase F" + +action :: Store s Double => (s, Expr) -> Value +action (store, query) = + let Right !x = evalState (runExceptT $ interp store mempty query 0) 0 in x + +main :: IO () +main = do + content <- readFileSnapshots snapshotsFile + let flatStore = snapshotsToFlatStore content + let treeStore = fromFlat flatStore + case parseOnly (expr <* skipMany space <* endOfInput) (pack query) of + Left err -> putStrLn err + Right !query -> defaultMain + [ + bench "flat" $ nf action (flatStore, query), + bench "tree" $ nf action (treeStore, query) + ] + diff --git a/timeseries-io/data/6nodes_4hours_1mininterval.cbor b/timeseries-io/data/6nodes_4hours_1mininterval.cbor new file mode 100644 index 0000000000000000000000000000000000000000..69d7314c5976ab605cf300436e2788f87927189c GIT binary patch literal 8212348 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 z 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%0D0rSt@;PWid4 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

RjTwl+G-e=4)3_GIa9XQp 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 NFData (Instant a) -- | Do the instant vectors share a series? share :: Instant a -> Instant b -> Bool diff --git a/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs index 91cda36b804..9ed4f25974d 100644 --- a/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs +++ b/timeseries-io/src/Cardano/Timeseries/Domain/Timeseries.hs @@ -4,21 +4,25 @@ module Cardano.Timeseries.Domain.Timeseries(Timeseries(..), TimeseriesVector, transpose, toVector, oldest, newest, eachOldest, eachNewest) where -import Cardano.Timeseries.Domain.Instant (InstantVector, Instant (Instant)) +import Cardano.Timeseries.Domain.Instant (Instant (Instant), InstantVector) import qualified Cardano.Timeseries.Domain.Instant as Instant import Cardano.Timeseries.Domain.Types +import Control.DeepSeq (NFData) import Data.List (find, maximumBy, minimumBy) import Data.Set import qualified Data.Set as Set import Data.Vector (Vector) import qualified Data.Vector as Vector +import GHC.Generics (Generic) -- | A collection of datapoints sharing a series. data Timeseries a = Timeseries { labels :: SeriesIdentifier, dat :: [(Timestamp, a)] -} deriving (Show, Functor, Foldable, Traversable) +} deriving (Show, Functor, Foldable, Traversable, Generic) + +instance NFData a => NFData (Timeseries a) oldest :: Timeseries a -> Maybe (Instant a) oldest Timeseries{..} | Prelude.null dat = Nothing diff --git a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs index 0d0cba6c6aa..5a942891662 100644 --- a/timeseries-io/src/Cardano/Timeseries/Query/Value.hs +++ b/timeseries-io/src/Cardano/Timeseries/Query/Value.hs @@ -7,6 +7,8 @@ import Control.Monad.Except (ExceptT) import Control.Monad.State.Strict (State) import Data.Text (unpack) import Data.Word (Word64) +import Control.DeepSeq (NFData) +import GHC.Generics (Generic) type Error = String type FunctionValue = Value -> ExceptT Error (State Int) Value @@ -30,7 +32,9 @@ data Value where -- | Timestamp (milliseconds since epoch) Timestamp :: Word64 -> Value -- | Function - Function :: FunctionValue -> Value + Function :: FunctionValue -> Value deriving Generic + +instance NFData Value instance Show Value where show (Scalar x) = show x diff --git a/timeseries-io/timeseries-io.cabal b/timeseries-io/timeseries-io.cabal index ff704832c2b..0289d801b74 100644 --- a/timeseries-io/timeseries-io.cabal +++ b/timeseries-io/timeseries-io.cabal @@ -22,7 +22,6 @@ common common LambdaCase NamedFieldPuns OverloadedStrings - StrictData Strict library @@ -40,7 +39,8 @@ library containers, mtl, trace-resources, - trace-dispatcher + trace-dispatcher, + deepseq exposed-modules: Cardano.Timeseries.Domain.Instant, @@ -99,4 +99,5 @@ benchmark timeseries-io-bench mtl, trace-resources, trace-dispatcher, - timeseries-io + timeseries-io, + criterion