8 lệnh để kiểm tra sử dụng bộ nhớ trong Linux

Nội dung bài viết

Video học lập trình mỗi ngày

8 lệnh để kiểm tra sử dụng bộ nhớ trong Linux

Linux không giống như Windows, bạn thường không có giao diện đồ họa để sử dụng, đặc biệt là trong môi trường máy chủ.

Là một quản trị viên Linux, điều rất quan trọng là phải biết cách lấy các tài nguyên hiện có và đang sử dụng, như bộ nhớ, CPU, đĩa, v.v. Nếu một ứng dụng chiếm quá nhiều tài nguyên trên hệ thống của bạn, dẫn đến hệ thống của bạn không đạt đến trạng thái tối ưu, thì bạn cần tìm và sửa nó.


Nếu bạn muốn tìm mười quy trình hàng đầu tiêu thụ bộ nhớ, bạn cần đọc bài viết này: Cách tìm quy trình có mức tiêu thụ bộ nhớ nhiều nhất trong Linux .

Trong Linux, các lệnh có thể làm bất cứ điều gì, vì vậy hãy sử dụng các lệnh liên quan. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn 8 lệnh hữu ích để kiểm tra mức sử dụng bộ nhớ trong hệ thống Linux, bao gồm RAM và phân vùng trao đổi.

Tạo phân vùng trao đổi là rất quan trọng trong hệ thống Linux. Nếu bạn muốn biết cách tạo nó, bạn có thể đọc bài viết này: Tạo phân vùng trao đổi trên hệ thống Linux .

Các lệnh trong linux

Các lệnh trong linux cơ bản sau có thể giúp bạn xem việc sử dụng bộ nhớ trong Linux theo nhiều cách khác nhau.

  • free command
  • /proc/meminfo command
  • vmstat command
  • ps_mem command
  • smem command
  • top command
  • htop command
  • glances command

1- Lệnh free trong linux

free -m là command chính được sử dụng rộng rãi bởi các quản trị viên Linux. Nhưng nó cung cấp thông tin /proc/meminfo ít hơn tập tin. free -m là command sẽ hiển thị số lượng được sử dụng và không sử dụng trong bộ nhớ vật lý và bộ nhớ phân vùng trao đổi, cũng như bộ đệm và bộ đệm được sử dụng bởi kernel.

Thông tin là từ các /proc/meminfo tập tin có được.

# free -m
 total used free shared buff/cache available
Mem: 15867 9199 1702 3315 4965 3039
Swap: 17454 666 16788

Trong đó:

  • total: Tổng bộ nhớ
  • used: Lượng bộ nhớ được sử dụng bởi quy trình hiện đang chạy ( used= total- free- buff/cache)
  • free: Lượng bộ nhớ chưa sử dụng ( free= total- used- buff/cache)
  • shared: Lượng bộ nhớ được chia sẻ giữa hai hoặc nhiều quá trình
  • buffers: Dung lượng bộ nhớ dành cho kernel để ghi lại các yêu cầu hàng đợi quá trình
  • cache: Lưu trữ kích thước bộ đệm trang của các tệp được sử dụng gần đây trong RAM
  • buff/cache: Tổng bộ nhớ được sử dụng bởi bộ đệm và bộ đệm
  • available: Lượng bộ nhớ trống khả dụng để bắt đầu các ứng dụng mới (không bao gồm phân vùng trao đổi)

2 - Kiểm tra CPU Linux

proc/meminfo Một tệp là một tệp ảo chứa thông tin thời gian thực trên nhiều cách sử dụng bộ nhớ. Nó cho thấy rằng đơn vị trạng thái bộ nhớ sử dụng kB, hầu hết đều khó hiểu. Tuy nhiên, nó cũng chứa thông tin hữu ích về việc sử dụng bộ nhớ.

# cat /proc/meminfo

MemTotal: 16248572 kB
MemFree: 1764576 kB
MemAvailable: 3136604 kB
Buffers: 234132 kB
Cached: 4731288 kB
SwapCached: 28516 kB
Active: 9004412 kB
Inactive: 3552416 kB
Active(anon): 8094128 kB
Inactive(anon): 2896064 kB
Active(file): 910284 kB
Inactive(file): 656352 kB
Unevictable: 80 kB
Mlocked: 80 kB
SwapTotal: 17873388 kB
SwapFree: 17191328 kB
Dirty: 252 kB
Writeback: 0 kB
AnonPages: 7566736 kB
Mapped: 3692368 kB
Shmem: 3398784 kB
Slab: 278976 kB
SReclaimable: 125480 kB
SUnreclaim: 153496 kB
KernelStack: 23936 kB
PageTables: 73880 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 25997672 kB
Committed_AS: 24816804 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 3392 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 1059088 kB
DirectMap2M: 14493696 kB
DirectMap1G: 2097152 kB

3- Sử dụng vmstat để kiểm tra việc sử dụng bộ nhớ Linux

vmstat là một công cụ hữu ích khác để báo cáo thống kê bộ nhớ ảo. Thông tin được báo cáo bao gồm: quá trình, bộ nhớ, ánh xạ trang, khối I / O, bẫy, đĩa và thông tin đặc tính CPU. vmstat Không có quyền đặc biệt được yêu cầu, và nó có thể giúp chẩn đoán các tắc nghẽ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 682060 1769324 234188 4853500 0 3 25 91 31 16 34 13 52 0 0

Nếu bạn muốn hiểu chi tiết ý nghĩa của từng mục, hãy đọc mô tả bên dưới.

  • procs:quá trình
    • r: Số lượng quy trình có thể chạy (chạy hoặc chờ chạy)
    • b: Số lượng quá trình trong giấc ngủ không bị gián đoạn
  • memory: RAM
    • swpd: Dung lượng bộ nhớ ảo được sử dụng
    • free: Dung lượng bộ nhớ trống
    • buff: Dung lượng bộ nhớ đệm được sử dụng
    • cache: Dung lượng bộ nhớ được sử dụng làm bộ đệm
    • inact: Số lượng bộ nhớ không hoạt động (sử dụng -atùy chọn)
    • active: Hoạt động của lượng bộ nhớ (sử dụng -atùy chọn)
  • Swap: Hoán đổi phân vùng
    • si: Lượng bộ nhớ được hoán đổi từ đĩa mỗi giây
    • so: Lượng bộ nhớ được trao đổi vào đĩa mỗi giây
  • IO:đầu ra đầu vào
    • bi: Khối nhận được từ một thiết bị khối (khối / giây)
    • bo: Khối được gửi đến một thiết bị khối (khối / giây)
  • System: hệ thống
    • in: Số lượng ngắt mỗi giây, bao gồm cả đồng hồ.
    • cs: Số lượng công tắc ngữ cảnh mỗi giây.
  • CPU: Sau đây là tỷ lệ phần trăm của tổng thời gian CPU
    • us: Tỷ lệ thời gian dành cho mã không phải kernel (bao gồm thời gian của người dùng và thời gian lập lịch)
    • sy: Tỷ lệ thời gian dành cho mã hạt nhân (thời gian hệ thống)
    • id: Tỷ lệ thời gian nhàn rỗi. Trước Linux 2.5.41, bao gồm cả thời gian chờ I / O
    • wa: Tỷ lệ thời gian dành cho I / O chờ đợi. Trước Linux 2.5.41, được bao gồm trong thời gian rảnh
    • st: Tỷ lệ thời gian bị đánh cắp bởi máy ảo. Trước Linux 2.6.11, phần này được gọi là không xác định

Chạy lệnh sau để xem thông tin chi tiết.

# vmstat -s

 16248580 K total memory
 2210256 K used memory
 2311820 K active memory
 2153352 K inactive memory
 11368812 K free memory
 107584 K buffer memory
 2561928 K swap cache
 17873388 K total swap
 0 K used swap
 17873388 K free swap
 44309 non-nice user cpu ticks
 164 nice user cpu ticks
 14332 system cpu ticks
 382418 idle cpu ticks
 1248 IO-wait cpu ticks
 1407 IRQ cpu ticks
 2147 softirq cpu ticks
 0 stolen cpu ticks
 1022437 pages paged in
 260296 pages paged out
 0 pages swapped in
 0 pages swapped out
 1424838 interrupts
 4979524 CPU context switches
 1577163147 boot time
 3318 forks


4- Cách sử dụng lệnh ps_mem để kiểm tra việc sử dụng bộ nhớ Linux


ps_mem là một tập lệnh Python đơn giản để xem việc sử dụng bộ nhớ hiện tại. Công cụ có thể xác định mỗi bộ nhớ sử dụng bao nhiêu bộ nhớ (không phải mọi quy trình).

Công cụ sử dụng phương pháp sau để tính toán bộ nhớ được sử dụng bởi mỗi chương trình: tổng mức sử dụng = bộ nhớ riêng của quy trình chương trình + bộ nhớ được chia sẻ bởi quy trình chương trình.

Tính toán bộ nhớ chia sẻ là không đủ. Công cụ có thể tự động chọn phương thức chính xác nhất cho kernel đang chạy.

# ps_mem

 Private + Shared = RAM used Program
180.0 KiB + 30.0 KiB = 210.0 KiB xf86-video-intel-backlight-helper (2)
192.0 KiB + 66.0 KiB = 258.0 KiB cat (2)
312.0 KiB + 38.5 KiB = 350.5 KiB lvmetad
380.0 KiB + 25.5 KiB = 405.5 KiB crond
392.0 KiB + 32.5 KiB = 424.5 KiB rtkit-daemon
852.0 KiB + 117.0 KiB = 969.0 KiB gnome-session-ctl (2)
928.0 KiB + 56.5 KiB = 984.5 KiB gvfs-mtp-volume-monitor
 1.0 MiB + 42.5 KiB = 1.0 MiB dconf-service
 1.0 MiB + 106.5 KiB = 1.1 MiB gvfs-goa-volume-monitor
 1.0 MiB + 180.5 KiB = 1.2 MiB gvfsd
.
.
 5.3 MiB + 3.0 MiB = 8.3 MiB evolution-addressbook-factory
 8.5 MiB + 1.2 MiB = 9.7 MiB gnome-session-binary (4)
 7.5 MiB + 3.1 MiB = 10.5 MiB polkitd
 7.4 MiB + 3.3 MiB = 10.7 MiB pulseaudio (2)
 7.0 MiB + 7.0 MiB = 14.0 MiB msm_notifier
 12.7 MiB + 2.3 MiB = 15.0 MiB evolution-source-registry
 13.3 MiB + 2.5 MiB = 15.8 MiB gnome-terminal-server
 15.8 MiB + 1.0 MiB = 16.8 MiB tracker-miner-fs
 18.7 MiB + 1.8 MiB = 20.5 MiB python3.7
 16.6 MiB + 4.0 MiB = 20.5 MiB evolution-calendar-factory
 22.3 MiB + 753.0 KiB = 23.0 MiB gsd-keyboard (2)
 22.4 MiB + 832.0 KiB = 23.2 MiB gsd-wacom (2)
 20.8 MiB + 2.5 MiB = 23.3 MiB blueman-tray
 22.0 MiB + 1.8 MiB = 23.8 MiB blueman-applet
 23.1 MiB + 934.0 KiB = 24.0 MiB gsd-xsettings (2)
 23.7 MiB + 1.2 MiB = 24.9 MiB gsd-media-keys (2)
 23.4 MiB + 1.6 MiB = 25.0 MiB gsd-color (2)
 23.9 MiB + 1.2 MiB = 25.1 MiB gsd-power (2)
 16.5 MiB + 8.9 MiB = 25.4 MiB evolution-alarm-notify
 27.2 MiB + 2.0 MiB = 29.2 MiB systemd-journald
 28.7 MiB + 2.8 MiB = 31.5 MiB c
 29.6 MiB + 2.2 MiB = 31.8 MiB chrome-gnome-sh (2)
 43.9 MiB + 6.8 MiB = 50.7 MiB WebExtensions
 46.7 MiB + 6.7 MiB = 53.5 MiB goa-daemon
 86.5 MiB + 55.2 MiB = 141.7 MiB Xorg (2)
191.4 MiB + 24.1 MiB = 215.4 MiB notepadqq-bin
306.7 MiB + 29.0 MiB = 335.7 MiB gnome-shell (2)
601.6 MiB + 77.7 MiB = 679.2 MiB firefox
 1.0 GiB + 109.7 MiB = 1.1 GiB chrome (15)
 2.3 GiB + 123.1 MiB = 2.5 GiB Web Content (8)
----------------------------------
 5.6 GiB
==================================


5- Cách sử dụng lệnh smem để xem việc sử dụng bộ nhớ Linux


smem là một tool có thể cung cấp nhiều báo cáo sử dụng bộ nhớ cho các hệ thống Linux. 

  • Kích thước tập hợp tỷ lệ (PSS): số lượng thư viện và ứng dụng được sử dụng trong hệ thống bộ nhớ ảo.
  • Kích thước cài đặt duy nhất (USS): Nó báo cáo bộ nhớ không chia sẻ.
  • Kích thước cài đặt thường trú (RSS): bộ nhớ vật lý (thường được chia sẻ bởi nhiều quy trình), thường cao hơn mức sử dụng bộ nhớ.
# smem -tk

 PID User Command Swap USS PSS RSS
3383 daygeek cat 0 92.0K 123.0K 1.7M
3384 daygeek cat 0 100.0K 129.0K 1.7M
1177 daygeek /usr/lib/gnome-session-ctl 0 436.0K 476.0K 4.6M
1171 daygeek /usr/bin/dbus-daemon --conf 0 524.0K 629.0K 3.8M
1238 daygeek /usr/lib/xdg-permission-sto 0 592.0K 681.0K 5.9M
1350 daygeek /usr/lib/gsd-screensaver-pr 0 652.0K 701.0K 5.8M
1135 daygeek /usr/lib/gdm-x-session --ru 0 648.0K 723.0K 6.0M
.
.
1391 daygeek /usr/lib/evolution-data-ser 0 16.5M 25.2M 63.3M
1416 daygeek caffeine-ng 0 28.7M 31.4M 66.2M
4855 daygeek /opt/google/chrome/chrome - 0 38.3M 46.3M 120.6M
2174 daygeek /usr/lib/firefox/firefox -c 0 44.0M 50.7M 120.3M
1254 daygeek /usr/lib/goa-daemon 0 46.7M 53.3M 80.4M
3416 daygeek /opt/google/chrome/chrome - 0 44.7M 54.2M 103.3M
4782 daygeek /opt/google/chrome/chrome - 0 57.2M 65.8M 142.3M
1137 daygeek /usr/lib/Xorg vt2 -displayf 0 77.2M 129.6M 192.3M
3376 daygeek /opt/google/chrome/chrome 0 117.8M 131.0M 210.9M
4448 daygeek /usr/lib/firefox/firefox -c 0 124.4M 133.8M 224.1M
3558 daygeek /opt/google/chrome/chrome - 0 157.3M 165.7M 242.2M
2310 daygeek /usr/lib/firefox/firefox -c 0 159.6M 169.4M 259.6M
4331 daygeek /usr/lib/firefox/firefox -c 0 176.8M 186.2M 276.8M
4034 daygeek /opt/google/chrome/chrome - 0 179.3M 187.9M 264.6M
3911 daygeek /opt/google/chrome/chrome - 0 183.1M 191.8M 269.4M
3861 daygeek /opt/google/chrome/chrome - 0 199.8M 208.2M 285.2M
2746 daygeek /usr/bin/../lib/notepadqq/n 0 193.5M 217.5M 261.5M
1194 daygeek /usr/bin/gnome-shell 0 203.7M 219.0M 285.1M
2945 daygeek /usr/lib/firefox/firefox -c 0 294.5M 308.0M 410.2M
2786 daygeek /usr/lib/firefox/firefox -c 0 341.2M 354.3M 459.1M
4193 daygeek /usr/lib/firefox/firefox -c 0 417.4M 427.6M 519.3M
2651 daygeek /usr/lib/firefox/firefox -c 0 417.0M 430.1M 535.6M
2114 daygeek /usr/lib/firefox/firefox -c 0 430.6M 473.9M 610.9M
2039 daygeek /usr/lib/firefox/firefox -- 0 601.3M 677.5M 840.6M
-------------------------------------------------------------------------------
 90 1 0 4.8G 5.2G 8.0G


6- Cách sử dụng lệnh top để kiểm tra việc sử dụng bộ nhớ Linux


top command được sử dụng phổ biến nhất bởi quản trị viên hệ thống Linux để xem việc sử dụng tài nguyên của một quy trình.

Lệnh này sẽ hiển thị tổng dung lượng bộ nhớ trong hệ thống, dung lượng bộ nhớ hiện tại được sử dụng, dung lượng bộ nhớ trống và tổng dung lượng bộ nhớ được sử dụng bởi bộ đệm. Ngoài ra, lệnh top -b sẽ hiển thị tổng bộ nhớ không gian hoán đổi, mức sử dụng bộ nhớ không gian hoán đổi hiện tại, bộ nhớ không gian hoán đổi miễn phí và tổng bộ nhớ được sử dụng bởi bộ đệm.

# top -b | head -10

top - 11:04:39 up 40 min, 1 user, load average: 1.59, 1.42, 1.28
Tasks: 288 total, 2 running, 286 sleeping, 0 stopped, 0 zombie
%Cpu(s): 13.3 us, 1.5 sy, 0.0 ni, 84.4 id, 0.0 wa, 0.3 hi, 0.5 si, 0.0 st
KiB Mem : 16248572 total, 7755928 free, 4657736 used, 3834908 buff/cache
KiB Swap: 17873388 total, 17873388 free, 0 used. 9179772 avail Mem

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
 2114 daygeek 20 3182736 616624 328228 R 83.3 3.8 7:09.72 Web Content
 2039 daygeek 20 4437952 849616 261364 S 13.3 5.2 7:58.54 firefox
 1194 daygeek 20 4046856 291288 165460 S 4.2 1.8 1:57.68 gnome-shell
 4034 daygeek 20 808556 273244 88676 S 4.2 1.7 1:44.72 chrome
 2945 daygeek 20 3309832 416572 150112 S 3.3 2.6 4:04.60 Web Content
 1137 daygeek 20 564316 197292 183380 S 2.5 1.2 2:55.76 Xorg
 2651 daygeek 20 3098420 547260 275700 S 1.7 3.4 2:15.96 Web Content
 2786 daygeek 20 2957112 463912 240744 S 1.7 2.9 3:22.29 Web Content
 1 root 20 182756 10208 7760 S 0.8 0.1 0:04.51 systemd
 442 root -51 S 0.8 0:05.02 irq/141-iw+
 1426 daygeek 20 373660 48948 29820 S 0.8 0.3 0:03.55 python3
 2174 daygeek 20 2466680 122196 78604 S 0.8 0.8 0:17.75 WebExtensi+


7- Cách sử dụng lệnh htop để xem việc sử dụng bộ nhớ Linux


htop là trình xem quy trình hệ thống Linux / Unix tương tác. Đây là một ứng dụng chế độ văn bản và sử dụng nó đòi hỏi thư viện ncurses được phát triển bởi Hisham. Lệnh này và command top rất giống nhau, nhưng nó có thể cho phép bạn cuộn theo chiều dọc hoặc chiều ngang để bạn có thể thấy tất cả các quy trình trong hệ thống.


Lệnh htop có màu khác nhau. Ưu điểm bổ sung này rất hữu ích khi bạn theo dõi hiệu suất hệ thống. Ngoài ra, bạn có thể tự do thực hiện các nhiệm vụ liên quan đến quy trình, chẳng hạn như giết quá trình hoặc thay đổi mức độ ưu tiên của quy trình mà không yêu cầu số quy trình của nó (PID).


8- Cách sử dụng lệnh glances để xem việc sử dụng bộ nhớ Linux


Glances là một công cụ giám sát hệ thống đa nền tảng được viết bằng Python. Bạn có thể xem tất cả thông tin ở một nơi, chẳng hạn như: Sử dụng CPU, sử dụng bộ nhớ, quy trình đang chạy, giao diện mạng, I / O đĩa, RAID, cảm biến, thông tin hệ thống tệp, Docker, thông tin hệ thống, thời gian chạy, v.v.


Giải phóng RAM trên Linux

Reference: www.2daygeek.com/linux-comma

Có thể bạn đã bị missing