threadscope 0.2.14 → 0.2.14.1
raw patch · 17 files changed
+51/−47 lines, 17 filesdep ~bytestringdep ~containersdep ~filepath
Dependency ranges changed: bytestring, containers, filepath, ghc-events, mtl, template-haskell, text, time, unix
Files
- CHANGELOG.md +9/−3
- Events/EventDuration.hs +3/−3
- Events/ReadEvents.hs +3/−3
- Events/SparkStats.hs +1/−1
- Events/TestEvents.hs +1/−1
- GUI/App.hs +1/−1
- GUI/DataFiles.hs +1/−1
- GUI/KeyView.hs +3/−3
- GUI/SaveAs.hs +1/−1
- GUI/SummaryView.hs +4/−4
- GUI/Timeline.hs +1/−1
- GUI/Timeline/Render.hs +2/−2
- GUI/Timeline/Render/Constants.hs +1/−1
- GUI/Timeline/Sparks.hs +1/−1
- GUI/Timeline/Ticks.hs +1/−1
- README.md +9/−10
- threadscope.cabal +9/−10
CHANGELOG.md view
@@ -1,10 +1,16 @@ # Revision history for threadscope +## 2022-05-10 - v0.2.14.1++* Spelling fixes ([#121](https://github.com/haskell/ThreadScope/pull/121), [#123](https://github.com/haskell/ThreadScope/pull/123))+* Add compatibility with GHC-9.2 ([#124](https://github.com/haskell/ThreadScope/pull/124), [#125](https://github.com/haskell/ThreadScope/pull/125))+* Update dependencies ([#126](https://github.com/haskell/ThreadScope/pull/126))+ ## 2021-01-09 - v0.2.14 -* Print times with more sensible units [#111](https://github.com/haskell/ThreadScope/pull/111)-* EventDuration: Make it more robust to truncated eventlogs [#110](https://github.com/haskell/ThreadScope/pull/110)-* Use GitHub Actions for CI [#113](https://github.com/haskell/ThreadScope/pull/113)+* Print times with more sensible units ([#111](https://github.com/haskell/ThreadScope/pull/111))+* EventDuration: Make it more robust to truncated eventlogs ([#110](https://github.com/haskell/ThreadScope/pull/110))+* Use GitHub Actions for CI ([#113](https://github.com/haskell/ThreadScope/pull/113)) * Relax upper version bounds for ghc-events, time, bytestring, and template-haskell ## 2020-04-06 - v0.2.13
Events/EventDuration.hs view
@@ -17,9 +17,9 @@ import qualified GHC.RTS.Events as GHC ---------------------------------------------------------------------------------- This datastructure is a duration-based representation of the event--- loginformation where thread-runs and GCs are explicitly represented--- by a single constructor identifying their start and end points.+-- This data structure is a duration-based representation of the eventlog+-- information where thread-runs and GCs are explicitly represented by a+-- single constructor identifying their start and end points. data EventDuration = ThreadRun {-#UNPACK#-}!ThreadId
Events/ReadEvents.hs view
@@ -35,12 +35,12 @@ -- import qualified GHC.RTS.Events as GHCEvents -- -- The GHC.RTS.Events library returns the profile information--- in a data-streucture which contains a list data structure+-- in a data-structure which contains a list data structure -- representing the events i.e. [GHCEvents.Event] -- ThreadScope transforms this list into an alternative representation -- which (for each HEC) records event *durations* which are ordered in time. -- The durations represent the run-lengths for thread execution and--- run-lengths for garbage colleciton. This data-structure is called+-- run-lengths for garbage collection. This data-structure is called -- EventDuration. -- ThreadScope then transformations this data-structure into another -- data-structure which gives a binary-tree view of the event information@@ -207,7 +207,7 @@ allHisto :: [(Timestamp, Int, Timestamp)] allHisto = catMaybes . sparkSummary M.empty . toList $ sparkProfile - -- Sparks of zero lenght are already well visualized in other graphs:+ -- Sparks of zero length are already well visualized in other graphs: durHistogram = filter (\ (_, logdur, _) -> logdur > 0) allHisto -- Precompute some extremums of the maximal interval, needed for scales. durs = [(logdur, dur) | (_start, logdur, dur) <- durHistogram]
Events/SparkStats.hs view
@@ -24,7 +24,7 @@ -- | Create spark stats for a duration, given absolute -- numbers of sparks in all categories at the start and end of the duration. -- The units for spark transitions (first 6 counters) is [spark/duration]:--- the fact that intervals may have different lenghts is ignored here.+-- the fact that intervals may have different lengths is ignored here. -- The units for the pool stats are just [spark]. -- The values in the second counter have to be greater or equal -- to the values in the first counter, except for the spark pool size.
Events/TestEvents.hs view
@@ -119,7 +119,7 @@ EventType wakeup "Wakeup thread" (Just 10), EventType startGC "Start GC" (Just 0), EventType finishGC "Finish GC" (Just 0),- EventType reqSeqGC "Request sequetial GC" (Just 0),+ EventType reqSeqGC "Request sequential GC" (Just 0), EventType reqParGC "Reqpargc parallel GC" (Just 0), EventType createSparkThread "Create spark thread" (Just 8), EventType logMessage "Log message" Nothing,
GUI/App.hs view
@@ -9,6 +9,6 @@ ------------------------------------------------------------------------------- -- | Initialize application--- Perform application initialization for non-Mac OS X platforms+-- Perform application initialization for non-macOS platforms initApp :: IO () initApp = return ()
GUI/DataFiles.hs view
@@ -21,7 +21,7 @@ logoFile :: FilePath logoFile = "threadscope.png" --- | Textual representaion of the UI file+-- | Textual representation of the UI file ui :: Q Exp ui = [| TE.decodeUtf8 $(makeRelativeToProject uiFile >>= embedFile) |]
GUI/KeyView.hs view
@@ -106,10 +106,10 @@ "In the spark conversion graph the coloured area represents the number " ++ "of sparks that have fizzled.") , ("GCed spark", KEventAndGraph, gcColour,- "As an event it indicates a spark has been GC'd, meaning it has been " +++ "As an event it indicates a spark has been GCed, meaning it has been " ++ "discovered that the spark's thunk was no longer needed anywhere. " ++ "In the spark conversion graph the coloured area represents the number " ++- "of sparks that were GC'd.")+ "of sparks that were GCed.") ] @@ -136,7 +136,7 @@ renderKeyIcon KEvent keyColour = renderKEvent keyColour renderKeyIcon KEventAndGraph keyColour = do renderKEvent keyColour- -- An icon roughly repreenting a jagedy graph.+ -- An icon roughly representing a jaggedy graph. let x = fromIntegral ox y = fromIntegral hecBarHeight C.moveTo (2*x) (y - 2)
GUI/SaveAs.hs view
@@ -27,7 +27,7 @@ saveAs :: HECs -> ViewParameters -> Double -> DrawingArea -> (Int, Int, Render ())-saveAs hecs params' @ViewParameters{xScaleAreaHeight, width,+saveAs hecs params'@ViewParameters{xScaleAreaHeight, width, height = oldHeight {-, histogramHeight-}} yScaleAreaWidth yScaleArea = let histTotalHeight = histXScaleHeight -- + histogramHeight
GUI/SummaryView.hs view
@@ -124,7 +124,7 @@ [ cellText := show ovf ] addSparksColumn "Dud" $ \(_, SparkCounts _ _ _ dud _ _) -> [ cellText := show dud ]- addSparksColumn "GC'd" $ \(_, SparkCounts _ _ _ _ gc _) ->+ addSparksColumn "GCed" $ \(_, SparkCounts _ _ _ _ gc _) -> [ cellText := show gc ] addSparksColumn "Fizzled" $ \(_, SparkCounts _ _ _ _ _ fiz) -> [ cellText := show fiz ]@@ -714,7 +714,7 @@ -- For events that contain discrete increments. We assume the event -- is emitted close to the end of the process it measures, -- so we ignore the first found event, because most of the process- -- could have happened before the start of the current inverval.+ -- could have happened before the start of the current interval. -- This is consistent with @alterCounter@. For interval beginning -- at time 0, we start with @Just 0@. alterIncrement _ Nothing = Just 0@@ -881,7 +881,7 @@ } -- Cap is not in the GC. Mark it as idle to complete -- the identification of caps that take part- -- in the current GC. Without overwritin the mode,+ -- in the current GC. Without overwriting the mode, -- the cap could be processed later on as if -- it took part in the GC, giving wrong results. ModeEnd -> dGC { gcMode = ModeIdle }@@ -934,7 +934,7 @@ ModeIdle -> errorAs "scanEvents: EndGC ModeIdle" $ sd { dGCTable = IM.insert cap endedGC dGCTable } SparkCounters crt dud ovf cnv fiz gcd _rem ->- -- We are guranteed the first spark counters event has all zeroes,+ -- We are guaranteed the first spark counters event has all zeroes, -- do we don't need to rig the counters for maximal interval. let current = RtsSpark crt dud ovf cnv fiz gcd in sd { dsparkTable =
GUI/Timeline.hs view
@@ -331,7 +331,7 @@ return (xv, xv') ---------------------------------------------------------------------------------- Update the internal state and the timemline view after changing which+-- Update the internal state and the timeline view after changing which -- traces are displayed, or the order of traces. queueRedrawTimelines :: TimelineState -> IO ()
GUI/Timeline/Render.hs view
@@ -170,7 +170,7 @@ ------------------------------------------------------------------------------- -- We currently have two different way of converting from logical units--- (ie timestamps in micro-seconds) to device units (ie pixels):+-- (i.e. timestamps in micro-seconds) to device units (i.e. pixels): -- * the first is to set the cairo context to the appropriate scale -- * the second is to do the conversion ourself --@@ -450,7 +450,7 @@ "Activity" showTrace _ TraceGroup{} = error "Render.showTrace" --- | Calcaulate the maximal Y value for a graph-like trace, or Nothing.+-- | Calculate the maximal Y value for a graph-like trace, or Nothing. traceMaxSpark :: Double -> Double -> Double -> Trace -> Maybe Double traceMaxSpark maxS _ _ TraceCreationHEC{} = Just $ maxS * 1000 traceMaxSpark maxS _ _ TraceConversionHEC{} = Just $ maxS * 1000
GUI/Timeline/Render/Constants.hs view
@@ -18,7 +18,7 @@ firstTraceY :: Int firstTraceY = 13 --- Gap betweem traces in the timeline view+-- Gap between traces in the timeline view tracePad :: Int tracePad = 20
GUI/Timeline/Sparks.hs view
@@ -239,7 +239,7 @@ drawVRulers drawHRulers -- Move to the bottom and draw the X scale. The Y scale is drawn- -- independetly in another drawing area.+ -- independently in another drawing area. translate 0 (fromIntegral histogramHeight) drawXScale restore
GUI/Timeline/Ticks.hs view
@@ -86,7 +86,7 @@ data XScaleMode = XScaleTime | XScaleLog Double Double deriving Eq -- | Render the X (vertical) scale: render X axis and call ticks rendering.--- TODO: refactor common parts with renderVRulers, in particlar to expose+-- TODO: refactor common parts with renderVRulers, in particular to expose -- that ruler positions match tick positions. renderXScale :: Double -> Double -> Timestamp -> Int -> (Int -> Int) -> XScaleMode
README.md view
@@ -2,18 +2,17 @@ [](https://hackage.haskell.org/package/threadscope) [](http://packdeps.haskellers.com/feed?needle=threadscope)-[](https://travis-ci.org/haskell/ThreadScope)-[](https://ci.appveyor.com/project/maoe/threadscope-44t6e/branch/master)+ ## Using pre-built binaries Currently [pre-built binaries](https://github.com/haskell/ThreadScope/releases) for the following platforms are provided: -* Ubuntu Trusty (64-bit)-* macOS (XCode 11)-* Windows (x64)+* Ubuntu 18.04 (64-bit)+* macOS 10.15+* Windows Server 2019 (x64) -GTK+2 needs to be installed for those binaries to work.+GTK+2 needs to be installed for these binaries to work. On Windows, the [MSYS2](http://www.msys2.org) is the recommended way to install GTK+2. In MSYS2 MINGW64 shell: @@ -25,7 +24,7 @@ ## Building from source -Use `git clone` or `cabal unpack threadscope` to get the source and move into the threadscope directory.+Use `git clone` or `cabal get threadscope` to get the source and move into the threadscope directory. ### Linux @@ -49,12 +48,12 @@ stack install # to build and install the binary ``` -### OS X+### macOS -GTK+ and GCC 9 are required:+GTK+ is required: ```sh-brew install gtk+ gcc@9+brew install gtk+ ``` Then you can build threadscope using cabal:
threadscope.cabal view
@@ -1,6 +1,6 @@ Cabal-version: 1.24 Name: threadscope-Version: 0.2.14+Version: 0.2.14.1 Category: Development, Profiling, Trace Synopsis: A graphical tool for profiling parallel Haskell programs. Description: ThreadScope is a graphical viewer for thread profile@@ -36,11 +36,10 @@ Extra-source-files: include/windows_cconv.h README.md CHANGELOG.md-Tested-with: GHC == 8.2.2- GHC == 8.4.4- GHC == 8.6.5- GHC == 8.8.4- GHC == 8.10.3+Tested-with: GHC == 8.8.4+ GHC == 8.10.7+ GHC == 9.0.2+ GHC == 9.2.2 source-repository head type: git@@ -57,14 +56,14 @@ array < 0.6, mtl < 2.3, filepath < 1.5,- ghc-events >= 0.13 && < 0.16,+ ghc-events >= 0.13 && < 0.18, containers >= 0.2 && < 0.7, deepseq >= 1.1,- text < 1.3,- time >= 1.1 && < 1.12,+ text < 2.1,+ time >= 1.1 && < 1.13, bytestring < 0.12, file-embed < 0.1,- template-haskell < 2.17,+ template-haskell < 2.19, temporary >= 1.1 && < 1.4 include-dirs: include