hpc:accounting
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| hpc:accounting [2025/12/08 12:46] – [Usage details of all PIs associated with a private group] Yann Sagon | hpc:accounting [2026/04/20 09:15] (current) – [Aggregate usage by all users of a given PI] Yann Sagon | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | {{METATOC 1-5}} | + | {{METATOC 1-8}} |
| ====== Utilization and accounting ====== | ====== Utilization and accounting ====== | ||
| When you submit jobs, they are using physical resources such as CPUs, Memory, Network, GPUs, Energy etc. We keep track of the usage of some of those resource. On this page we'll let you know how to consult your usage of the resource. We have several tools that you can use to consult your utilization: | When you submit jobs, they are using physical resources such as CPUs, Memory, Network, GPUs, Energy etc. We keep track of the usage of some of those resource. On this page we'll let you know how to consult your usage of the resource. We have several tools that you can use to consult your utilization: | ||
| Line 18: | Line 18: | ||
| We use this model because our cluster is heterogeneous, | We use this model because our cluster is heterogeneous, | ||
| - | We also bill memory usage because some jobs consume very little CPU but require large amounts of memory, which means an entire compute node is occupied. This ensures that jobs using significant memory resources are accounted for fairly. | + | We also **account for memory usage** because some jobs consume very little CPU but require large amounts of memory, which means an entire compute node is occupied. This ensures that jobs using significant memory resources are accounted for fairly. |
| - | Example: A job using a GPU with a weight of 10 for 2 hours and memory equivalent to 5 CPU hours would be billed as 25 CPU hours. This approach guarantees consistent, transparent, | ||
| - | You can check the up to date conversion details by inspecting the parameters of any partition on the clusters. The same conversion table is applied | + | ==== Conversion Rules extract (see below for details) ==== |
| + | * **1 CPU core = 1 CPUh per hour** | ||
| + | * **1 GB RAM = 0.25 CPUh per hour** | ||
| + | * **1 GPU A100 (40 GB) = 5 CPUh per hour** | ||
| + | |||
| + | ==== Example Calculation ==== | ||
| + | Suppose you request: | ||
| + | * **2 CPUs** | ||
| + | * **20 GB RAM** | ||
| + | * **1 GPU A100** | ||
| + | |||
| + | The cost per hour is calculated as: | ||
| + | * CPU: 2 × 1 CPUh = **2 CPUh** | ||
| + | * RAM: 20 GB × 0.25 CPUh = **5 CPUh** | ||
| + | * GPU: 1 × 5 CPUh = **5 CPUh** | ||
| + | |||
| + | **Total per hour = 2 + 5 + 5 = 12 CPUh** | ||
| + | |||
| + | This approach guarantees consistent, transparent, | ||
| + | |||
| + | You can check the up to date conversion details by inspecting the parameters of any partition on the clusters. The same conversion table is applied | ||
| < | < | ||
| Line 52: | Line 71: | ||
| To view details of owned resources, users can run the script: | To view details of owned resources, users can run the script: | ||
| - | '' | + | '' |
| This script provides a summary of the node characteristics within the cluster. | This script provides a summary of the node characteristics within the cluster. | ||
| Line 59: | Line 78: | ||
| Output example of the script: | Output example of the script: | ||
| < | < | ||
| - | ug_getNodeCharacteristicsSummary.py --partitions private-< | + | ug_getNodeCharacteristicsSummary --partitions private-< |
| host sn | host sn | ||
| ------ | ------ | ||
| Line 136: | Line 155: | ||
| < | < | ||
| - | (baobab)-[sagon@login1] $ ug_slurm_usage_per_user.py --help | + | (baobab)-[sagon@login1] $ ug_slurm_usage_per_user --help |
| - | usage: ug_slurm_usage_per_user.py [-h] [--user USER] [--start START] [--end END] [--pi PI] [--group GROUP] [--cluster {baobab, | + | usage: ug_slurm_usage_per_user [-h] [--user USER] [--start START] [--end END] [--pi PI] [--group GROUP] [--cluster {baobab, |
| [--time-format {Hours, | [--time-format {Hours, | ||
| Line 163: | Line 182: | ||
| === Usage details of a given PI === | === Usage details of a given PI === | ||
| < | < | ||
| - | (baobab)-[sagon@login1] $ ug_slurm_usage_per_user.py --pi **** --report-type account --start 2025-01-01 | + | (baobab)-[sagon@login1] $ ug_slurm_usage_per_user --pi **** --report-type account --start 2025-01-01 |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 184: | Line 203: | ||
| Usage example to see the resource usage from the beginning of 2025 for all the PIs and associate users of the group private_xxx. The group private_xxx owns several compute nodes: | Usage example to see the resource usage from the beginning of 2025 for all the PIs and associate users of the group private_xxx. The group private_xxx owns several compute nodes: | ||
| < | < | ||
| - | (baobab)-[sagon@login1 ~]$ ug_slurm_usage_per_user.py --group private_xxx --start=2025-01-01 --report-type=account | + | (baobab)-[sagon@login1 ~]$ ug_slurm_usage_per_user --group private_xxx --start=2025-01-01 --report-type=account |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 209: | Line 228: | ||
| === Aggregate usage by all users of a given PI === | === Aggregate usage by all users of a given PI === | ||
| < | < | ||
| - | $ ug_slurm_usage_per_user.py --pi ***** --report-type account --start 2025-01-01 --all-users --aggregate | + | $ ug_slurm_usage_per_user --pi ***** --report-type account --start 2025-01-01 --all-users --aggregate |
| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 234: | Line 253: | ||
| </ | </ | ||
| + | |||
| + | === Usage balance === | ||
| + | '' | ||
| + | The script aggregates: | ||
| + | |||
| + | * the billing credit coming from private partitions (including co-owned private groups), | ||
| + | * the free billing credit, | ||
| + | * the total available billing, | ||
| + | * the actual billing consumption, | ||
| + | * and the resulting balance. | ||
| + | |||
| + | When a PI belongs to one or more private groups, the script automatically detects them and displays a detailed breakdown of the billing credit per private group. | ||
| + | The output can be displayed either as a human‑readable console report or as a JSON structure suitable for further processing or integration into other tools. | ||
| + | This script is intended to give PIs and HPC administrators a clear and consolidated view of billing availability versus consumption for a given year. | ||
| + | |||
| + | < | ||
| + | (baobab)-[root@login1 ~]$ ug_billing_synthesis --pi xxx | ||
| + | Billing synthesis for PI: xxx (2026) | ||
| + | Private partition billing : 3' | ||
| + | Free billing | ||
| + | Total billing available | ||
| + | Billing consumed | ||
| + | Balance | ||
| + | |||
| + | Private groups billing: | ||
| + | private_xxxx | ||
| + | private_yyyx | ||
| + | </ | ||
| === sreport examples === | === sreport examples === | ||
| + | |||
| + | <note important> | ||
| Here are some examples that can give you a starting point : | Here are some examples that can give you a starting point : | ||
hpc/accounting.1765197993.txt.gz · Last modified: by Yann Sagon