Metadata-Version: 2.1
Name: Xsinfo
Version: 1.2
Summary: Xsinfo is a command line tool summarizing the nodes and cores availability on a scheduler using SLURM.
Home-page: https://github.com/FranckLejzerowicz/Xsinfo
Author: Franck Lejzerowicz
Author-email: franck.lejzerowicz@gmail.com
Maintainer: Franck Lejzerowicz
Maintainer-email: franck.lejzerowicz@gmail.com
License: BSD
Platform: UNKNOWN
Classifier: License :: OSI Approved :: BSD License
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: click
Requires-Dist: pandas

# Xsinfo

Collect info about the current nodes and cores usage so that it can help one
choose which and how much resource can be allocated for a job on SLURM.

 # Install

```
git clone https://github.com/FranckLejzerowicz/Xsinfo.git
cd Xsinfo
pip install -e .
```
*_Note that python should be python3_

## Outputs

Two outputs:

### **Table**

In a file located in `~/.xsinfo/YYYY-MM-DD.tsv` containing the table returned
by the following Slurm's sinfo command and expanded with cpu_load, memory_load
(both in % of available CPUs and memory per node), as well as the number of
allocated and idle CPUs per node:

```
sinfo --Node -h -O NodeList:10,Partition:10,StateLong:10,CPUsLoad:10,CPUsState:12,Sockets:4,Cores:4,Threads:4,Memory:12,FreeMem:12
```
Note: if Xsinfo is re-run the same day twice, it will not re-run this  sinfo
command. Instead, it will read the expanded `~/.xsinfo/YYYY-MM-DD.tsv` file.
If you need to re-run Xsinfo the same day if node usage changes that quick,
please use the `--refresh` option (in `~/.xsinfo/` is only kept the latest
table).

This table can be used by [Xpbs](https://github.com/FranckLejzerowicz/Xpbs) - 
optionally - to allocate CPUs from idle nodes that have the right amount of
memory available.   

### **Stdout**

Summaries are printed in stdout, including:
- "**nodes per % of cpu load**": nodes are binned per quartile of cpu load.
- "**nodes per % of mem load**": nodes are binned per quartile of memory load.

For the nodes binned in these two different ways are of shown:
- Their total number of CPUs (`cpus`) 
- Their total available memory in GiB (`mem(gb)`) 
- Their average and standard deviation of available memory (`av` and `±`) 
- Their number (of nodes) (`nodes`) 
- Their names (of nodes) (`names`)

## Usage

Just run:
```
Xsinfo [OPTIONS]
```

* `--torque`: Use if your scheduler is Torque (and not Slurm), as the native
qstats summary is a bit different and thus Xsinfo has to know that in order to
properly parse out the node usage information [**OPTION NOT YET WORKING!**]
* `--refresh`: Force rewriting of the expanded node info collected today. 
* `--show`: Will print the full cpu and memory info per nodes. 

### Options

```
Usage: Xsinfo [OPTIONS]

Options:
  --torque / --no-torque        Switch from Slurm to Torque  [default: no-
                                torque]
  --refresh, --no-refresh TEXT  Whether to update any sinfo snapshot file
                                written today in ~/.slurm.
  --version                     Show the version and exit.
  --help                        Show this message and exit.
```

### Bug Reports

contact `franck.lejzerowicz@gmail.com`

