Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/12/2014, à 17:55

screenart

(Résolu) Script -- informations sur CG Nvidia

Bonjour à tous,

J'avais trouvé et modifié un script a l’époque de la 12.04 que je dois réadapter pour la 14.04 (xubuntu)
Ce script sert a extraire les infos de température et la mémoire utilisé de ma carte Nvidia pour ensuite les afficher sur mon bureau.
Pour cela j'exploite la commande nvidia-smi et j'essaie d'en extraire ce que je souhaite et j'y suis presque.

#!/bin/bash
# 
# simply displays the current GPU usage and memory consumption every
# second on the console, or in genmon bar style when started with
# --genmon
#
# works only on Nvidia cards
#

export GPU=0
export MEM=0

function genmon_mode
{
    get_gpu
    get_mem

    if [ ${GPU} -lt 10 ]; then
        GPU=0${GPU}
    fi

    if [ ${MEM} -lt 10 ]; then
        MEM=0${MEM}
    fi

    echo  "<txt><tt><big>${GPU}c "\ ""
    echo "${MEM}</big></tt></txt>"
    
}

function console_mode
{
    echo -e "\033[30;42mPress Ctrl-C to break ...\033[0m"

    while true; do
        get_gpu
        get_mem

        ## gpu usage
        echo -ne "\033[5G"
        echo -ne "\033[1;37;41mGPU:\033[0m ${GPU} % "

        ## gpu memory
        echo -ne "\033[15G"
        echo -e "\033[1;37;41mMEM:\033[0m ${MEM} %"

        sleep 1
    done
}

function get_mem
{
    MEM=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Memory | grep -i Used | head -1 | awk '{print $3 $4}'`
    #MEM=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Memory | grep -i Used | tail -1 | awk '{print $3 $4}' | sed s/\%//g`
}

function get_gpu
{
    GPU=`nvidia-smi -q -g 0 2>&1 | grep -A 1 -i Temperature | grep -i gpu | head -1 | awk '{print $4 $5}'`
    #GPU=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Temperature | grep -i gpu | tail -1 | awk '{print $3 $4}' | sed s/\%//g`
}

if [ $# -eq 0 ]; then
    console_mode
else
    case $1 in
        "--genmon") genmon_mode;;
        "--console") console_mode;;
    esac
fi

Le résultat est :
:35C
76Mib

---------
J'ai ma température et la consommation de la mémoire.
J'aimerai juste enlever les deux points de la température et le ib de Mib pour la mémoire, mais je suis vraiment un amateur en la matière alors je tâtonne.

Une idée ?

Dernière modification par screenart (Le 12/12/2014, à 18:42)

Hors ligne

#2 Le 12/12/2014, à 18:24

nany

Re : (Résolu) Script -- informations sur CG Nvidia

Bonjour,


en reprenant le sed dans l’ancien code ?

…
function get_mem
{
    MEM=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Memory | grep -i Used | head -1 | awk '{print $3 $4}'' | sed 's/ib//'`
    #MEM=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Memory | grep -i Used | tail -1 | awk '{print $3 $4}' | sed s/\%//g`
}

function get_gpu
{
    GPU=`nvidia-smi -q -g 0 2>&1 | grep -A 1 -i Temperature | grep -i gpu | head -1 | awk '{print $4 $5}' | sed 's/://'`
    #GPU=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Temperature | grep -i gpu | tail -1 | awk '{print $3 $4}' | sed s/\%//g`
}
…

Hors ligne

#3 Le 12/12/2014, à 18:38

screenart

Re : (Résolu) Script -- informations sur CG Nvidia

Oui ! (c'est donc a ça que sert le sed hehehe) smile

Merci !

Hors ligne

#4 Le 12/12/2014, à 18:47

pingouinux

Re : (Résolu) Script -- informations sur CG Nvidia

Bonsoir,
Il y a sans doute plus simple. Quelle est la sortie complète de

nvidia-smi -q -g 0

Hors ligne

#5 Le 12/12/2014, à 19:17

screenart

Re : (Résolu) Script -- informations sur CG Nvidia

Un truc bien organisé en ligne

==============NVSMI LOG==============

Timestamp                           : Fri Dec 12 12:46:20 2014
Driver Version                      : 340.58

Attached GPUs                       : 1
GPU 0000:01:00.0
    Product Name                    : GeForce GTX 580
    Product Brand                   : GeForce
    Display Mode                    : N/A
    Display Active                  : N/A
    Persistence Mode                : Disabled
    Accounting Mode                 : N/A
    Accounting Mode Buffer Size     : N/A
    Driver Model
        Current                     : N/A
        Pending                     : N/A
    Serial Number                   : N/A
    GPU UUID                        : GPU-d20bc3c2-9e0b-9ca4-ea30-b39749287ee5
    Minor Number                    : 0
    VBIOS Version                   : 70.10.48.00.01
    MultiGPU Board                  : N/A
    Board ID                        : N/A
    Inforom Version
        Image Version               : N/A
        OEM Object                  : N/A
        ECC Object                  : N/A
        Power Management Object     : N/A
    GPU Operation Mode
        Current                     : N/A
        Pending                     : N/A
    PCI
        Bus                         : 0x01
        Device                      : 0x00
        Domain                      : 0x0000
        Device Id                   : 0x108010DE
        Bus Id                      : 0000:01:00.0
        Sub System Id               : 0x220319DA
        GPU Link Info
            PCIe Generation
                Max                 : N/A
                Current             : N/A
            Link Width
                Max                 : N/A
                Current             : N/A
        Bridge Chip
            Type                    : N/A
            Firmware                : N/A
    Fan Speed                       : 40 %
    Performance State               : P12
    Clocks Throttle Reasons         : N/A
    FB Memory Usage
        Total                       : 3071 MiB
        Used                        : 147 MiB
        Free                        : 2924 MiB
    BAR1 Memory Usage
        Total                       : N/A
        Used                        : N/A
        Free                        : N/A
    Compute Mode                    : Default
    Utilization
        Gpu                         : N/A
        Memory                      : N/A
        Encoder                     : N/A
        Decoder                     : N/A
    Ecc Mode
        Current                     : N/A
        Pending                     : N/A
    ECC Errors
        Volatile
            Single Bit            
                Device Memory       : N/A
                Register File       : N/A
                L1 Cache            : N/A
                L2 Cache            : N/A
                Texture Memory      : N/A
                Total               : N/A
            Double Bit            
                Device Memory       : N/A
                Register File       : N/A
                L1 Cache            : N/A
                L2 Cache            : N/A
                Texture Memory      : N/A
                Total               : N/A
        Aggregate
            Single Bit            
                Device Memory       : N/A
                Register File       : N/A
                L1 Cache            : N/A
                L2 Cache            : N/A
                Texture Memory      : N/A
                Total               : N/A
            Double Bit            
                Device Memory       : N/A
                Register File       : N/A
                L1 Cache            : N/A
                L2 Cache            : N/A
                Texture Memory      : N/A
                Total               : N/A
    Retired Pages
        Single Bit ECC              : N/A
        Double Bit ECC              : N/A
        Pending                     : N/A
    Temperature
        GPU Current Temp            : 38 C
        GPU Shutdown Temp           : N/A
        GPU Slowdown Temp           : N/A
    Power Readings
        Power Management            : N/A
        Power Draw                  : N/A
        Power Limit                 : N/A
        Default Power Limit         : N/A
        Enforced Power Limit        : N/A
        Min Power Limit             : N/A
        Max Power Limit             : N/A
    Clocks
        Graphics                    : N/A
        SM                          : N/A
        Memory                      : N/A
    Applications Clocks
        Graphics                    : N/A
        Memory                      : N/A
    Default Applications Clocks
        Graphics                    : N/A
        Memory                      : N/A
    Max Clocks
        Graphics                    : N/A
        SM                          : N/A
        Memory                      : N/A
    Clock Policy
        Auto Boost                  : N/A
        Auto Boost Default          : N/A
    Compute Processes               : N/A

Hors ligne

#6 Le 12/12/2014, à 19:39

pingouinux

Re : (Résolu) Script -- informations sur CG Nvidia

Tu peux essayer ceci :

MEM=$(nvidia-smi -q -g 0 2>&1 | awk '/Used.*MiB/{print $3 "M"}')
GPU=$(nvidia-smi -q -g 0 2>&1 | awk '/GPU Current Temp/{print $5 $6}')

Hors ligne

#7 Le 12/12/2014, à 19:50

screenart

Re : (Résolu) Script -- informations sur CG Nvidia

Impeccable c'est plus court, voici le script final avec qqs autres infos récupérées

#!/bin/bash
# 
# simply displays the current GPU usage and memory consumption every
# second on the console, or in genmon bar style when started with
# --genmon
#
# works only on Nvidia cards
#

export GPU=0
export MEM=0
export MEM2=0
export FAN=0

function genmon_mode
{
    get_gpu
    get_mem
    get_mem2
    get_fan

    if [ ${GPU} -lt 10 ]; then
        GPU=0${GPU}
    fi

    if [ ${MEM} -lt 10 ]; then
        MEM=0${MEM}
    fi

    if [ ${MEM2} -lt 10 ]; then
        MEM2=0${MEM2}
    fi

    if [ ${FAN} -lt 10 ]; then
        FAN=0${FAN}
    fi
    echo  "<txt><tt><big>${GPU} / ${FAN} "\ ""
    echo "${MEM}/${MEM2} Mo</big></tt></txt>"
    
}

function console_mode
{
    echo -e "\033[30;42mPress Ctrl-C to break ...\033[0m"

    while true; do
        get_gpu
        get_mem
        get_mem2
	get_fan

        ## gpu usage
        echo -ne "\033[5G"
        echo -ne "\033[1;37;41mGPU:\033[0m ${GPU} % "

        ## gpu memory
        echo -ne "\033[15G"
        echo -e "\033[1;37;41mMEM:\033[0m ${MEM} %"

        ## gpu memory2
        echo -ne "\033[15G"
        echo -e "\033[1;37;41mMEM2:\033[0m ${MEM2} %"

       ## fan velocity
        echo -ne "\033[15G"
        echo -e "\033[1;37;41mFAN:\033[0m ${FAN} %"

        sleep 1
    done
}

function get_mem
{
    #MEM=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Memory | grep -i Used | head -1 | awk '{print $3 $4}' | sed s/MiB//`
    #MEM=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Memory | grep -i Used | tail -1 | awk '{print $3 $4}' | sed s/\%//g`
    #MEM=$(nvidia-smi -q -g 0 2>&1 | awk '/Used.*MiB/{print $3 "M"}')
    MEM=$(nvidia-smi -q -g 0 2>&1 | awk '/Used.*MiB/{print $3}')
}

function get_mem2
{
    #MEM2=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Free | head -1 | awk '{print $3 $4}' | sed s/MiB//`
    MEM2=$(nvidia-smi -q -g 0 2>&1 | awk '/Free.*MiB/{print $3}')
}

function get_gpu
{  
    #GPU=`nvidia-smi -q -g 0 2>&1 | grep -A 1 -i Temperature | grep -i gpu | head -1 | awk '{print $4 $5}' | sed s/://`
    #GPU=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Temperature | grep -i gpu | tail -1 | awk '{print $3 $4}' | sed s/\%//g`
    GPU=$(nvidia-smi -q -g 0 2>&1 | awk '/GPU Current Temp/{print $5 $6}')
}

function get_fan
{
    #FAN=`nvidia-smi -q -g 0 2>&1 | grep -A 2 -i Fan | grep -i Speed | awk '{print $4 $5}'`
    FAN=$(nvidia-smi -q -g 0 2>&1 | awk '/Fan Speed/{print $4 $5}')   
}


if [ $# -eq 0 ]; then
    console_mode
else
    case $1 in
        "--genmon") genmon_mode;;
        "--console") console_mode;;
    esac
fi

Merci

Dernière modification par screenart (Le 12/12/2014, à 19:51)

Hors ligne

#8 Le 12/12/2014, à 19:51

nany

Re : (Résolu) Script -- informations sur CG Nvidia

C’est en effet bien plus propre comme ça.

Le seul petit bémol est de savoir si la mémoire est toujours affichée en Mib.

Hors ligne

#9 Le 12/12/2014, à 19:56

pingouinux

Re : (Résolu) Script -- informations sur CG Nvidia

nany a écrit :

Le seul petit bémol est de savoir si la mémoire est toujours affichée en Mib.

C'est exact. Si ce n'est pas le cas il faudra adapter la commande.

Ajouté :

MEM=$(nvidia-smi -q -g 0 2>&1 | awk '/Used.*[0-9]/{print $3 substr($4,1,1)}'

Dernière modification par pingouinux (Le 12/12/2014, à 20:03)

Hors ligne

#10 Le 12/12/2014, à 20:08

screenart

Re : (Résolu) Script -- informations sur CG Nvidia

J'avais écrit Mo sur la sortie je l'ai modifié en MiB puisque si je comprend bien que c'est différent. Après j'imagine que si je veux récupérer la donnée en Mo je dois adapter une formule de calcul. Pour moi c'est déjà fonctionnel. smile

Edit :
ha ok la nouvelle commande fonctionne avec un M en plus pour m'indiquer l’unité de valeur

Dernière modification par screenart (Le 12/12/2014, à 20:13)

Hors ligne

#11 Le 12/12/2014, à 20:17

nany

Re : (Résolu) Script -- informations sur CG Nvidia

En fait, le problème est de savoir si nvidia-smi retourne toujours une valeur en MiB (a priori, il y a peu de risque d’avoir des KiB ou des GiB).
Après, tu peux mettre ce que tu souhaites en sortie.

Et pour bien comprendre la différence entre o et io : https://fr.wikipedia.org/wiki/Octet.

Hors ligne

#12 Le 12/12/2014, à 20:17

pingouinux

Re : (Résolu) Script -- informations sur CG Nvidia

screenart a écrit :

ha ok la nouvelle commande fonctionne avec un M en plus pour m'indiquer l’unité de valeur

Ma commande en #6 indiquait aussi l'unité.

Hors ligne

#13 Le 12/12/2014, à 20:26

screenart

Re : (Résolu) Script -- informations sur CG Nvidia

Par expérience, (vu que j'utilise l'ancienne version du script depuis plusieurs années) Nvidia-smi m'a toujours sorti du Mib même si j’atteins des valeurs de plusieurs giga, j'ai toujours eu des valeurs cohérente en Mib smile

Hors ligne