Newsgroup: it.comp.os.linux.iniziare
Titolo: memory CAS latency

In linux cercavo qualcosa che mi desse un informazione simile a
 
"CAS Latency = 6-7-8-9" (va bene anche se non è così pulita, ma è da 
estrapololare manipolando l'output)
 
Devo leggerne l'output, quindi deve essere a linea di comando (non 
riportare il risultato all'interno dell'interfaccia grafica di un programma)
 
ho provato: "dmidecode --type memory" e "lshw -C memory"
ma, pur riportando informazione utili (e simili tra loro), nessuno dei 2 
comandi mi pare riporti quel tipo di informazione.
 
 
In internet ho visto anche
decode-dimms di i2c-tools (richiede anche "modprobe eeprom" per 
funzionare), ma non mi da informazioni... (forse lo faceve con le 
memorie vecchie, tutti gli help ed esempi che ho visto non erano recenti)
 
Mi interessa anche un benchmark specifico per la memoria (sempre a linea 
di comando). Possibilmente non indirizzatemi su phoronix (troppo 
mastodontico e troppo interattivo)

 non erano recenti)
 
Anzitutto scarica la versione stabile più recente degli i2c-tools:
http://www.lm-sensors.org/wiki/I2CTools
 
 
Poi scompatti, entri nella directory, dai:
 
$ make && sudo make install
 
(tutto verrà installato sotto /usr/local).
 
Da tempo Ubuntu ha blacklistato, per estrema prudenza, un modulo che ti 
serve caricare: i2c-i801. Sul 99,99% dei sistemi, per fortuna, quel 
modulo non causa problemi. Puoi verificare che sia blacklistato con:
 
$ sudo modprobe -c | grep i801
 
Carica manualmente quel modulo, bypassando così la blacklist, e carica 
pure il modulo eeprom:
 
$ sudo modprobe i2c-i801
$ sudo modprobe eeprom
 
Adesso esegui:
 
$ sudo decode-dimms
 
Aspetta qualche secondo... ecco fatto! :)
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
 
http://www.worldcommunitygrid.org/index.jsp
 
http://www.rnaworld.de/rnaworld/
 
http://home.edges-grid.eu/home/
 
 
http://www.gpugrid.net/
 

 (tutto verrà installato sotto /usr/local).
 
Pr4ima di farlo, magari disinstalla la versione vecchia:
 
$ sudo apt-get purge i2c-tools


Intanto grazie per la risposta dettagliata.
 
1) purgato i2c vecchio
2) Scaricato la versione in subversion (dovrebbe essere l'ultima)
3) make (non mi pare abbia dato errori)
4) sudo make install (apparentemente senza errori)
5) verificato che effettivamente il modulo che hai detto
    è blacklistato, ma comunque caricato a mano va su e
    infatti al punto 7 è visibile
6 sudo modprobe eeprom e sudo modprobe 12c-i801
7 lsmod |grep i801  Mostra il modulo fra quelli caricati
 
8 Verifica che dmesg non riporta problemi
 
PERO....
-
sudo decode-dimms
# decode-dimms version 6183 (2013-06-07 08:46:36 +0200)
 
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
 
Number of SDRAM DIMMs detected and decoded: 0
-
 
Un ulteriore verifica in dmesg non mostra nessun errore
 
Non mi sembra di aver fatto errori e quindi continuo ad avere il dubbio 
che non lavori sulla ddr3... (non ho ancora avuto occasione di provare 
su macchine con ddr2 o ddr1)


 che non lavori sulla ddr3...
 
No, sulla DDR3 lavora eccome: qui da me funziona perfettamente.
 
Io ti ho suggerito il modulo i2c-i801 perché ricordavo che il fatto che 
sia blacklistato spesso è la causa del problema.
 
Qui trovi l'hardware supportato da questo modulo, possibili problemi ed 
eventuali workaround. Leggi bene tutta la paginetta:
https://www.kernel.org/doc/Documentation/i2c/busses/i2c-i801
 
 
BTW: tu che sistema hai?


 BTW: tu che sistema hai?
nessuno... Il tuo sistema l'ho testato su un fisso scheda madre asus 
P8H77-M PRO e della ram kingston 99U5471-012.A00LF
oppure su un portatile samsung NP270E5E-k02it (bard NP270E5E-K02IT 
version FAB1) con ram samsung 1600 modello sconosciuto, (Ma solo perchè 
ora non ho a disposizione la chiavetta su cui me lo sono salvato i dati 
del portatile)
 
Comunque se mi dici che da te con delle ddr3 funziona ci guardo meglio.
 
 
stavo facendo uno scriptino di benchmark (in bash perchè volevo imparare 
ad usarlo meglio) per il processore, da utilizzare attraverso una 
chiavetta usb regionevolmente veloce o su un HDD esterno.
 
se ti interessa provare il codice è disponibile tramite git su:
git clone 
https://iper...@bitbucket.org/iperbyte/bench.git
 
 
Testato su kubuntu dalla 12.10 o 13.04
Se ti interessa dai un occhio al file readme dentro alla dir bench
che fondamentalmente di dice che prima di usarlo devi lanciare 
inittest.sh che installa le dipendenze necessarie (puoi dare un occhio 
sul readme quali sono i programmi che io ho messo perchè mi sono comodi, 
ma sono inutili per il bench).
Nota comunque quel il readme è vecchio (devo ancora aggiornarlo) 
Dimentica di dire che anche "mesa-utils" e "gawk" sono dipendenze 
necessarie.
 
poi se non hai il turboboost già attivo devi lanciare turboboost.sh che 
rende disponibile e funzionante turbostat (è necessario per il corretto 
funzionamento dello script, anche se il processore non lo supporta)
 
a quel punto puoi lanciare bench.sh
 
Nota la prima volta che lo lanci verrà scaricato un video opensource 
Piuttosto corposo 738 Mega, che è necessario per il test. Non 
interrompere perchè per ora non c'è nessun test che verifica lo scarico 
corretto, oppure se interrompi cancella il file parzialmente scaricato 
in ~/.config/bcbench/data/ToS-4k-1920.mov, in modo che al prossimo giro 
lo scarichi di nuovo
 
Al primo lancio potrebbe anche dare errorini mentre crea lo spazio di 
lavoro in ~/.config/bcbench. Ignorali, devo correggerli, ma sono solo 
errori di pulizia dell'ambiente, non comprommettono il proseguimento del 
test.
 
Disinstallazione:
 
cancellare la dir "bench" scaricata da git clone
e, dalla home, la directory su cui il test lavora
 
~/.config/bcbench
 
Che contiene il video e, lo sporco generato durante il test e i 
risultati del test.
 
 

Dimenticavo il test richiede permessi di root perchè alcuni programmi di 
detect dell'hardware lo richiedono.
 
non dovrebbe fare danni, almeno non intenzionalmente, e tutto il lavoro 
dovrebbe farlo nella directory indicata.
 
degli rm all'interno che ne sono, ma solo per cancellare temporanei 
creati dallo script.
 
Di seguito un esempio di output prodotto (sperando che per questioni di 
acapo non si scombini troppo, e rimanga ragionevolmente leggibile)
 
Nota!: Le sequenze ":: @nomecampo   = valore" sono state pensate per 
poter agevolmente riparsare il file per inserire i valori su un db o da 
qualche altra parte.
 
-
Tempo per esecuzione in serie di 10 benchmd5.py 
(basso è meglio) :: @hasing_py_lin   = 00:01.58.420
Tempo per esecuzione in multithread di 100 benchmd5.py 
(basso è meglio) :: @hasing_py_par   = 00:09.58.667
Tempo per esecuzione in serie di 10 
benchmd5.pl
 
(basso è meglio) :: @hasing_pl_lin   = 00:02.45.134
Tempo per esecuzione in multithread di 100 
benchmd5.pl
 
(basso è meglio) :: @hasing_pl_par   = 00:14.39.333
HandBrakeCLI tempo per convertire ToS-4k-1920.mov in HANDB_x264.mp4 
(basso è meglio) :: @handbrakeclim4v = 00:09.58.277
P7ZIP Compressione MB/Sec 
(alto  è meglio) :: @b7zMBSCOMP      = 4223.50
P7ZIP Compressione MIBS per SingoloCore 
(alto  è meglio) :: @b7zVAL_AVRSC    = 2840
P7ZIP Compressione MIBS Complessivo su Tutti i Core 
(alto  è meglio) :: @b7zVAL_AVRMC    = 4449
P7ZIP DEcompressione MB/Sec 
(alto  è meglio) :: @b7zMBSDECOMP    = 55973.25
P7ZIP DEcompressione MIBS per SingoloCore 
(alto  è meglio) :: @b7zVAL_AVRSD    = 2582
P7ZIP DEcompressione MIBS Complessivo su Tutti i Core 
(alto  è meglio) :: @b7zVAL_AVRMD    = 5158
P7ZIP Media Comp/Decomp MIBS per SingoloCore 
(alto  è meglio) :: @b7zVAL_TOTS     = 2711
P7ZIP Media Comp/Decomp MIBS Complessivo su Tutti i Core 
(alto  è meglio) :: @b7zVAL_TOTM     = 4803
7zip:   tempo per comprimere ToS-4k-1920.mov in ToS-4k-1920_z9.7z 
(basso è meglio) :: @test7zip        = 00:03.49.815
lrzip:  tempo per comprimere ToS-4k-1920.mov in ToS-4k-1920.lrz 
(basso è meglio) :: @test_7zip       = 00:04.39.256
gzip:   tempo per comprimere ToS-4k-1920.mov in ToS-4k-1920_gzip.gz 
(basso è meglio) :: @test_gzip       = 00:01.11.185
pigz:   tempo per comprimere ToS-4k-1920.mov in ToS-4k-1920_pigz.gz 
(basso è meglio) :: @test_pigz       = 00:00.55.668
bzip2:  tempo per comprimere ToS-4k-1920.mov in ToS-4k-1920_bzip2.gz 
(basso è meglio) :: @test_bzip2      = 00:03.05.320
lbzip2: tempo per comprimere ToS-4k-1920.mov in ToS-4k-1920_bzip2.gz 
(basso è meglio) :: @test_lbzip2     = 00:01.31.142
pyrit test PYRITPMKs 
(alto  è meglio) :: @PYRITPMKs       = 1519.46
Secondi test SYSBENCH su 2 Thread 
(basso è meglio) :: @val_sysbench    = 42.4260s
HARDINFO TEST 
                :: @hinf_status     = PASS
Blowfish 
(basso è meglio) :: @hinf_Blowfish   = 6.451
CryptoHash 
(alto  è meglio) :: @hinf_CryptoHash = 215.085
Fibonacci 
(basso è meglio) :: @hinf_Fibonacci  = 2.701
NQueens 
(basso è meglio) :: @hinf_NQueens    = 8.244
FFT 
(basso è meglio) :: @hinf_FFT        = 3.046
Raytracing 
(basso è meglio) :: @hinf_Raytracing = 8.167
 
 
HARDWARE:
 
 
Memoria utilizzata in Kb durante i test
Tutto OK, nessuna condizione di swap durante i test :: 
@mem_GLOBAL_SWAP_WARNING = PASS
Test sysbench            :: @mem_sysbench_STAT               = PASS
Test sysbench            :: @mem_sysbench_TOTUSED            = 30552
Test sysbench            :: @mem_sysbench_SWAPUSED           = 0
Test md5.py singlethread :: @mem_md5_single_py_STAT          = PASS
Test md5.py singlethread :: @mem_md5_single_py_TOTUSED       = 98936
Test md5.py singlethread :: @mem_md5_single_py_SWAPUSED      = 0
Test md5.py multithread  :: @mem_md5_multi_py_STAT           = PASS
Test md5.py multithread  :: @mem_md5_multi_py_TOTUSED        = 50940
Test md5.py multithread  :: @mem_md5_multi_py_SWAPUSED       = 0
Test 
md5.pl
 singlethread :: @mem_md5_single_pl_STAT          = PASS
Test 
md5.pl
 singlethread :: @mem_md5_single_pl_TOTUSED       = 26468
Test 
md5.pl
 singlethread :: @mem_md5_single_pl_SWAPUSED      = 0
Test 
md5.pl
 multithread  :: @mem_md5_multi_pl_STAT           = PASS
Test 
md5.pl
 multithread  :: @mem_md5_multi_pl_TOTUSED        = 520108
Test 
md5.pl
 multithread  :: @mem_md5_multi_pl_SWAPUSED       = 0
Test handbrake           :: @mem_handbrake_STAT              = PASS
Test handbrake           :: @mem_handbrake_TOTUSED           = 752796
Test handbrake           :: @mem_handbrake_SWAPUSED          = 0
Test 7z Autotest         :: @mem_7z_autotest_STAT            = PASS
Test 7z Autotest         :: @mem_7z_autotest_TOTUSED         = 423924
Test 7z Autotest         :: @mem_7z_autotest_SWAPUSED        = 0
Test 7z Compression      :: @mem_7z_compression_STAT         = PASS
Test 7z Compression      :: @mem_7z_compression_TOTUSED      = 1437156
Test 7z Compression      :: @mem_7z_compression_SWAPUSED     = 0
Test lrzip Compression   :: @mem_lrzip_compression_STAT      = PASS
Test lrzip Compression   :: @mem_lrzip_compression_TOTUSED   = 1436552
Test lrzip Compression   :: @mem_lrzip_compression_SWAPUSED  = 0
Test gzip Compression    :: @mem_gzip_compression_STAT       = PASS
Test gzip Compression    :: @mem_gzip_compression_TOTUSED    = 1447080
Test gzip Compression    :: @mem_gzip_compression_SWAPUSED   = 0
Test pigz Compression    :: @mem_pigz_compression_STAT       = PASS
Test pigz Compression    :: @mem_pigz_compression_TOTUSED    = 1446828
Test pigz Compression    :: @mem_pigz_compression_SWAPUSED   = 0
Test bzip2 Compression   :: @mem_bzip2_compression_STAT      = PASS
Test bzip2 Compression   :: @mem_bzip2_compression_TOTUSED   = 1448088
Test bzip2 Compression   :: @mem_bzip2_compression_SWAPUSED  = 0
Test lbzip2 Compression  :: @mem_lbzip2_compression_STAT     = PASS
Test lbzip2 Compression  :: @mem_lbzip2_compression_TOTUSED  = 1457368
Test lbzip2 Compression  :: @mem_lbzip2_compression_SWAPUSED = 0
Test Pyrit               :: @mem_pyrit_STAT                  = PASS
Test Pyrit               :: @mem_pyrit_TOTUSED               = 49712
Test Pyrit               :: @mem_pyrit_SWAPUSED              = 0
Test Hardinfo            :: @mem_hardinfo_STAT               = PASS
Test Hardinfo            :: @mem_hardinfo_TOTUSED            = 59708
Test Hardinfo            :: @mem_hardinfo_SWAPUSED           = 0
Turbostat General info [[[ @turbostatmemo
CPUID(0): GenuineIntel 10 CPUID levels; family:model:stepping 0x6:17:6 
(6:23:6)
No invariant TSC
TURBO STAT NON DISPONIBILE SU QUESTA CPU
]]]
 
********************************************* CPU INFO 
*********************************************
Modello CPU       :: @CPU_NAME         = Intel(R) Core(TM)2 Duo CPU 
E8200 @ 2.66GHz
Desc. aggiuntiva  :: @CPU_DESC         = 1 dual-core processor
Identificativo    :: @CPU_ID           = 76 06 01 00 FF FB EB BF
soket             :: @CPU_SCK          = PROCESSOR
Num. Core fisici  :: @CPU_NUMCORE      = 1
Thread per core   :: @CPU_THREADxCORE  = 2
Tot Thread logici :: @CPU_THREAD       = 2
Voltaggio CPU     :: @CPU_VOLT         = unknown
CPU Ext FAMILY    :: @CPU_EFAMILY      = 0
CPU Ext MODEL     :: @CPU_EMODEL       = 1
CPU FAMILY        :: @CPU_FAMILY       = 6
CPU MODEL         :: @CPU_MODEL        = 23
CPU STEPPING      :: @CPU_STEPPING     = 6
MICROCODE         :: @CPU_MICROCODE    = 0x60c
MHZ               :: @CPU_MHZ          = 2664.000
MAXMHZ            :: @CPU_MAXMHZ       = 4000 MHz
External CLOCK    :: @CPU_EXTCLOCK     = 333 MHz
CACHE L1D         :: @CPU_L1DCACHE     = 32K
CACHE L1I         :: @CPU_L1ICACHE     = 32K
CACHE L2          :: @CPU_L2CACHE      = 6144K
CACHE L3          :: @CPU_L3CACHE      = unknown
Virtualiz. Tech.  :: @CPU_VTX          = VT-x
Cooproc.Mat. (FPU):: @FPU_PRESENT      = yes
FPU EXCEPTION     :: @FPU_EXCEPTION    = yes
WRITE PROTECT     :: @CPU_WRITEPROTECT = yes
LONG NOPS         :: @CPU_LONG_NOPS    = yes
Address mode      :: @CPU_ADDR         = 36 bits physical, 48 bits virtual
Power Manager     :: @CPU_POWERMANAGER = unknown
FLAGS             :: @CPU_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 lm constant_tsc arch_perfmon pebs bts 
rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 
cx16 xtpr pdcm sse4_1 lahf_lm dtherm tpr_shadow vnmi flexpriority
 
********************************************* RAM INFO 
*********************************************
Memoria Totale in kb        :: @mem_total         = 2046800
Memoria disponibile in kb   :: @mem_avaiable      = 2046800
Memoria utilizzata in kb    :: @mem_used          = 1050748
Memoria libera in kb        :: @mem_free          = 996136
Swap disponibile in kb      :: @swap_avaiable     = 8295420
Swap utilizzata in kb       :: @swap_used         = 0
Swap libera in kb           :: @swap_free         = 8295420
Totale benchi di memoria    :: @Tot_Banchi        = 1
 
Nome Slot del banco         :: @mem_bankpos_1     = CHANNEL_A
Dimensione del banco        :: @mem_banksize_1    = 2048 MB
Tipo di memoria             :: @mem_banktype_1    = DDR3
Velocità del banco          :: @mem_bankspeed_1   = 1066 MHz
Marca                       :: @mem_manufacture_1 = 
ChannelA_DIMM0_Manufacturer0
Modello                     :: @mem_model_1       = ChannelA_DIMM0_PartNum0
Velocità di clock impostata :: @mem_clock_1       =
 
********************************************* VGA INFO 
*********************************************
Scheda video       :: @val_SVproduct              = G84 [GeForce 8600 GS]
Versione           :: @val_SVversion              = a1
Produttore         :: @val_SVvendor               = PC Partner Limited 
Device 8090
Produttore chipset :: @val_SVchipsetVendor        = NVIDIA Corporation
Ampiezza di bus    :: @val_SVbusWidth             = 64 bits
Velocità di clock  :: @val_SVclock                = 33MHz
Capacità           :: @val_SVcapabilities         = pm msi pciexpress 
vga_controller bus_master cap_list rom
Flags              :: @val_SVflags                = bus master, fast 
devsel, latency 0, IRQ 16
Driver utilizzati  :: @val_SVdriver               = nouveau
Modulo kernel      :: @val_SVmodule               =
Versione OpenGL    :: @val_SVopenglversion        = 3.0 Mesa 9.1.3
Info OpenGL Vendor :: @val_SVopenglvendorstring   = nouveau
OpenGL renderer    :: @val_SVopenglrendererstring = Gallium 0.4 on NV84
[[[ @infoMEMVGAmemo
	Memory at d2000000 (32-bit, non-prefetchable) [size=16M]
	Memory at c0000000 (64-bit, prefetchable) [size=256M]
	Memory at d0000000 (64-bit, non-prefetchable) [size=32M]
]]]
 
********************************************* BOARD INFO 
*********************************************
Marca   della scheda madre   :: @MB_manufacturer = Intel Corporation
modello della scheda madre   :: @MB_model        = DG41WV
revisione della scheda madre :: @MB_revision     = AAE90316-102
Bios                         :: @BIOS_vendor     = Intel Corp.
Versione del bios            :: @BIOS_version    = 
WVG4110H.86A.0007.2010.0302.1843
Data del bios                :: @BIOS_date       = 03/02/2010
 
********************************************* xBUNTU INFO 
*********************************************
Distribuzione linux          :: @LinuxDistroName = Ubuntu 13.04
Kernel                       :: @LinuxKenelInfo  = Linux 
3.8.0-29-generic x86_64 GNU/Linux
 
 
SEQUENCE TEST VERSION - :: @SEQUENCE_TEST_VERSION = 0.0.prealfa
OUTPUT VERSION        - :: @OUTPUT_VERSION = 0.3.prealfa
ID TEST               - :: @UUID_ID_TEST = 
ac1237f3-4863-43ad-b554-c77f5c7cca1b
 
 
 

Il 11/09/2013 15:57, Lem Novantotto ha scritto:
 
decode-dimms comunque è un programma in perl che un po' capisco, quindi 
ho messo qualche print in giro e ho visto che lavora correttamente.
 
Trova l'output prodotto dal modulo eeprom e lo legge (cioè sfoglia le 
varie directory /sys/bus/drivers/i2c/eeprom/1-0050 (e numeri a seguire)
e carica su un array il contenuto dei file eeprom che sono contenuti in 
quelle cartelle. Caricando per ogni file i valori su un array.
Per ogni array di dati viene lanciata una cunzione di controllo CRC che 
FALLISCE, e quando fallisce il programma non li considera, a meno di non 
lanciarlo con l'opzione " -c ", in modo da ignorare il controllo. In 
questo modo, il programma mostra qualcosa, ma, come è lecito aspettarsi, 
è completamente senza senso
 
Ho controllato e i valori vengono caricati correttamente. Cioè 
corrispondono a quelli presenti sui file.
 
Analizzando però i primi byte di quello che c'è sul file e 
confrontandola con la strutture che ho trovato su wiki per le ddr2 (in 
quel momento stavo lavorando su una mobo con atom 330 e memoria ddr2) il 
contenuto dei file mi è sembrato completamente diverso da quanto previsto.
 
Quindi ne ho concluso che decode-dimms funziona, ma è il modulo eeprom 
che per qualche motivo che non ho ancora individuato, mi produce dei 
file eeprom "anomali".
 
Questa sera, se ho tempo, clono la chiavetta su cui ho un installazione 
pulita kubuntu 13.04 in cui non è mai stato installato nessun i2c-tools 
in nessuna versione. Verifico che non sia già presente un pre-esistente 
modulo eeprom che possa sopravvivere e disturbare, e poi provo (sempre 
partendo da un clone pulito) le tre versioni i2c, quella standard della 
distribuzione, quella in formato tar e quella svn
 
Per ora l'unica cosa che ho accertato è che fra 2 riavvi della macchina 
la struttura che mi ha prodotto era uguale (ho almeno simile, mi ero 
segnato su un foglietto solo i primi byte del primo file)
 
altra cosa nella documentazione da tè indicata è suggerito di testare
lspci -n -v -s 00:1f.3  (e mi pare che risponda in modo sensato)
 
00:1f.3 0c05: 8086:1e22 (rev 04)
         Subsystem: 1043:84ca
         Flags: medium devsel, IRQ 3
         Memory at f7d15000 (64-bit, non-prefetchable) [size=256]
         I/O ports at f040 [size=32]
         Kernel modules: i2c-i801
 
 
PECCATO, perchè gli output di decode-dimms che ho visto in internet mi 
piacciono, spero di non dover debuggare un modulo del kernel perche è 
oltre le mie possibilità.
