5 comandi per controllare la ram su Linux
Attenzione
Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.
In Linux ci sono comandi più o meno per qualsiasi cosa, perché l’interfaccia grafica non sempre può essere visibile. Quando si lavora su server ed esiste solo l’accesso shell è disponibile ed ogni cosa debba essere fatte con questi comandi. Quindi oggi esploreremo i comandi che possono essere usati per controllare l’utilizzo della memoria su di un sistema Linux. La memoria include RAM e swap.
È spesso importante controllare l’utilizzo della memoria e la memoria usata per fare in modo di non rimanere senza e continuare a fornire l’accesso degli utenti al server. Per esempio un sito. Se hai attivo un webserver, il server stesso deve avere abbastanza memoria per servire i visitatori del sito. In caso contrario il sito diventerà molto lento, o peggio può “andare giù” nei picchi di traffico, semplicemente perché la memoria diventerebbe troppo poca. Un po’ come accade ai PC.
Ma vediamo ora i cinque comandi alternativi:
1_ Il comando “free”
Il comando free
è forse il più semplice dei comandi per controllare l’utilizzo della memoria su Linux. Ecco un esempio veloce:
$ free -h total used free shared buff/cache available Mem: 3,8G 2,7G 157M 267M 915M 565M Swap: 2,0G 641M 1,4G
L’opzione -h
mostra i dati in un formato facilmente leggibile dall’occhio umano. Il totale di 3,8G è il totale della RAM installata (4GB). La colonna used
mostra la ram utilizzata dal sistema, in questo caso 2,7G. L’output si spiega facilmente da solo.
2_ Il percorso “/proc/meminfo”
Nel file /proc/meminfo
sono contenute tutte le informazioni circa la memoria della macchina connessa. Per leggerlo dovremo lanciare il comando cat
. Questo comando stampa in un terminale il contenuto di un file dato, come nell’esempio che segue.
In realtà la directory di sistema /proc/
non contiene alcun file. Il contenuto sono file virtuali che contengono informazioni dinamiche circa il sistema in uso e il kernel.
$ cat /proc/meminfo MemTotal: 3938504 kB MemFree: 274104 kB MemAvailable: 538012 kB Buffers: 30208 kB Cached: 592216 kB SwapCached: 37948 kB Active: 2583536 kB Inactive: 830584 kB Active(anon): 2364820 kB Inactive(anon): 609264 kB Active(file): 218716 kB Inactive(file): 221320 kB Unevictable: 32 kB Mlocked: 32 kB SwapTotal: 2097148 kB SwapFree: 1186988 kB Dirty: 320 kB Writeback: 0 kB AnonPages: 2777800 kB Mapped: 310684 kB Shmem: 182244 kB Slab: 112400 kB SReclaimable: 56800 kB SUnreclaim: 55600 kB KernelStack: 12032 kB PageTables: 67464 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 4066400 kB Committed_AS: 8606840 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB ShmemHugePages: 0 kB ShmemPmdMapped: 0 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 273724 kB DirectMap2M: 3819520 kB
Sono interessanti i valori relativi a MemTotal
, MemFree
, Buffers
, Cached
, SwapTotal
, SwapFree
. Indicano gli stessi valori del comando free
.
3_ il comando “vmstat”
Il comando vmstat
con l’opzione -s
mostra le statistiche di utilizzo della RAM, più o meno come il comando precedente. Ecco un esempio:
$ vmstat -s 3938504 K total memory 3055616 K used memory 2634584 K active memory 824360 K inactive memory 228428 K free memory 35676 K buffer memory 618784 K swap cache 2097148 K total swap 933456 K used swap 1163692 K free swap 323777 non-nice user cpu ticks 1544 nice user cpu ticks 80596 system cpu ticks 506483 idle cpu ticks 24004 IO-wait cpu ticks 0 IRQ cpu ticks 1124 softirq cpu ticks 0 stolen cpu ticks 7303873 pages paged in 5460784 pages paged out 22090 pages swapped in 256081 pages swapped out 14156008 interrupts 32916209 CPU context switches 1589867624 boot time 32561 forks
4_ il comando “top”
Top è usato generalmente per controllare la RAM e la congestione del processore. Ad ogni modo riporta anche la quantità totale di RAM. Le prime righe dell’output mostrano le informazioni che ci interessano:
top - 10:00:02 up 2:06, 3 users, load average: 0,87, 1,29, 1,35 Tasks: 247 total, 2 running, 202 sleeping, 0 stopped, 0 zombie %Cpu(s): 14,2 us, 5,9 sy, 0,0 ni, 71,5 id, 8,1 wa, 0,0 hi, 0,3 si, 0,0 st KiB Mem : 3938504 total, 496344 free, 2890560 used, 551600 buff/cache KiB Swap: 2097148 total, 1120172 free, 976976 used. 620624 avail Mem
La parte interessante sono i valori relativi a “KiB Mem
” e “KiB Swap
“. Indicano il totale, la memoria libera e quella utilizzata.
5_ il comando “htop”
Molto simile al comando top
(non solo nel nome), anche htop
ci mostra informazioni sulla RAM, ma in modo più leggibile e dinamico.
Informazioni sulla RAM con “dmidecode”
Uno dei comandi che in assoluto mostrano il maggior numero di informazioni sulla RAM è sicuramente dmidecode
.
$ sudo dmidecode -t 17 dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.5 present. Handle 0x000D, DMI type 17, 27 bytes Memory Device Array Handle: 0x000C Error Information Handle: No Error Total Width: 64 bits Data Width: 64 bits Size: 2048 MB Form Factor: SODIMM Set: 1 Locator: M1 Bank Locator: Bank 0 Type: Reserved Type Detail: Synchronous Speed: 800 MT/s Manufacturer: Mfg 0 Serial Number: 1234-B0 Asset Tag: Not Specified Part Number: SODIMM000 Handle 0x000E, DMI type 17, 27 bytes Memory Device Array Handle: 0x000C Error Information Handle: No Error Total Width: 64 bits Data Width: 64 bits Size: 2048 MB Form Factor: SODIMM Set: 1 Locator: M2 Bank Locator: Bank 1 Type: Reserved Type Detail: Synchronous Speed: 800 MT/s Manufacturer: Mfg 1 Serial Number: 1234-B1 Asset Tag: Not Specified Part Number: SODIMM001
Conclusioni
Tutte le soluzioni citate sono di vitale importanza in tutti gli ambiti in cui l’interfaccia grafica ci sia preclusa. Nel caso stessimo lavorando su un computer classico con una gui installata i software più semplici sono “gnome-system-monitor
” per Gnome e “ksysguard
” per KDE.
Entrambi mostrano la memoria totale, utilizzata, libera, la swap, il carico della CPU e della rete con una interfaccia grafica semplice da interpretare.
4 commenti
Jan · 22 Marzo 2024 alle 11:10 AM
Hi Joe,
i found the same translation errors, but i recognized them as such. And i can differenciate between translation errors and content quality. That means: yours is one of the best collections of Linux commands to get infos on RAM usage. Many thanks for that!
BTW: You have reacted perfect on Pauls rude comment – i would have reacted less kind…;-)
TheJoe · 24 Marzo 2024 alle 1:44 PM
Hi Jan, thank you for commenting, for being so kind (and thank you for understanding that I don’t speak German at all… eheh).
Paul has been rude to me, it’s true… but you both had the same issue on the site. This pushed me to look for a solution and seems that I’ve found one. Now no preformatted or code tags will be translated anymore.
Paul · 1 Febbraio 2023 alle 7:30 PM
What a load of rubbish.
The command “frei” doesn’t exist at all, as well as “Spitze”. I understand that “free” and “top” was ment.
The command “/proc / meminfo” doesn’t exist in any language at all. Everything is wrong here, /proc/meminfo is a path, not a command. And with the spaces it’s just totally garbage.
If you don’t want to or can’t check your posts ( including the translated versions), it would be better to be modestly silent instead of leading help seekers down the wrong path.
TheJoe · 1 Febbraio 2023 alle 8:33 PM
Hey, Paul! How are you tonight? What a rude comment, I’ve never received such a rude comment!
There’s an error in the post: /proc/meminfo is a path, not a command… I’m going to correct it right now. But if you allow me to, the best way to point something to someone you don’t know would be: “Hi there, I’ve spotted a big mistake in your post. Please doublecheck the part where you write about /proc/meminfo. It’s a path, not a command. Cheers.”.
Coming to the second point… You’re absolutely right: I don’t doublecheck my posts in different languages, simply because I don’t even know a word of German (or Russian). But you don’t seem to be a complete noob, aren’t you? At least you know what the commands “free” and “top” do. Do you think we can collaborate on writing the same articles in our respective languages? Or you can just review my posts for the German audience.
There’s no money involved, we shall do it for the community.
Feel free to contact me with a comment, or via the form.