RAM là một thành phần vô cùng quan trọng trong mọi hệ thống Linux và luôn cần được giám sát chặt chẽ vì việc hết bộ nhớ có thể khiến server phản hồi rất chậm hay thậm chí không phản hồi. Cùng Vietnix tham khảo qua bài viết dưới đây để tìm hiểu rõ hơn bạn nhé.
Tổng hợp 6 cách kiểm tra RAM trong Linux
Kiểm tra bằng lệnh free
Lệnh phổ biến nhất để kiểm tra RAM trên Linux là lệnh free:
$ free
total used free shared buff/cache available
Mem: 4039588 3475216 137584 39596 426788 287580
Swap: 0 0 0
Output của lệnh được chia thành 2 mục: bộ nhớ (RAM thực/memory) và swap (bộ nhớ ảo). Một số thông tin ta có được từ lệnh là:
- total: tổng bộ nhớ được cài đặt trên hệ thống, tính theo đơn vị kilobyte.
- used: tổng RAM được dùng trên hệ thống, đơn vị kilobyte.
- free: tổng bộ nhớ còn trống và khả dụng trên hệ thống (kilobyte).
- shared: phần bộ nhớ được dùng bởi tmpfs – một filesystem ảo.
- buffer: bộ nhớ dùng bởi kernel buffer.
- cache: tổng bộ nhớ dùng bởi trang cache – nơi lưu trữ dữ liệu trước khi ghi vào đĩa.
- available: tổng bộ nhớ khả dụng trên hệ thống (kilobyte).
Trong đó, phần bộ nhớ được dùng bởi cache hoặc buffer đều có thể được giải phóng bởi Kernel mỗi khi hệ thống cần.
Bên cạnh đó, ta cũng có thể thêm option -h vào lệnh free để hiển thị kết quả ở định dạng dễ đọc hơn:
total used free shared buff/cache available
Mem: 3.9G 3.3G 127M 38M 400M 256M
Swap: 0B 0B 0B
Tương tự, ta cũng có thể hiển thị thêm cột Total bằng option -t:
$ free -t
total used free shared buff/cache available
Mem: 4039588 3499392 128828 39596 411368 263292
Swap: 0 0 0
Total: 4039588 3499392 128828
Kết hợp -t và -h:
$ free -th
total used free shared buff/cache available
Mem: 3.9G 3.3G 125M 38M 402M 257M
Swap: 0B 0B 0B
Total: 3.9G 3.3G 125M
Bạn đọc có thể tham khảo qua một số bài viết cùng chủ để Linu mà Vietnix đã tổng hợp:
Kiểm tra RAM trong Linux bằng lệnh vmstat
Lệnh vmstat cũng có phép kiểm tra phần bộ nhớ ảo trên hệ thống:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 149720 49080 371348 0 0 125 121 1 1 2 1 96 0 0
Output sẽ hơi khó hiểu hơn một chút, với các thông tin như sau:
- r: số lượng process chạy được có ở trên hệ thống.
- b: số lượng process trong trạng thái sleep liên tục.
- swpd: lượng RAM đang được sử dụng.
- free: bộ nhớ còn trống.
- buff, cache: RAM được dùng bởi kernel buffer và cache trang.
- inactive, active: số lượng bộ nhớ đang ở trang thái hoạt động và không hoạt động.
- si: swap được dùng bởi đĩa.
- so: tổng bộ nhớ swap được swap sang đĩa.
Các cột khác là những thông tin liên quan đến CPU và I/O, vì ta chỉ cần kiểm tra RAM trong Linux nên có thể bỏ qua những thông số này.
$ vmstat -s
4039588 K total memory
3460532 K used memory
3398428 K active memory
198356 K inactive memory
162648 K free memory
48904 K buffer memory
367504 K swap cache
0 K total swap
0 K used swap
0 K free swap
Ở các dòng đầu tiên của output, bạn có thể biết được thông tin khá giống với lệnh free bao gồm:
- Tổng bộ nhớ
- Bộ nhớ đã được sử dụng,
- Bộ nhớ đang ở trạng thái hoạt động,
- Bộ nhớ ở trạng thái không hoạt động
- Bộ nhớ còn trống.
Kiểm tra RAM trong Linux bằng file /proc/meminfo
Kernel chính là thành phần ảo hóa filesystem và cung cấp các điểm truy cập cho một số thiết bị trên hệ thống. Trong đó, thư mục /proc thường sẽ lưu trữ các tham chiếu đến những process trên hệ thống, còn /dev lưu trữ tham chiếu đến các thiết bị ảo. Bên cạnh đó, trong thư mục /proc còn có file meminfo cũng có thể được dùng để kiểm tra RAM trong Linux
$ cat /proc/meminfo
MemTotal: 4039588 kB
MemFree: 142400 kB
MemAvailable: 267144 kB
Buffers: 39216 kB
Cached: 292508 kB
SwapCached: 0 kB
Active: 3436724 kB
Inactive: 180432 kB
Active(anon): 3285468 kB
Inactive(anon): 38960 kB
Active(file): 151256 kB
Inactive(file): 141472 kB
Unevictable: 36 kB
Mlocked: 36 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 708 kB
Thông tin được cung cấp cũng khớp với kết quả trả về từ lệnh free và vmstat. File /proc/meminfo cho biết thông tin về tổng bộ nhớ trên hệ thống, bộ nhớ còn trống, bộ nhớ khả dụng và buffer, page cache.
Kiểm tra bằng demidecode
Nếu muốn kiểm tra phần cứng RAM thì ta có thể dùng lệnh dmidecode (chạy bằng quyền sudo):
$ sudo dmidecode
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.
13 structures occupying 405 bytes.
Table at 0x000F10D0.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Private
Version: 20171212
Release Date: 12/12/2017
Address: 0xE8000
Runtime Size: 96 kB
ROM Size: 64 kB
Characteristics:
BIOS characteristics not supported
Targeted content
Theo mặc định thì lệnh dmidecode được dùng để dump (kết xuất) tất cả phần cứng có trên hệ thống. Nếu muốn xem thông tin gần cứng riêng của bộ nhớ thì ta cần chỉ định thêm loại phần cứng như sau:
$ sudo dmidecode --type memory
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.
Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array
Location: Other
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 4 GB
Error Information Handle: Not Provided
Number Of Devices: 1
Handle 0x1100, DMI type 17, 21 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: 0x0000
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: DIMM 0
Bank Locator: Not Specified
Type: RAM
Type Detail: None
Kiểm tra RAM bằng Prometheus
Bên cạnh cách sử dụng lệnh truyền thống, bạn có thể sử dụng những công cụ giám sát hiện đại như Prometheus và Grafana. Prometheus cho phép sử dụng công cụ Node Exporter để thu thập các chỉ số host, chẳng hạn như chỉ số về bộ nhớ trong file /proc/meminfo.
Sau khi thu thập xong, bạn import một dashboard có sẵn vào Grafana để giám sát thông số bộ nhớ trong thời gian thực.

Kiểm tra RAM bằng lệnh top/htop
Một cách phổ biến nữa để kiểm tra RAM trong Linux là dùng lệnh top trong Linux hay htop. Trong đó top đã được cài đặt sẵn trên hệ thống:
$ top
top - 12:16:27 up 306 days, 7:11, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 256 total, 1 running, 214 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.3 us, 0.7 sy, 0.0 ni, 97.8 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4039588 total, 314884 free, 3436960 used, 287744 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 325952 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23616 telegraf 20 0 1201168 19808 4944 S 1.3 0.5 1051:02 telegraf
23120 influxdb 20 0 2043020 250208 9956 S 0.7 6.2 715:58.34 influxd
3688 root 20 0 1031632 43296 0 S 0.3 1.1 497:27.81 mongod
Bên cạnh thông tin về CPU thì lệnh top còn cho phép kiểm tra RAM có trên hệ thống.
Lệnh htop cũng cho phép kiểm tra bộ nhớ trên server, nhưng có thể chưa có sẵn trên máy. Ta có thể cài đặt qua yum hoặc apt như sau:
$ sudo apt-get install htop
$ sudo yum install htop
Kiểm tra RAM bằng lệnh htop:
$ htop
1 [| 2.0%] Tasks: 192, 608 thr; 1 running
2 [| 0.7%] Load average: 0.16 0.07 0.02
Mem[||||||||||||||||||||||||||||||||||3.32G/3.85G] Uptime: 306 days(!), 07:16:02
Swp[ 0K/0K]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
29728 user 20 0 26336 4520 3148 R 1.3 0.1 0:01.11 htop 328872 logstash 39 19 3679M 721M 0 S 0.7 18.3 11h58:46 /usr/bin/java -Xms1g -Xmx1g -
Lệnh htop cũng cho ra kết quả tương tự, nhưng ở định dạng thân thiện hơn với người dùng.
Lời kết
Trong bài viết này, Vietnix đã hướng dẫn nhiều cách khác nhau để kiểm tra RAM trong Linux thông qua việc sử dụng lệnh và cả những công cụ giám sát hiện đại như Prometheus hặc Grafana. Việc giám sát RAM thường xuyên là vô cùng quan trọng đối với mọi quản trị viên của hệ thống, nếu bạn đọc hứng thú với chủ đề quản trị hệ thống Linux thì đừng bỏ lỡ những bài viết sắp tới của Vietnix nhé!