Home

Awesome

icecream-sundae

Commandline Monitor for Icecream.

Build Status Codacy Badge Coverage Status Snap Status

Icecream Sundae Demo

Installation

Get it from the Snap Store

Building from Source

Prerequsites

Fedora 27 & 28

sudo dnf install gcc-c++ glib2-devel icecream-devel meson ncurses-devel ninja-build

Ubuntu 17.10 (Artful Aardvark) & 18.04 (Bionic Beaver)

sudo apt-get install g++ libcap-ng-dev libglib2.0-dev libicecc-dev liblzo2-dev libncursesw5-dev meson ninja-build

Ubuntu 16.04 (Xenial Xerus)

This version of Ubuntu requires a newer version of meson:

sudo apt-get install g++ libcap-ng-dev libglib2.0-dev libicecc-dev liblzo2-dev libncursesw5-dev meson python3-pip ninja-build
pip3 install --user meson

Ubuntu 14.04 (Trusty Tahr)

While it is possible to install on this ancient version of Ubuntu, it requires a lot of work:

sudo add-apt-repository ppa:jonathonf/python-3.5
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo add-apt-repository ppa:jonathonf/binutils

sudo apt-get update

sudo apt-get install g++-6 libcap-ng-dev libglib2.0-dev libicecc-dev liblzo2-dev libncursesw5-dev python3-pip python3.5 wget unzip

wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip -O ninja-linux.zip
sudo unzip ninja-linux.zip -d /usr/local/bin

python3.5 -m pip install --user meson

export CXX=g++-6

macOS

brew install glib ncurses icecream
export PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig"

Compiling

To build icecream-sundae, download the latest release, extract it, then run:

mkdir builddir
cd builddir
meson .. --buildtype release
ninja
sudo -E ninja install

Note: For Ubuntu 16.04 & 14.04, you may need to run meson as ~/.local/bin/meson

Running

Simply running icecream-sundae should be sufficent. Without any arguements, the program will try to discover the default scheduler. For help, run icecream-sundae --help

Display

Columns

The following table describes the columns that are shown for each compile node

ColumnDescription
IDThe unique ID for the node, as assigned by the scheduler
NAMEThe Name of the node. Each node is assigned a color based on a hash of its string name. Nodes that cannot accept remote jobs (i.e. have the "NoRemote" property set to "true") are displayed underlined.
INThe total number of jobs this node has compiled for other nodes
CURThe current number of jobs this node is compiling
MAXThe maximum number of jobs the node can compile at once
JOBSA graph of the current jobs (see below)
OUTThe total number of jobs this node has sent to other nodes to be compiled remotely
LOCALThe total number of jobs this node as compiled locally
ACTIVEThe current number of jobs this node has working on the cluster
PENDINGThe number of jobs this node has that are waiting to be assigned a node
SPEEDThe speed of the node. This is measured by the nodes as the KB/sec of source compiled by the node

Job Graphs

Jobs in the job bar graphs are displayed using the following legend:

CharacterMeaning
%Local compile job
=Remote compile job

The color of the job marker matches the color of the source node. If the job graph would be too wide to fit on the screen, it will be scaled down and enclosed with curly braces {} instead of the normal square braces [].

Note: If there are nodes on the cluster that do not accept remote jobs, it is entirely possible that there can be more "Active" jobs than "Maximum" slots, if those nodes are doing local compiles

Key bindings

Key(s)Action
down arrow, jMove highlight down to next host
up arrow, kMove highlight up to previous host
left arrow, hMove sort left one column
right arrow, lMove sort right one column
tabMove sort right one column (wraps)
spaceToggle host details
aToggle all host details
rReverse sort
qQuit

Notes

C++ is not my most fluent language... Apologies for any travesties I've committed.

TODO