#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
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
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.
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
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
--[[
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
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
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
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
Sinon, ben plus qu'à mettre en place ton fcron
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
Je vais essayer d'ajouter la SWAP et les températures des HDD par moi même
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
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 ...
Edit : en fait si
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 (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
Hello, j'essai de faire la meme chose en bash, et merci pour les commandes qui permettent de trouver ou est noté la temp (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 capem@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