This repo is part Haskell Summer of Code 2016 project called "Live profiling and performance monitoring server".
It is a web based application that provides management and analytic tools for event logs got by manual upload or by live-profile-monitor.
The following screen presents ghc-events-analyze like diagram for program of Fibonacci calculation (see the original blog post).
At the moment, the prefered method of building the server is stack:
stack install
cd live-profile-frontend
./compile.sh
If you desire to build test application (if you want live profiling, you need patched ghc and live-profile-monitor):
cd live-profile-test-app
stack install --pedantic --compiler=ghc-8.1
Also you need a PostgreSQL instance, for connection options see configuration of the server backend:
# Values formatted like "_env:ENV_VAR_NAME:default_value" can be overridden by the specified environment variable.
database:
database: "_env:POSTGRES_DB:postgres"
host: "_env:POSTGRES_PORT_5432_TCP_ADDR:localhost"
port: "_env:POSTGRES_PORT_5432_TCP_PORT:5432"
user: "_env:POSTGRES_USER:postgres"
password: "_env:POSTGRES_PASSWORD:'123456'"
poolSize: "_env:POSTGRES_POOL_SIZE:8"
The repo is splitted into 6 packages:
-
live-profile-server-api - server servant API specification shared between backend and frontend. A swagger specification and docs are automatically extracted from the API.
-
live-profile-server-backend - server backend, that implements the API above. It handles connections to monitors, uploading of files, storage in RDBMS and authorisation.
-
live-profile-server-frontend - GHCJS + reflex + reflex-dom web frontend.
-
live-profile-test-app - debug application that can be used to test live profiling.
-
servant-rest-derive - auxiliary library that provides automatic REST deriving for vinyl records.
-
servant-rest-derive-server - auxiliary library that provides automatic persistent support for vinyl records.
- Add instruction for
cabal-new-build
method of building.