Source code for heimdallr.utilities.server.du_utilities
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "Christian"
__doc__ = r"""
Created on 29/03/2020
"""
from typing import Mapping
import numpy
import pandas
from pandas import DataFrame
from heimdallr.configuration.heimdallr_config import (
DROP_COLUMNS,
INT_COLUMNS,
MB_COLUMNS,
PERCENT_COLUMNS,
)
from heimdallr.utilities.date_tools import timestamp_to_datetime
MB_DIVISOR = int(1024**2)
__all__ = [
"to_overall_du_process_df",
]
[docs]def to_overall_du_process_df(gpu_stats: Mapping) -> DataFrame:
"""description"""
resulta = []
columns = []
if len(gpu_stats):
for k2, v2 in gpu_stats.items():
if "partitions" in v2:
for part_i in v2["partitions"]:
df = pandas.DataFrame(data=part_i)
resulta.append(df)
if len(resulta):
out_df = pandas.concat(resulta, sort=False)
out_df.sort_values(by="used_gpu_mem", axis=0, ascending=False, inplace=True)
if len(out_df) == 0:
return pandas.DataFrame()
k = columns
idx = ["machine", *k]
out_df = out_df[idx]
out_df.create_time = out_df.create_time.map(timestamp_to_datetime)
for c in INT_COLUMNS:
out_df[c] = out_df[c].astype(int)
for c in PERCENT_COLUMNS:
out_df[c] = numpy.round(out_df[c], 2)
for c in MB_COLUMNS:
out_df[c] = numpy.round(out_df[c] // MB_DIVISOR, 2)
out_cols = [c for c in out_df.columns if c not in DROP_COLUMNS]
out_df = out_df[out_cols]
return out_df
return pandas.DataFrame(data=["no data"], columns=["no data"])