#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)
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
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.
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
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
Hors ligne