furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Sprawdzanie pod Linux rodzaju pamięci RAM.

2019.02.15 - piątek / kategoria: Linux / tagi: linux /

[ Aktualizacja: 2019.02.15 ]

Oto kilka programów pozwalajacych sprawdzić pod Linux jakiego rodzaju kości pamięci RAM są zamontowane w komputerze.

Informacje te wymagają uprawnień administratora więc wszystkie przykłady wymagają sudo.

Programy te potrafią też podać informacje o innych podzespołach komputera ale to pomijam.

dmidecode

$ sudo dmidecode -t memory

$ sudo dmidecode --type memory

$ sudo dmidecode --type 17

Dla każdej kości pamięci jest wyświetlana osobna informacja w poniższej postaci.

Handle 0x000E, DMI type 17, 28 bytes
Memory Device
    Array Handle: 0x000D
    Error Information Handle: No Error
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 4096 MB
    Form Factor: SODIMM
    Set: 1
    Locator: M1
    Bank Locator: Bank 0
    Type: DDR3
    Type Detail: Synchronous
    Speed: 1334 MT/s
    Manufacturer: 075D
    Serial Number: 00000000
    Asset Tag: 1628
    Part Number: GR1333S364L9/4G
    Rank: Unknown

Właściwie to podaje informacje dla wszystkich dostępnych banków/gniazd, do których można wstawić kości pamięci, więc jeśli jakiś bank nie jest obsadzony kościa to poda puste dane.

Z tego można dowiedzieć się między innymi

  • pojemność (4096 MB),
  • rodzaj (SODIMM),
  • typ (DDR3),
  • prędkośc (1334 MT/s),
  • numer partii (GR1333S364L9/4G) - pozwala to odszukać więcej informacji w internecie.

Używając innych wartości liczbowy dla --type można poznać informacje o innych elementach komputera.

Dla części z nich można używać nazw zamiast liczb: bios, system, baseboard, chassis, processor, memory, cache, connector, slot.

Instalacja: apt install dmidecode

lshw

$ sudo lshw -c memory

Część wyniku

  *-memory
       description: System Memory
       physical id: d
       slot: System board or motherboard
       size: 8GiB
     *-bank:0
          description: SODIMM DDR3 Synchronous 1334 MHz (0,7 ns)
          product: GR1333S364L9/4G
          vendor: Hitachi
          physical id: 0
          serial: 00000000
          slot: M1
          size: 4GiB
          width: 64 bits
          clock: 1334MHz (0.7ns)
     *-bank:1
          description: SODIMM DDR3 Synchronous 1334 MHz (0,7 ns)
          product: GR1333S364L9/4G
          vendor: Hitachi
          physical id: 1
          serial: 00000000
          slot: M2
          size: 4GiB
          width: 64 bits
          clock: 1334MHz (0.7ns)
     *-bank:2
          description: SODIMM DDR3 Synchronous [empty]
          physical id: 2
          slot: M3
     *-bank:3
          description: SODIMM DDR3 Synchronous [empty]
          physical id: 3
          slot: M4

Po doinstalowaniu lshw-gtk można wszystkie informacje przeglądać w okienku.

$ sudo lshw -X
lshw gtk

Instalacja: apt install lshw

Instalacja: apt install lshw-gtk

inxi

$ sudo inxi -m

Memory:    RAM: total: 7.65 GiB used: 3.27 GiB (42.7%)
           Array-1: capacity: 16 GiB slots: 4 EC: None
           Device-1: M1 size: 4 GiB speed: 1334 MT/s
           Device-2: M2 size: 4 GiB speed: 1334 MT/s
           Device-3: M3 size: No Module Installed
           Device-4: M4 size: No Module Installed

Instalacja: apt install inxi

URL: https://smxi.org/docs/inxi.htm

osquery

Narzędzie stworzone przez Facebook. Pozwala pobierać informacje o systemie za pomocą zapytań SQL.

Używając SELECT * FROM memory_devices; można zobaczyć wszystkie informacje o kościach pamięci ale ponieważ nie mieszczą się one w jednej linii więc wybrałem tylko część z nich.

Wykonanie zapytania w trybie interaktywnym.

$ sudo osquery

osquery> SELECT form_factor, size, memory_type, max_speed FROM memory_devices;

+-------------+------+-------------+-----------+
| form_factor | size | memory_type | max_speed |
+-------------+------+-------------+-----------+
| SODIMM      | 4096 | DDR3        | 1334      |
| SODIMM      | 4096 | DDR3        | 1334      |
| SODIMM      | 0    | DDR3        |           |
| SODIMM      | 0    | DDR3        |           |
+-------------+------+-------------+-----------+

osquery> exit

To samo bez uruchamiania trybu interaktywnego.

$ sudo osqueryi 'SELECT form_factor, size, memory_type, max_speed FROM memory_devices;'

+-------------+------+-------------+-----------+
| form_factor | size | memory_type | max_speed |
+-------------+------+-------------+-----------+
| SODIMM      | 4096 | DDR3        | 1334      |
| SODIMM      | 4096 | DDR3        | 1334      |
| SODIMM      | 0    | DDR3        |           |
| SODIMM      | 0    | DDR3        |           |
+-------------+------+-------------+-----------+

Wyniki można pobrać w różnuch postachaich - np. jako JSON.

$ sudo osqueryi --json 'SELECT form_factor, size, memory_type, max_speed FROM memory_devices;'

[
  {"form_factor":"SODIMM","max_speed":"1334","memory_type":"DDR3","size":"4096"},
  {"form_factor":"SODIMM","max_speed":"1334","memory_type":"DDR3","size":"4096"},
  {"form_factor":"SODIMM","max_speed":"","memory_type":"DDR3","size":"0"},
  {"form_factor":"SODIMM","max_speed":"","memory_type":"DDR3","size":"0"}
]

W zapytaniu można stosować WHERE (oraz inne elementy znane z SQL)

$ sudo osqueryi 'SELECT form_factor, size, memory_type, max_speed FROM memory_devices WHERE size > 0;'

+-------------+------+-------------+-----------+
| form_factor | size | memory_type | max_speed |
+-------------+------+-------------+-----------+
| SODIMM      | 4096 | DDR3        | 1334      |
| SODIMM      | 4096 | DDR3        | 1334      |
+-------------+------+-------------+-----------+

Instalacja: na stronie projektu jest dostępna paczka .deb. Jest też opisane jak dodać repozytorium aby potem instalować/aktualizować za pomocą apt

URL: https://osquery.io/

i-nex

Polski program (napisany w języku Gambas) przypominający CPU-Z spod Windows.

Wygląda, że od kilku lat nie jest rozwijany i nie ma paczek instalacyjnych pod nowsze wersje Linuxa więc nie wiem czy podaje aż tak dokładne dane jak poprzenie programy. Jest wciąż dostęp do kodu źródłowego i może komuś uda się to skompilować i sprawdzić co potrafi podać na temat pamięci RAM.

i-nex

URL: http://i-nex.linux.pl/ , https://github.com/i-nex/I-Nex

Inne

Jest jeszcze hwinfo oraz okienkowy hardinfo, które podają informację o podzespołach komputera ale co do kości pamięci to wygląda, że potrafią podać tylko całkowitą pojemność.

Korzystając z powyższych programów można dane pobrać też bezpośrednio do Pythona o czym w Jak sprawdzić rodzaj pamięci RAM pod Linux z użyciem Pythona

Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury