Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: xinyiman - Dicembre 09, 2012, 10:01:05 pm

Titolo: Hardware info
Inserito da: xinyiman - Dicembre 09, 2012, 10:01:05 pm
Ciao ragazzi chi mi sa dire come recuperare alcune informazioni hardware!? Tipo:


Quantità di ram
Info cpu
Info HD

Possibilmente una soluzione cross-platform.
Titolo: Re:Hardware info
Inserito da: nomorelogic - Dicembre 10, 2012, 10:52:23 am
so che c'è qualcosa sulle jedi (JCL) ma non credo che funzionino anche per freepascal
appena ho modo controllo
Titolo: Re:Hardware info
Inserito da: nomorelogic - Dicembre 10, 2012, 12:49:21 pm
Per win non è un problema, ho controllato e ci sono le JCL che fanno egregiamente il loro lavoro: metti in uses JclSysInfo e nella unit trovi le procedure e le funzioni quelli che ti servovo.

Per linux non ho trovato api (emh... non è che ho cercato proprio bene bene ancora :) ) però se non si trova nulla posso dirti come reperire le informazioni.
Titolo: Re:Hardware info
Inserito da: bonmario - Dicembre 10, 2012, 01:26:28 pm
Se non ricordo male, domanda e risposta ci sono nel forum ufficiale in inglese.
Prova a dare un occhio.

Ciao, Mario
Titolo: Re:Hardware info
Inserito da: xinyiman - Dicembre 10, 2012, 04:49:32 pm
Se non ricordo male, domanda e risposta ci sono nel forum ufficiale in inglese.
Prova a dare un occhio.

Ciao, Mario
ciao mario avevo gia dato un occhiata veloce e non avevo trovato nulla d'interessante
Titolo: Re:Hardware info
Inserito da: bonmario - Dicembre 10, 2012, 06:17:36 pm
Hai ragione ... ho appena riguardato, ed ho visto che la domanda era proprio la tua e che ti rispondevano con un generico "le risposte sono nel forum, ma devi cercarle" ....

Ciao, Mario
Titolo: Re:Hardware info
Inserito da: nomorelogic - Dicembre 10, 2012, 07:09:47 pm
mi sa tanto che ti tocca cercare i dati che ti interessano nel filesystem sotto /proc

Titolo: Re:Hardware info
Inserito da: bonmario - Febbraio 23, 2013, 12:32:30 pm
Ciao,
sto cercando di implementare anch'io qualcosa. Per il momento mi interessa ricavare il n° di core. Sto provando qui a casa, con un Intel I5 che, per quel che ne so, dovrebbe avere 4 core. Questo è il contenuto di /proc/cpuinfo:

Codice: [Seleziona]
processor	: 0
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Core(TM) i5 CPU         650  @ 3.20GHz
stepping : 2
microcode : 0x9
cpu MHz : 3201.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 6384.07
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Core(TM) i5 CPU         650  @ 3.20GHz
stepping : 2
microcode : 0x9
cpu MHz : 2800.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 2
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 6384.07
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Core(TM) i5 CPU         650  @ 3.20GHz
stepping : 2
microcode : 0x9
cpu MHz : 3201.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 6384.07
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 37
model name : Intel(R) Core(TM) i5 CPU         650  @ 3.20GHz
stepping : 2
microcode : 0x9
cpu MHz : 3201.000
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 2
apicid : 5
initial apicid : 5
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 6384.07
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

Nell'esito qui sopra, mi ritrovo "processor   : 0", "processor   : 1", "processor   : 2", "processor   : 3", che dovrebbero essere i miei 4 core. All'interno di ognuno di essi, però mi ritrovo la voce "cpu cores   : 2". Significa quindi che ho 8 core?

Grazie, Mario
Titolo: Re:Hardware info
Inserito da: nomorelogic - Febbraio 23, 2013, 01:35:03 pm
significa che hai 4 processori con 2 core ciascuno
se apri un monitor sui processori dovresti vedere proprio 8 grafici
Titolo: Re:Hardware info
Inserito da: bonmario - Febbraio 23, 2013, 03:50:15 pm
La cosa comincia ad incuriosirmi ...
Sono andato in "Monitor di sistema" di Ubuntu e lì mi segnala 4 CPU, ma non ci sono riferimenti ai core. Allora ho provato a cercare i internet e, da quel che ho capito, ci sono 2 tipi di I5. Un tipo ha 2 core, ma fa in modo che il sistema operativo ne veda 4. L'altro ha 4 core, ma fa in modo che il sistema operativo ne veda 8.

Se non ho capito male, il mio rientra nel secondo caso.
Comunque, mi confermate che per estrarre dal cpuinfo il n° di core devo fare n° di processori * n° di core (che nel mio caso darebbe 8)?

Grazie, Mario
Titolo: Re:Hardware info
Inserito da: nomorelogic - Febbraio 23, 2013, 04:03:41 pm
se su cpuinfo dice che hai 2 core per processore: 4 * 2 = 8 ;)
non sapevo però che ci fossero 2 tipi di i5, non si finisce mai di imparare :)
Titolo: Re:Hardware info
Inserito da: El Salvador - Febbraio 23, 2013, 06:27:34 pm
I primi processori i5 (architettura Lynnfield) erano tutti a 4 core, poi arrivarono i Clarkdale, tutti a 2 core poi i Sandy Bridge sia 4 che 2 (per la verità la maggior parte a 4 core).

Citazione
Comunque, mi confermate che per estrarre dal cpuinfo il n° di core devo fare n° di processori * n° di core
Dipende da quali processori vuoi far vedere. Mi spiego meglio: mettiamo il caso che abbiamo un processore core i5 abbia 4 core fisici al suo interno. Se è attivo il multithreading ( http://it.wikipedia.org/wiki/Simultaneous_Multi-Threading#Simultaneous_Multi-Threading ), il sistema operativo ne vedrà il doppio, ovvero 8 (4 core * 2).
Titolo: Re:Hardware info
Inserito da: bonmario - Febbraio 23, 2013, 07:33:18 pm
Lo scopo di tutto ciò è che, in un programma, devo lanciare parecchi processi in parallelo e volevo fare in modo che venissero lanciati tanti processi quanti sono i core della macchina. Questo per evitare di appesantirla troppo ed evitarmi di decidere arbitrariamente un numero.

Ciao, Mario