Skip to content

Commit 4244cee

Browse files
committed
additional metrics
1 parent 47a6e76 commit 4244cee

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

ghcide/src/Development/IDE/Core/Shake.hs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ import Development.IDE.GHC.Orphans ()
118118
import Development.IDE.Graph hiding (ShakeValue)
119119
import qualified Development.IDE.Graph as Shake
120120
import Development.IDE.Graph.Database (ShakeDatabase,
121+
shakeDatabaseDatabase,
121122
shakeOpenDatabase,
122123
shakeProfileDatabase,
123124
shakeRunDatabaseForKeys)
@@ -154,12 +155,16 @@ import qualified Data.HashSet as HSet
154155
import Data.IORef.Extra (atomicModifyIORef'_,
155156
atomicModifyIORef_)
156157
import Data.Text (pack)
158+
import Development.IDE.Graph.Database (shakeGetKeys)
159+
import Development.IDE.Graph.Internal.Types (Step (Step),
160+
databaseStep)
157161
import qualified Development.IDE.Types.Exports as ExportsMap
158162
import HieDb.Types
159163
import Ide.Plugin.Config
160164
import qualified Ide.PluginUtils as HLS
161165
import Ide.Types (PluginId)
162-
import System.Metrics (Store, registerGauge)
166+
import System.Metrics (Store, registerCounter,
167+
registerGauge)
163168

164169
-- | Maximum age (in # builds) of a cached value after which it's considered garbage
165170
garbageAge :: Int
@@ -327,7 +332,7 @@ lastValueIO s@ShakeExtras{positionMapping,persistentKeys,state} k file = do
327332
| otherwise = do
328333
pmap <- readVar persistentKeys
329334
mv <- runMaybeT $ do
330-
liftIO $ Logger.logDebug (logger s) $ T.pack $ "LOOKUP UP PERSISTENT FOR: " ++ show k
335+
liftIO $ Logger.logDebug (logger s) $ T.pack $ "LOOKUP PERSISTENT FOR: " ++ show k
331336
f <- MaybeT $ pure $ HMap.lookup (Key k) pmap
332337
(dv,del,ver) <- MaybeT $ runIdeAction "lastValueIO" s $ f file
333338
MaybeT $ pure $ (,del,ver) <$> fromDynamic dv
@@ -548,11 +553,23 @@ shakeOpen lspEnv defaultConfig logger debouncer
548553
{ optOTMemoryProfiling = IdeOTMemoryProfiling otProfilingEnabled
549554
, optProgressStyle
550555
} <- getIdeOptionsIO shakeExtras
556+
551557
startTelemetry otProfilingEnabled logger $ state shakeExtras
552558

553559
for_ metrics $ \store -> do
554560
let readValuesCounter = fromIntegral . HMap.size <$> readVar (state shakeExtras)
561+
readDirtyKeys = fromIntegral . Prelude.length <$> readIORef (dirtyKeys shakeExtras)
562+
readIndexPending = fromIntegral . HMap.size <$> readTVarIO (indexPending $ hiedbWriter shakeExtras)
563+
readExportsMap = fromIntegral . HMap.size . getExportsMap <$> readVar (exportsMap shakeExtras)
564+
readDatabaseCount = fromIntegral . Prelude.length <$> shakeGetKeys shakeDb
565+
readDatabaseStep = (\(Step s) -> fromIntegral s) <$> readIORef (databaseStep $ shakeDatabaseDatabase shakeDb)
566+
555567
registerGauge "ghcide.values_count" readValuesCounter store
568+
registerGauge "ghcide.dirty_keys_count" readDirtyKeys store
569+
registerGauge "ghcide.indexing_pending_count" readIndexPending store
570+
registerCounter "ghcide.exports_map_count" readExportsMap store
571+
registerCounter "ghcide.database_count" readDatabaseCount store
572+
registerCounter "ghcide.build_count" readDatabaseStep store
556573

557574
return ideState
558575

0 commit comments

Comments
 (0)