- Notifications
You must be signed in to change notification settings - Fork6
(discontinued) GPFS Current Activity Monitor using Python with ncurses
License
impredicative/gcam
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
gcam (GPFS Current Activity Monitor) usesmmpmon
, Python 3, andncurses
on Linux to display in a console the current GPFS read and write bytes across all currently active GPFS nodes and all GPFS file systems in a given GPFS cluster.
https://github.com/impredicative/gcam/
- Linux or similar OS. The code is tested withCentOS 5.7. It has also been tested by users with CentOS 7.
- GPFS. The code was developed with GPFS version 3.2.1-4. It has also been tested by users with GPFS versions 3.2.1-25, 3.3.0, and 4.2. It is not know whether other versions of GPFS provide compatible mmpmon output. It is possible for the host providing mmpmon output to be different from the host running
gcam
. - Python 3 with
curses
support. The code was developed with Python 3.2. It has also been tested by users with Python 3.4, 3.5, and 3.6. On CentOS, ensure thatncurses
,ncurses-devel
, and all other relevantncurses
packages are installed before installing Python.
The program can be run asgcam
without any arguments. Run with the-h
argument to display help and available command-line options. If the program fails to start, edit thegcam
file. Theparams.py
file in the source zip archive can be edited to change the default values of some options, although this should typically not be necessary.
If the program needs to be run by a non-root userfoousr
, usevisudo
to consider add a line such as:
foousr ALL=NOPASSWD: ~/gcam/gcam
This should allow the user to usesudo
to run the program. For further ease of use, an aliasgcam
pointing tosudo gcam
can be added for this user to prevent from having to explicitly usesudo
.
The program uses thefs_io_s
command sent to themmpmon
program to obtain read and write bytes counters. It then calculates deltas over successive counters—these deltas are formatted and displayed on the screen.
The code is not nearly as efficient as it can be. Additionally, it has some quadratic operations which may make it scale poorly. A significant rewrite, potentially leveragingPandas, is warranted to address these and other issues.
mmpmon
does not indicate when the current batch of counters has ended. The program currently learns of this by waiting until the next batch has begun. This delays the display by up to one iteration. The program can possibly be updated to use a more sophisticated approach to predict when the current batch has ended—this would reduce the display delay.
If necessary, therefresh interval parameter value can be increased by the user to proportionately spread out the program's CPU usage over time. For large installations, this can ensure that the program's CPU usage does not persistently approach 100% for the specific CPU core that is in use.
At the current time, the program does not allow logging data for archival or analytic purposes, although it does allow diagnostic logging for debugging purposes.
Seelicense. For theprettytable
module, seesrc/prettytable.py.