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.

#51 Le 22/05/2011, à 16:20

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Ouep, tu peux me faire un cat sur les 3 premiers stp?

Hors ligne

#52 Le 22/05/2011, à 16:23

sunkart

Re : Script d'enregistrement des températures et charge CPU

wahibacyril@PCFIX:/etc/munin/plugins$ cat /sys/devices/platform/it87.656/temp1_input
47000
wahibacyril@PCFIX:/etc/munin/plugins$ cat /sys/devices/platform/it87.656/temp2_input
41000
wahibacyril@PCFIX:/etc/munin/plugins$ cat /sys/devices/platform/it87.656/temp3_input
-128000

Temp1 = CPU et Temp2 = M/B big_smile


Cyril

Hors ligne

#53 Le 22/05/2011, à 16:23

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Oki, je t'adapte le script alors wink
Laisse moi 2mn.

--[[
    Purpose of this script is the get the temperature of CPU et GPU
    and output it to a file (temperatures.csv)
    The outputed file has the following structure:

    time;CPUtemp;MBtemp;GPUtemp

]]--

function filllogfile()
    io.write(os.date("%X"),";", cputemp(), ";",mbtemp(), ";", gputemp(), "\n")
end

function cputemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp1_input")
    temp = io.read("*number")/1000

    return temp
end

function mbtemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp2_input")
    temp = io.read("*number")/1000

    return temp
end


function gputemp()
    local temp

    temp = tonumber(io.popen("nvidia-settings -q GPUCoreTemp -t"):read("*all"))

    return temp
end

io.output(io.open("temperatures.csv", "a"))
filllogfile()
io.close()

Dernière modification par Rolinh (Le 22/05/2011, à 16:44)

Hors ligne

#54 Le 22/05/2011, à 16:29

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Voilà. J'ai pas pu tester par contre. Faudra que tu me dises si ça ne marche pas. wink
Si tu veux, je te rajoute l'utilisation de la RAM en même temps, ça me prend 3mn.

Hors ligne

#55 Le 22/05/2011, à 16:32

sunkart

Re : Script d'enregistrement des températures et charge CPU

Je teste tout de suite.

lua monitoring.lua
lua: monitoring.lua:11: ')' expected near ';'

Ok pour ajouter la RAM et le CPU smile

Dernière modification par sunkart (Le 22/05/2011, à 16:35)


Cyril

Hors ligne

#56 Le 22/05/2011, à 16:39

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Ooops, j'avais oublié une virgule. Voilà, c'est corrigé.

EDIT:
il a combien de coeurs ton CPU?

Dernière modification par Rolinh (Le 22/05/2011, à 16:43)

Hors ligne

#57 Le 22/05/2011, à 16:44

sunkart

Re : Script d'enregistrement des températures et charge CPU

Mono coeur


Cyril

Hors ligne

#58 Le 22/05/2011, à 16:46

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Oki, essaie de lancer ce scipt wink

--[[
    Purpose of this script is the get the temperature of CPU et GPU
    and output it to a file (temperatures.csv)
    The outputed file has the following structure:

    time;CPUtemp;MBtemp;GPUtemp;RAMusage;CPUusage

]]--

function filllogfile()
    io.write(os.date("%X"),";", cputemp(), ";", mbtemp(), ";", gputemp(), ";", activeram(), ";", activecpu(), "\n")
end

function cputemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp1_input")
    temp = io.read("*number")/1000

    return temp
end

function mbtemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp2_input")
    temp = io.read("*number")/1000

    return temp
end


function gputemp()
    local temp

    temp = tonumber(io.popen("nvidia-settings -q GPUCoreTemp -t"):read("*all"))

    return temp
end

function activeram()
    local ramusg, res, active

    for line in io.lines("/proc/meminfo") do
        for key , value in string.gmatch(line, "(%w+):\ +(%d+).+") do
            if key == "Active" then
                active = tonumber(value)
            end
            if key == "MemTotal" then
                memtot = value
            end
        end
    end

    ramusg = (active/memtot)*100

    res = string.format("%.2f", (active/1024))

    return res
end

jiffies = {}
function activecpu()
    local str

    for line in io.lines("/proc/stat") do
        local cpu,newjiffies = string.match(line, "(cpu)\ +(%d+)")
        if cpu and newjiffies then
            if not jiffies[cpu] then
                jiffies[cpu] = newjiffies
            end
            -- The string.format prevents your task list from jumping around
            -- When CPU usage goes above/below 10%
            str = string.format("%02d", (newjiffies-jiffies[cpu]))
            jiffies[cpu] = newjiffies
        end
    end

    return str
end

io.output(io.open("temperatures.csv", "a"))
filllogfile()
io.close()

Dernière modification par Rolinh (Le 22/05/2011, à 18:13)

Hors ligne

#59 Le 22/05/2011, à 16:57

sunkart

Re : Script d'enregistrement des températures et charge CPU

presque smile

lua monitoring.lua
lua: monitoring.lua:45: invalid pattern capture
stack traceback:
    [C]: in function '(for generator)'
    monitoring.lua:45: in function 'activeram'
    monitoring.lua:11: in function 'filllogfile'
    monitoring.lua:80: in main chunk
    [C]: ?

Cyril

Hors ligne

#60 Le 22/05/2011, à 17:38

Rolinh

Re : Script d'enregistrement des températures et charge CPU

ah voui, j'suis bête
2mn

EDIT: voilà, j'ai édité, tu peux réessayer wink

Dernière modification par Rolinh (Le 22/05/2011, à 17:40)

Hors ligne

#61 Le 22/05/2011, à 17:56

sunkart

Re : Script d'enregistrement des températures et charge CPU

lua monitoring.lua
lua: monitoring.lua:53: invalid pattern capture
stack traceback:
    [C]: in function '(for generator)'
    monitoring.lua:53: in function 'activeram'
    monitoring.lua:11: in function 'filllogfile'
    monitoring.lua:88: in main chunk
    [C]: ?

Cyril

Hors ligne

#62 Le 22/05/2011, à 18:14

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Une fermeture de parenthèse qui trainait wink
J'ai réédité.

Hors ligne

#63 Le 22/05/2011, à 18:27

sunkart

Re : Script d'enregistrement des températures et charge CPU

Plus de bug ...
Par contre, y'a un truc dans les valeurs pour la charge CPU

18:24:36;48;43;61;926.50;00
18:25:21;49;43;61;928.11;00
18:25:59;49;43;61;981.41;00
18:26:15;49;43;61;1055.88;00

Cyril

Hors ligne

#64 Le 22/05/2011, à 18:38

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Nan, je pense que ça joue. J'imagine que ton utilisation CPU actuelle est trop insignifiante. Lance la compilation de quelque chose ou fait une action qui consomme pas mal de CPU et relance le script wink

Sinon, ben plus qu'à mettre en place ton fcron wink

Hors ligne

#65 Le 22/05/2011, à 18:57

sunkart

Re : Script d'enregistrement des températures et charge CPU

18:54:03;52;44;62;953.61;00
18:54:53;52;44;63;1108.29;00
18:55:04;52;44;62;1117.00;00
18:56:11;53;44;62;1098.28;00

Sur les 3 derniers enregistrements, le CPU est à 100% sur mon Conky.


Cyril

Hors ligne

#66 Le 22/05/2011, à 20:17

Rolinh

Re : Script d'enregistrement des températures et charge CPU

C'est moins propre (io.popen de top...) mais ça devrait aller:

--[[
    Purpose of this script is the get the temperature of CPU et GPU
    and output it to a file (temperatures.csv)
    The outputed file has the following structure:

    time;CPUtemp;MBtemp;GPUtemp;RAMusage;CPUusage

]]--

function filllogfile()
    io.write(os.date("%X"),";", cputemp(), ";", mbtemp(), ";", gputemp(), ";", activeram(), ";", activecpu(), "\n")
end

function cputemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp1_input")
    temp = io.read("*number")/1000

    return temp
end

function mbtemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp2_input")
    temp = io.read("*number")/1000

    return temp
end


function gputemp()
    local temp

    temp = tonumber(io.popen("nvidia-settings -q GPUCoreTemp -t"):read("*all"))

    return temp
end

function activeram()
    local ramusg, res, active

    for line in io.lines("/proc/meminfo") do
        for key , value in string.gmatch(line, "(%w+):\ +(%d+).+") do
            if key == "Active" then
                active = tonumber(value)
            end
            if key == "MemTotal" then
                memtot = value
            end
        end
    end

    ramusg = (active/memtot)*100

    res = string.format("%.2f", (active/1024))

    return res
end

function activecpu()
    local temp
    local f = io.popen('top -bp$$ -d 1 -n 2'):read('*all')
    local tokens = f:gmatch(',%s*([%d%.]+)%%%s*id')

    for idle in tokens do
        temp = 100.0 - tonumber(idle)
    end

    return temp
end

io.output(io.open("temperatures.csv", "a"))
filllogfile()
io.close()

Hors ligne

#67 Le 23/05/2011, à 19:18

sunkart

Re : Script d'enregistrement des températures et charge CPU

ça marche smile
Je vais essayer d'ajouter la SWAP et les températures des HDD par moi même tongue


Cyril

Hors ligne

#68 Le 23/05/2011, à 20:30

Rolinh

Re : Script d'enregistrement des températures et charge CPU

C'est vrai que là j'ai fait bien plus que te prémâcher le travail...
Par contre, hddtemp a besoin d'être lancé en root  wink

Hors ligne

#69 Le 23/05/2011, à 22:44

sunkart

Re : Script d'enregistrement des températures et charge CPU

Oui, y'a un truc qui m'échappe ...

Voici le code que j'ai complété :

--[[
    Purpose of this script is the get the temperature of CPU et GPU
    and output it to a file (temperatures.csv)
    The outputed file has the following structure:

    time;CPUtemp;MBtemp;GPUtemp;RAMusage;CPUusage;sdatemp;sdbtemp;fanspeed

]]--

function filllogfile()
    io.write(os.date("%X"),";", cputemp(), ";", mbtemp(), ";", gputemp(), ";", activeram(), ";", activecpu(), ";", sdatemp(), ";", sdbtemp(), ";", fanspeed(), "\n")
    --[[io.write(os.date("%X"),";", cputemp(), ";", mbtemp(), ";", gputemp(), ";", activeram(), ";", activecpu(), "\n")]]--
end

function cputemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp1_input")
    temp = io.read("*number")/1000

    return temp
end

function mbtemp()
    local temp

    io.input("/sys/devices/platform/it87.656/temp2_input")
    temp = io.read("*number")/1000

    return temp
end


function gputemp()
    local temp

    temp = tonumber(io.popen("nvidia-settings -q GPUCoreTemp -t"):read("*all"))

    return temp
end

function activeram()
    local ramusg, res, active

    for line in io.lines("/proc/meminfo") do
        for key , value in string.gmatch(line, "(%w+):\ +(%d+).+") do
            if key == "Active" then
                active = tonumber(value)
            end
            if key == "MemTotal" then
                memtot = value
            end
        end
    end

    ramusg = (active/memtot)*100

    res = string.format("%.2f", (active/1024))

    return res
end

function activecpu()
    local temp
    local f = io.popen('top -bp$$ -d 1 -n 2'):read('*all')
    local tokens = f:gmatch(',%s*([%d%.]+)%%%s*id')

    for idle in tokens do
        temp = 100.0 - tonumber(idle)
    end

    return temp
end

function sdatemp()
    local temp
    temp = tonumber(io.popen("hddtemp -n /dev/sda"):read("*all"))
    return temp
end

function sdbtemp()
    local temp
    temp = tonumber(io.popen("hddtemp -n /dev/sdb"):read("*all"))
    return temp
end

function fanspeed()
    local temp

    io.input("/sys/devices/platform/it87.656/fan1_input")
    temp = io.read("*number")

    return temp
end

io.output(io.open("/home/wahibacyril/Documents/ubuntu/script/temperatures.csv", "a"))
filllogfile()
io.close()

Par contre, je n'arrive plus à stopper CRON ... sad
Edit : en fait si big_smile

Par contre, y'a comme un problème :

21:11:05;48;43;61;776.58;15;44;47;3308
21:45:01;47;43;21:50:01;48;43;21:50:01;48;43;21:55:01;47;43;21:55:01;47;43;22:00:01;47;43;22:00:01;47;43;22:05:01;47;43;22:10:01;47;43;

Dernière modification par sunkart (Le 23/05/2011, à 22:53)


Cyril

Hors ligne

#70 Le 24/05/2011, à 01:10

Rolinh

Re : Script d'enregistrement des températures et charge CPU

Je n'ai pas testé mais essaie voir avec "a+" au lieu de "a" dans le io.output de io.open.

Hors ligne

#71 Le 24/05/2011, à 21:30

sunkart

Re : Script d'enregistrement des températures et charge CPU

Non, ça ne change rien :

21:05:02;48;44;21:10:01;48;44;21:15:01;47;44;21:20:01;47;44;21:25:01;47;44;

Voici le contenu du fichier /etc/crontab

cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user    command
17 *    * * *    root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
# */5 * * * * root lua /home/wahibacyril/Documents/ubuntu/script/monitoring.lua
#

J'ai fait un test en supprimant la première valeur qui plante (la température de la carte graphique) et bingo ça fonctionne.
Par contre, lancé manuellement, le script fonctionne bien.

Ce doit être la commande qui ne passe pas.
Pourtant, j'ai utilisé la même structure pour hddtemp et ça fonctionne très bien ...

Dernière modification par sunkart (Le 24/05/2011, à 22:47)


Cyril

Hors ligne

#72 Le 25/05/2011, à 20:12

sunkart

Re : Script d'enregistrement des températures et charge CPU

Je viens de trouver ça sur le net
http://www.nvnews.net/vbulletin/showthread.php?t=91946

Apparemment nvidia-settings et cron ne font pas bon ménage.
Y'a-t-il un autre moyen de pouvoir récupérer cette info ? Est-ce que l'utilisation de nvclock pourrait être une solution (sans pour autant overclocker ma carte graphique) ?


Cyril

Hors ligne

#73 Le 01/06/2011, à 18:12

pem1664

Re : Script d'enregistrement des températures et charge CPU

Hello, j'essai de faire la meme chose en bash, et merci pour les commandes qui permettent de trouver ou est noté la temp smile (jaurais pas trouvé ca tout seul!)
je cherche ou est stocké la valeur du capteur pour la carte graphique? (Nvidia) une idée?
edit : j'ai trouvé comment avoir la température en console grace a ce lien : http://blog.tooney.fr/?p=863
en console ca donne ca

pem@Bureau:~$ nvidia-settings -q GPUCoreTemp

  Attribute 'GPUCoreTemp' (Bureau:0.0): 50.
    'GPUCoreTemp' is an integer attribute.
    'GPUCoreTemp' is a read-only attribute.
    'GPUCoreTemp' can use the following target types: X Screen, GPU.

pem@Bureau:~$ 

Mais y'a pas un endroit ou cette variable est stockée?

Dernière modification par pem1664 (Le 01/06/2011, à 18:29)


Pas de problème sans solutions, mettre [résolu] dans son premier post permet de rechercher plus facilement une solution... ;)

Hors ligne

#74 Le 06/06/2011, à 07:11

sunkart

Re : Script d'enregistrement des températures et charge CPU

Je n'ai pas réussit à les trouver. J'ai fait des recherches sur NVIDIA, GPU et TEMP mais ça n'a rien donné.


Cyril

Hors ligne

#75 Le 06/06/2011, à 09:03

Rolinh

Re : Script d'enregistrement des températures et charge CPU

pem1664 a écrit :

Hello, j'essai de faire la meme chose en bash, et merci pour les commandes qui permettent de trouver ou est noté la temp smile (jaurais pas trouvé ca tout seul!)
je cherche ou est stocké la valeur du capteur pour la carte graphique? (Nvidia) une idée?
edit : j'ai trouvé comment avoir la température en console grace a ce lien : http://blog.tooney.fr/?p=863
en console ca donne ca

pem@Bureau:~$ nvidia-settings -q GPUCoreTemp

  Attribute 'GPUCoreTemp' (Bureau:0.0): 50.
    'GPUCoreTemp' is an integer attribute.
    'GPUCoreTemp' is a read-only attribute.
    'GPUCoreTemp' can use the following target types: X Screen, GPU.

pem@Bureau:~$ 

Mais y'a pas un endroit ou cette variable est stockée?

Salut,

cela dépend du pilote. Avec le pilote propriétaire nvidia, tu à la commande pour récupérer la température uniquement via cette commande (il suffit d'ajouter -t à la tienne ;-) ):

nvidia-settings -q GPUCoreTemp -t

Avec le pilote Nouveau, oui, cette variable est stockée quelque part. Avec le driver proprio, je ne pense pas que ce soit le cas.

Je suis désolé, étant en examens je n'ai pas le temps de me pencher plus sur le sujet.

Hors ligne