Linux - Czy jest jakiś sposób na określenie prędkości pamięci za pomocą oprogramowania?

9

Czy jest jakiś sposób na określenie prędkości pamięci za pomocą oprogramowania? Korzystam z Fedory 9 i szukam prędkości DIMM-ów, które tam mam.

Próbowałem „lshw”, ale nie wyświetla prędkości. Wiem, że płyta główna obsługuje 3 różne prędkości, ale nie wiem, co tam jest i nie chcę wyłączyć pudełka.

Jakieś pomysły?

Dzięki,

EDYCJA: Znalazłem RAM jako '30 ns' zgodnie z dmidecode. Jak może być 33 MHz, jeśli płyta obsługuje tylko pamięć RAM 400, 533, 667 MHz?

EDYCJA 2: Czy istnieją inne narzędzia do tego celu?



EDYCJA 3: Właściwie poddałem się i skończyłem na wyłączaniu zasilania na kilka minut i otwieraniu skrzynki. Okazało się, że jest to 667 MHz - ten model: http://www.directron.com/rm12864aa667.html . Mimo że nie byłem w stanie stwierdzić, że to 667 za pomocą oprogramowania, zaznaczyłem odpowiedź HD jako poprawną, ponieważ wydaje się to najlepszym narzędziem do tego zadania.




Oto wynik pamięci typu demidecode

# dmidecode 2.7
SMBIOS 2.4 present.

Handle 0x0008, DMI type 5, 20 bytes.
Memory Controller Information
    Error Detecting Method: 64-bit ECC
    Error Correcting Capabilities:
        None
    Supported Interleave: One-way Interleave
    Current Interleave: One-way Interleave
    Maximum Memory Module Size: 1024 MB
    Maximum Total Memory Size: 2048 MB
    Supported Speeds:
        70 ns
        60 ns
        50 ns
    Supported Memory Types:
        DIMM
        SDRAM
    Memory Module Voltage: 3.3 V
    Associated Memory Slots: 2
        0x0009
        0x000A
    Enabled Error Correcting Capabilities:
        None

Handle 0x0009, DMI type 6, 12 bytes.
Memory Module Information
    Socket Designation: DIMM0
    Bank Connections: 9 11
    Current Speed: 30 ns
    Type: Unknown FPM Parity SDRAM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes.
Memory Module Information
    Socket Designation: DIMM1
    Bank Connections: 9 11
    Current Speed: 30 ns
    Type: Unknown FPM Parity SDRAM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK

Handle 0x002F, DMI type 16, 15 bytes.
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 4 GB
    Error Information Handle: Not Provided
    Number Of Devices: 2

Handle 0x0031, DMI type 17, 27 bytes.
Memory Device
    Array Handle: 0x002F
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM0
    Bank Locator: BANK0
    Type: SDRAM
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer0
    Serial Number: SerNum0
    Asset Tag: AssetTagNum0
    Part Number: PartNum0

Handle 0x0033, DMI type 17, 27 bytes.
Memory Device
    Array Handle: 0x002F
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM1
    Bank Locator: BANK1
    Type: SDRAM
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer1
    Serial Number: SerNum1
    Asset Tag: AssetTagNum1
    Part Number: PartNum1
barfoon
źródło
Od jakiego dostawcy pochodzi ta maszyna? Nie możesz tego sprawdzić na ich stronie?
MDMarra,
Nie, to maszyna zbudowana na zamówienie
barfoon

Odpowiedzi:

18

dmidecode to narzędzie, którego szukasz.

hdanniel
źródło
Jest tu wiele informacji - ale prędkość jest w ns, chcę prędkość w MHz?
barfoon
Mój kod dmidecode daje mi prędkości w ns i MHz, ale kilka sekund arytmetyki (lub jednostek uruchomionych) wykona konwersję, jeśli to konieczne.
womble
1
Czyli pamięć 30 ns = 33 MHz? Czy moja matematyka jest poprawna? 1 / (
30/1
3
@barfoon: Tak, 30ns == 33 MHz. Szybsze obliczenia wynoszą 1000 / (ns) == prędkość w MHz.
womble
13

W moim Debianie, lshw podaj mi te informacje.

# lshw -version
B.02.13
# lshw -short -C memory
H/W path             Device     Class       Description
=======================================================
/0/1                            memory      128KiB BIOS
/0/5/6                          memory      20KiB L1 cache
/0/5/7                          memory      1MiB L2 cache
/0/27                           memory      System Memory
/0/27/0                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/27/1                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/27/2                         memory      256MiB DIMM DDR Synchronous 266 MHz (3.8 ns)
/0/27/3                         memory      256MiB DIMM DDR Synchronous 400 MHz (2.5 ns)
/0/28                           memory      Flash Memory
/0/28/0                         memory      512KiB Chip FLASH Non-volatile
/0/0                            memory      
/0/2                            memory      
sebthebert
źródło
to świetnie, ale w mojej wersji nie pokazuje opisanej prędkości. W każdym razie dzięki,
barfoon
2

Czy możesz opublikować swoje wyjście z dmidecode dla sekcji pamięci? ( dmidecode - pamięć typu )

Możesz przeczytać to: http://www.howtoforge.com/dmidecode-finding-out-hardware-details-with-opening-the-computer-case

„NS” odnosi się do „nanosekundy” szybkości, z jaką pamięć jest w stanie odpowiedzieć. Im niższa liczba, tym większa prędkość. Niestety nie odnosi się to do dokładnej liczby MHz. DMIDECODE ma również generować Mhz. Sprawdź na samym dole danych wyjściowych lub po prostu dmidecode - typpe memory | grep Mhz

David Rickman
źródło
Może sugeruję uaktualnienie wersji dmidecode do wersji 2.8 lub nowszej. Możesz pobrać rpm tutaj: icewalkers.com/rpm/dmidecode/fedora-core-9/download/… i po prostu rpm -i dmidecode * rpm Ver. 2.7 nie obsługuje wyświetlania MHz, w którym działa pamięć.
David Rickman,
1

Jeśli naprawdę chcesz przetestować szybkość pamięci, nie możesz tego zrobić w trybie chronionym procesorem 386 z procesorem 386, ponieważ błędy strony i układ stronicowania będą miały duże znaczenie w wynikach.

Najlepszym rozwiązaniem jest kodowanie testu porównawczego w 16-bitowym „trybie rzeczywistym”, w którym masz bezpośredni dostęp do fizycznych adresów pamięci.

Aby uzyskać ładny kod startowy, który można łatwo dostosować, sprawdź źródło programu rozruchowego GRUB stage1. stage1 to MBR, który znajduje się w pierwszych 512 bajtach twojego dysku twardego. Znajdziesz go w katalogu źródłowym plik stage1 / stage1.S; jest mocno komentowany i łatwo zrozumiały.

Po dostosowaniu MBR do własnych potrzeb skompiluj go przy użyciu następującej metody:

$ BOOT=mbr
$ gcc -O2 -fno-builtin -nostdinc -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef -g -c $BOOT.S
$ gcc  -g  -nostdlib -Wl,-N,-Ttext,7C00 -o $BOOT.exec  $BOOT.o  
$ objcopy -O binary $BOOT.exec $BOOT

Teraz masz gotowy MBR x86. Pożądane jest przetestowanie kodu na maszynie wirtualnej, takiej jak Qemu lub Bochs, przed uruchomieniem go na prawdziwej maszynie; ułatwi to także cykl kompilacji / debugowania.

Mam nadzieję, że to pomoże


źródło
1
Myślę, że po prostu chce wiedzieć, na jakiej częstotliwości jest oceniane jego RAM bez otwierania maszyny.
MDMarra,
1

Jeśli masz szczęście, narzędziem, którego szukasz, jest latarka. Trochę pamięci, którą możesz otworzyć, poszukać i zobaczyć naklejkę z etykietą. Zależy wyłącznie od przypadku jednak, jak łatwo jest dostać się do niego, a nie trzeba wyłączyć maszynę, tak długo, jak jesteś naprawdę naprawdę naprawdę ostrożny. Nie wiem, jakie masz doświadczenie w pracy z wewnętrznymi częściami komputera, ale to kolejna rzecz, której próbuję, gdy nie mogę użyć poleceń oprogramowania Linux, aby to rozgryźć.

Bart Silverstrim
źródło
1

EDYCJA: Znalazłem RAM jako '30 ns' zgodnie z dmidecode. Jak może być 33 MHz, jeśli płyta obsługuje tylko pamięć RAM 400, 533, 667 MHz?

Zgaduję, że to coś takiego:

Każdy pojedynczy układ na karcie SIMM / DIMM działa z częstotliwością 30ns lub 33MHz. Jest 8 układów na SIMM, więc 8 x 33 MHz = 266 MHz; lub 16 układów na moduł DIMM, co daje 533 MHz.

Podczas gdy każdy układ pracuje z częstotliwością 33 MHz, cały moduł pamięci może dostarczać dane z częstotliwością 533 MHz.

pgs
źródło
Uważam, że ta odpowiedź jest najbardziej sensowna, napisałem powyżej
kod dmidecode
Niestety, nie jest to takie proste, jak widziałem coś takiego, jak prędkość raportowana wynosi 30ns, a rzeczywista prędkość pamięci wynosi 667 MHz ... Więc nie jestem pewien, czy istnieje wyraźny związek między nimi dwoma.
olefebvre
@pgs - Synchronous Dram tak nie działa. Wszystkie chipy są dostępne równolegle. Bardziej prawdopodobne jest, że ten 30ns to całkowity czas dostępu do pierwszego słowa, biorąc pod uwagę opóźnienia adresów wierszy i kolumn. Nawet jeśli dostęp do pierwszego słowa zajmuje w sumie 30ns, kolejne słowa powinny wychodzić znacznie szybciej. Nowoczesne procesory poświęcają wiele wysiłku na ukrywanie takich opóźnień przy użyciu pamięci podręcznej, przewidywania gałęzi i innych optymalizacji.
Mark Booth,
1

Wiem, że to trochę za późno, ale:

Jeśli weźmiesz obsługiwane czasy i podzielisz je na pół, pasują one do podanej stawki 30. Następnie, jeśli podzielisz to na pół i podzielisz przez to 10000, daje (800, 666, 571,4)

Nie mam pojęcia, dlaczego, chociaż wydaje mi się, że związek między czasami a szybkością transmisji danych może być skomplikowany; Ponadto jedną z nich może być podwójna szybkość przesyłania danych.

Chris2048
źródło
1

Dla wyjaśnienia, pamięć 33MHz, którą widzisz na końcu, jest twoją pamięcią bios :)

    Type: Flash
    Type Detail: Non-Volatile
    Speed: 33 MHz
    Manufacturer: ATMEL

Jeśli chcesz użyć lepszego narzędzia, zainstaluj lm_sensors ( https://wiki.archlinux.org/index.php/Lm_sensors ) i i2c-tools ( https://www.archlinux.org/packages/?name=i2c- narzędzia )

Następnie możesz uzyskać znacznie więcej szczegółowych informacji na temat swojej pamięci za pomocą dimm-decode (tutaj jest próbka danych wyjściowych):

Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0055
Guessing DIMM is in                             bank 6

---=== SPD EEPROM Information ===---
EEPROM CRC of bytes 0-116                       OK (0x4422)
# of bytes written to SDRAM EEPROM              176
Total number of bytes in EEPROM                 256
Fundamental Memory type                         DDR3 SDRAM
Module Type                                     RDIMM

---=== Memory Characteristics ===---
Fine time base                                  2.500 ps
Medium time base                                0.125 ns
Maximum module speed                            1066MHz (PC3-8533)
Size                                            16384 MB
Banks x Rows x Columns x Bits                   8 x 15 x 11 x 64
Ranks                                           4
SDRAM Device Width                              4 bits
tCL-tRCD-tRP-tRAS                               7-7-7-20
Supported CAS Latencies (tCL)                   8T, 7T, 6T

---=== Timing Parameters ===---
Minimum Write Recovery time (tWR)               15.000 ns
Minimum Row Active to Row Active Delay (tRRD)   7.500 ns
Minimum Active to Auto-Refresh Delay (tRC)      50.625 ns
Minimum Recovery Delay (tRFC)                   160.000 ns
Minimum Write to Read CMD Delay (tWTR)          7.500 ns
Minimum Read to Pre-charge CMD Delay (tRTP)     7.500 ns
Minimum Four Activate Window Delay (tFAW)       37.500 ns

---=== Optional Features ===---
Operable voltages                               1.5V, 1.35V
RZQ/6 supported?                                Yes
RZQ/7 supported?                                Yes
DLL-Off Mode supported?                         Yes
Operating temperature range                     0-95C
Refresh Rate in extended temp range             1X
Auto Self-Refresh?                              No
On-Die Thermal Sensor readout?                  No
Partial Array Self-Refresh?                     No
Thermal Sensor Accuracy                         0
SDRAM Device Type                               0

---=== Physical Characteristics ===---
Module Height (mm)                              30
Module Thickness (mm)                           4 front, 4 back
Module Width (mm)                               133.5
Module Reference Card                           F

---=== Registered DIMM ===---
# DRAM Rows                                     2
# Registers                                     2
Register manufacturer                           IDT
Register device type                            SSTE32882
Register revision                               0x61
Heat spreader characteristics                   00
SSTE32882 RC0/RC1                               00
SSTE32882 RC2/RC3                               50
SSTE32882 RC4/RC5                               50
SSTE32882 RC6/RC7                               00
SSTE32882 RC8/RC9                               00
SSTE32882 RC10/RC11                             00
SSTE32882 RC12/RC13                             00
SSTE32882 RC14/RC15                             00

---=== Manufacturer Data ===---
Module Manufacturer                             Samsung
DRAM Manufacturer                               Samsung
Manufacturing Location Code                     0x02
Manufacturing Date                              2011-W39
Assembly Serial Number                          xxx
Part Number                                     M393B2K70CM0-YF8
tweak2
źródło
1
dimm-decode? Myślę, że miałeś na myśli decode-dimms. W każdym razie to nie działa dla mnie: mówi 0 Wykryto moduły DIMM SDRAM.
underscore_d
0

Jeśli to możliwe, spróbuj uruchomić Memtest, IIRC, pokazuje on przepustowość, a także szybkość pamięci w lewym górnym rogu (na przykład 20000 MB / s przy 667 MHz).

olefebvre
źródło
0

Czasy pracy z DDR sdram są wielokrotnością z 8 ORAZ z 2. Z tego co pamiętam, DDR oznacza Podwójną Przepływność Danych (proszę to sprawdzić, ponieważ nie mogłem znaleźć informacji do sprawdzenia ponownie). W międzyczasie pamięć ta może przenosić oba sposoby (wejście i wyjście).

Powód jest łatwy. DDR jest taktowany dwukrotnie szybciej niż podana częstotliwość magistrali. Nie należy mylić częstotliwości magistrali i przepustowości magistrali. Magistrala przesyła 32, 64, 128 lub 256 bitów na częstotliwości magistrali. Jeden zestaw 128 bitów danych NA CYKL to ogromna ilość danych.

Jako przykład: DDR400 został znaleziony w autobusach @ 200 MHz. Druga nazwa to PC3200. Aby uzyskać od 400 do 3200, znajdziesz współczynnik 8. Ten współczynnik ZAWSZE jest weryfikowany niezależnie od DDR (1/2/3/4 ...)

Poniższy link jest wystarczająco dobry, aby uzyskać podstawy (i prawdopodobnie lepsze i bardziej kompletne niż moje wyjaśnienia :))

Speedstream
źródło