Nội dung bài viết
Video học lập trình mỗi ngày
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
commandvmstat
commandps_mem
commandsmem
commandtop
commandhtop
commandglances
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ìnhbuffers
: Dung lượng bộ nhớ dành cho kernel để ghi lại các yêu cầu hàng đợi quá trìnhcache
: Lưu trữ kích thước bộ đệm trang của các tệp được sử dụng gần đây trong RAMbuff/cache
: Tổng bộ nhớ được sử dụng bởi bộ đệm và bộ đệmavailable
: 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ìnhr
: 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
: RAMswpd
: Dung lượng bộ nhớ ảo được sử dụngfree
: Dung lượng bộ nhớ trốngbuff
: Dung lượng bộ nhớ đệm được sử dụngcache
: Dung lượng bộ nhớ được sử dụng làm bộ đệminact
: Số lượng bộ nhớ không hoạt động (sử dụng-a
tùy chọn)active
: Hoạt động của lượng bộ nhớ (sử dụng-a
tùy chọn)
Swap
: Hoán đổi phân vùngsi
: Lượng bộ nhớ được hoán đổi từ đĩa mỗi giâyso
: Lượng bộ nhớ được trao đổi vào đĩa mỗi giây
IO
:đầu ra đầu vàobi
: 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ốngin
: 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 CPUus
: 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 / Owa
: 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ảnhst
: 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.
Reference: www.2daygeek.com/linux-comma