2012-12-14 8 views
7

Nach seeing EKG in 24 days of Hackage, habe ich versucht, es in einem meiner Programme zu verwenden, aber es zeigte keine meiner Speicherzuweisung.Warum zeigt EKG meinen zugewiesenen Speicher nicht an?

Also versuchte ich es noch einmal mit einem Beispielprogramm, das Speicher saugt gerade:

{-# LANGUAGE OverloadedStrings #-} 
module Main where 

import System.Remote.Monitoring (forkServer) 
import Control.Applicative ((<$>)) 
import Control.Monad (foldM, forM_) 
import Control.Monad.Primitive (PrimMonad, PrimState) 
import Data.Vector.Mutable (MVector, replicate, read, write, length) 
import Prelude hiding (read, length, replicate) 
import Text.Printf 

accumBy :: (Functor m, PrimMonad m) => (a -> a -> a) -> MVector (PrimState m) a -> m a 
accumBy f v = do 
    a <- read v 0 
    foldM (\a i -> do 
    a' <- f a <$> read v i 
    write v i a' 
    return a' 
    ) a [1 .. length v - 1] 

main :: IO() 
main = do 
    forkServer "localhost" 8000 
    forM_ [1..] $ \n -> do 
    v <- replicate (n*1024) (n :: Int) 
    accumBy (+) v >>= printf "%08x\n" 

Das Programm läuft gut

% ghc --make Temp.hs -rtsopts && ./Temp +RTS -K32mM -RTS 
00000400 
00001000 
00002400 
... 

Aber EKG scheint nicht meine Speichernutzung zu Erkennen an alle

EKG stats

Was mache ich falsch?

Antwort

11

Sie benötigen -T oder -t oder -S oder -sRTS option für das Sammeln von Statistiken zu verwenden, zB:

ghc --make Temp.hs -rtsopts && ./Temp +RTS -T -K32mM -RTS 
+1

[direkt in der Dokumentation] (http://hackage.haskell.org/packages/archive/ ekg/0.3.1.2/doc/html/System-Fernüberwachung.html # g: 1), doh. – rampion

Verwandte Themen