Trong hệ điều hành Linux, RAM (Random Access Memory) được sử dụng để lưu trữ các dữ liệu tạm thời của các ứng dụng và hệ thống. RAM là loại bộ nhớ truy cập ngẫu nhiên, cho phép các dữ liệu được truy cập và sử dụng một cách nhanh chóng bởi CPU và các thành phần khác trong hệ thống. Vì vậy, RAM là một thành phần quan trọng trong hệ thống máy tính, và nó có thể ảnh hưởng đến hiệu suất và tốc độ của hệ thống.
Xem thông tin phần cứng của RAM
Bạn có thể sử dụng lệnh sudo dmidecode --type 17
để xem thông tin về các slot RAM trên hệ thống của mình. Lệnh này sẽ hiển thị các thông tin như số lượng slot RAM, số lượng RAM hiện có trong mỗi slot, tốc độ RAM, loại RAM, vv.
$ dmidecode --type 17
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.2 present.
Handle 0x001F, DMI type 17, 84 bytes
Memory Device
Array Handle: 0x001D
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 32 GB
Form Factor: DIMM
Set: None
Locator: P1-DIMMA1
Bank Locator: P0_Node0_Channel0_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: Samsung
Serial Number: 39F0CFF2
Asset Tag: P1-DIMMA1_AssetTag (date:18/28)
Part Number: M393A4K40BB1-CRC
Rank: 2
Configured Memory Speed: 2400 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Memory Technology: DRAM
Memory Operating Mode Capability: Volatile memory
Firmware Version: 0000
Module Manufacturer ID: Bank 1, Hex 0xCE
Module Product ID: Unknown
Memory Subsystem Controller Manufacturer ID: Unknown
Memory Subsystem Controller Product ID: Unknown
Non-Volatile Size: None
Volatile Size: 32 GB
Cache Size: None
Logical Size: None
Handle 0x0021, DMI type 17, 84 bytes
Memory Device
Array Handle: 0x001D
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 32 GB
Form Factor: DIMM
Set: None
Locator: P1-DIMMB1
Bank Locator: P0_Node0_Channel1_Dimm0
Type: DDR4
Type Detail: Synchronous
Speed: 2400 MT/s
Manufacturer: Samsung
Serial Number: 39F0CFEA
Asset Tag: P1-DIMMB1_AssetTag (date:18/28)
Part Number: M393A4K40BB1-CRC
Rank: 2
Configured Memory Speed: 2400 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
Memory Technology: DRAM
Memory Operating Mode Capability: Volatile memory
Firmware Version: 0000
Module Manufacturer ID: Bank 1, Hex 0xCE
Module Product ID: Unknown
Memory Subsystem Controller Manufacturer ID: Unknown
Memory Subsystem Controller Product ID: Unknown
Non-Volatile Size: None
Volatile Size: 32 GB
Cache Size: None
Logical Size: None
Ngoài ra, bạn cũng có thể sử dụng các công cụ khác như lshw
, hwinfo
, hoặc inxi
để xem thông tin về RAM và các phần cứng khác trên hệ thống của mình.
$ lshw -c memory
*-firmware
description: BIOS
vendor: American Megatrends Inc.
physical id: 0
version: 3.0b
date: 03/04/2019
size: 64KiB
capacity: 32MiB
capabilities: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int14serial int17printer acpi usb biosbootspecification uefi
*-memory
description: System Memory
physical id: 1
slot: System board or motherboard
size: 256GiB
capacity: 2304GiB
capabilities: ecc
configuration: errordetection=ecc
*-bank:0
description: DIMM DDR4 Synchronous 2400 MHz (0.4 ns)
product: M393A4K40BB1-CRC
vendor: Samsung
physical id: 0
serial: 39F0CFF2
slot: P1-DIMMA1
size: 32GiB
width: 64 bits
clock: 2400MHz (0.4ns)
*-bank:1
description: DIMM DDR4 Synchronous 2400 MHz (0.4 ns)
product: M393A4K40BB1-CRC
vendor: Samsung
physical id: 1
serial: 39F0CFEA
slot: P1-DIMMB1
size: 32GiB
width: 64 bits
clock: 2400MHz (0.4ns)
Sử dụng top hoặc htop để đọc thông tin RAM
Để xem ứng dụng sử dụng RAM nhiều nhất trong Linux terminal, bạn có thể sử dụng lệnh top
hoặc htop
. Hai lệnh này đều cho phép bạn theo dõi tất cả các tiến trình đang chạy trên hệ thống và hiển thị thông tin về các tiến trình đó, bao gồm cả lượng RAM mà chúng đang sử dụng.
- Lệnh
top
: Bạn có thể sử dụng lệnhtop
để xem thông tin chi tiết về các tiến trình đang chạy trên hệ thống. Để sắp xếp các tiến trình theo lượng RAM sử dụng, bạn có thể nhấn phímShift
+M
. Sau đó, các tiến trình sẽ được sắp xếp theo thứ tự từ lớn đến nhỏ về lượng RAM mà chúng sử dụng. - Lệnh
htop
: Lệnhhtop
cũng giống như lệnhtop
, nhưng với giao diện đồ họa và cho phép bạn tương tác với các tiến trình trên hệ thống một cách dễ dàng hơn. Để sắp xếp các tiến trình theo lượng RAM sử dụng, bạn có thể nhấn phímF6
và sau đó chọn “MEM%” để sắp xếp các tiến trình theo thứ tự từ lớn đến nhỏ về lượng RAM mà chúng sử dụng.
Thông thường, các tiến trình sử dụng nhiều RAM nhất thường là các tiến trình liên quan đến ứng dụng đang hoạt động như trình duyệt web hoặc các ứng dụng đồ họa. Tuy nhiên, nếu bạn phát hiện một tiến trình sử dụng nhiều RAM hơn những gì bạn dự định, bạn có thể tiến hành tìm hiểu và khắc phục lỗi.
Ví dụ cho sử dụng lệnh top -c
.
top - 08:39:49 up 152 days, 10:33, 1 user, load average: 0.24, 0.44, 0.36
Tasks: 312 total, 1 running, 195 sleeping, 0 stopped, 4 zombie
top - 08:42:34 up 152 days, 10:36, 1 user, load average: 0.70, 0.59, 0.43
Tasks: 314 total, 1 running, 197 sleeping, 0 stopped, 4 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16399552 total, 575220 free, 2667052 used, 13157280 buff/cache
KiB Swap: 4194300 total, 4191976 free, 2324 used. 13343448 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25526 proxy 20 0 495924 366000 9884 S 0.0 2.2 60:28.80 (squid-1) -YC -f /etc/squid/squid.conf
4952 999 20 0 2461092 330984 25420 S 0.0 2.0 20:50.77 mariadbd
111981 root 19 -1 380400 264604 252752 S 0.0 1.6 4:01.10 /lib/systemd/systemd-journald
119838 www-data 20 0 485948 228640 70924 S 0.0 1.4 1:30.57 apache2 -DFOREGROUND
120278 www-data 20 0 476316 217400 70088 S 0.0 1.3 1:09.77 apache2 -DFOREGROUND
129377 www-data 20 0 470988 217192 75212 S 0.0 1.3 1:25.60 apache2 -DFOREGROUND
119850 www-data 20 0 465868 209116 71668 S 0.0 1.3 0:59.43 apache2 -DFOREGROUND
12001 www-data 20 0 447568 191268 72632 S 0.0 1.2 6:32.85 apache2 -DFOREGROUND
115371 www-data 20 0 445536 188948 71872 S 0.0 1.2 1:31.77 apache2 -DFOREGROUND
115370 www-data 20 0 443988 186900 71436 S 0.0 1.1 2:13.22 apache2 -DFOREGROUND
122636 www-data 20 0 372292 141048 23664 S 0.0 0.9 0:06.32 apache2 -DFOREGROUND
41464 472 20 0 815120 114860 62264 S 0.0 0.7 220:28.01 grafana-server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/+
41090 nobody 20 0 1313176 106960 53116 S 0.0 0.7 355:44.40 /bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometh+
22395 root 20 0 2593544 79512 49832 S 0.0 0.5 187:30.36 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
122646 www-data 20 0 282976 71192 14000 S 0.0 0.4 0:00.66 apache2 -DFOREGROUND
54943 bind 20 0 750432 58888 8100 S 0.0 0.4 5:59.14 /usr/sbin/named -f -u bind
51022 root 20 0 775176 50616 33584 S 0.3 0.3 0:53.48 /usr/bin/coredns -dns.port=53
2886 root 20 0 2020024 44448 27316 S 0.0 0.3 212:58.87 /usr/bin/containerd
40963 nobody 20 0 729892 40708 19944 S 0.0 0.2 276:41.14 /bin/alertmanager --cluster.advertise-address=0.0.0.0:9093 --config.file=/etc/alertmanager/config.yml --storage.path=/alertmanager
40582 root 20 0 233348 36804 29360 S 0.0 0.2 1:00.63 apache2 -DFOREGROUND
66105 root 20 0 41848 32620 13812 S 0.0 0.2 17:14.02 python3 /home/monitor/prometheus/pustgateway/run_project.py
40831 nobody 20 0 726980 28444 11264 S 0.0 0.2 746:29.82 /bin/pushgateway
1172 root 20 0 185948 19408 11508 S 0.0 0.1 0:00.04 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
1025 root 20 0 169780 17568 9160 S 0.0 0.1 0:02.84 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
41104 root 20 0 724620 15008 9832 S 0.0 0.1 14:53.08 /bin/snmp_exporter --config.file=/etc/snmp_exporter/snmp.yml
40887 root 20 0 712196 10444 8052 S 0.0 0.1 27:09.83 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 8dd8ca53f50d3610d3e057c5edfbd268bec20c6ea5259e97c7c48be84f812c68 -address /run/containerd/containerd.sock
41439 root 20 0 712452 10280 7884 S 0.0 0.1 20:45.43 /usr/bin/containerd-shim-runc-v2 -namespace moby -id ffe83d0a3c08375cd1484dd855d1350d366a32af9dbac044210a4bd9758bcf95 -address /run/containerd/containerd.sock
40788 root 20 0 712452 10244 7884 S 0.0 0.1 27:58.44 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 88e872ee59b18c1d32722188e2b6a95541c16da6ceb15df9446bdd6b8c4f5737 -address /run/containerd/containerd.sock
109598 root 20 0 712196 10084 7500 S 0.0 0.1 1:56.87 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 30b4497c7cb65b53439ffeeb0d150031406e6195d2991853bcd4eace3095f9b1 -address /run/containerd/containerd.sock
50741 root 20 0 712452 10032 7680 S 0.0 0.1 0:05.22 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 61d3ff4427a22de64dec7922b836dd33bc5a914237f2d6a2d6aaae61a7d63917 -address /run/containerd/containerd.sock
4867 root 20 0 712196 10028 7500 S 0.0 0.1 4:33.09 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 46bedda669a63d014c86b08a813bd58d711a86f0e665ccaeca8fe3cbf967a3fd -address /run/containerd/containerd.sock
41004 root 20 0 712196 9928 7564 S 0.0 0.1 22:13.66 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 041803678f3210aa201c579e00c667b209164edd60bcab2be58e1bf96973677f -address /run/containerd/containerd.sock
65993 root 20 0 712196 9928 7372 S 0.0 0.1 20:44.56 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 816c499a8eef83b149033879b54d0d50f9ed3636f1888e32755d0f94685c90fc -address /run/containerd/containerd.sock
855 root 20 0 89868 9896 8620 S 0.0 0.1 0:00.00 /usr/bin/VGAuthService
40992 root 20 0 712452 9868 7680 S 0.0 0.1 23:22.54 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 110062ae2b8fd2ee377eeb9fc4ff4c6a0b5b3a603d91a594e0bb0f244d755e14 -address /run/containerd/containerd.sock
40549 root 20 0 712452 9392 7168 S 0.0 0.1 4:01.57 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 07e58d42507df56efc6751f200c4f6a940465d1ae8c8fee4a12dc15abed95bb8 -address /run/containerd/containerd.sock
1 root 20 0 225576 8704 6028 S 0.0 0.1 2:57.65 /lib/systemd/systemd --system --deserialize 38
122254 root 20 0 107988 7248 6240 S 0.0 0.0 0:00.04 sshd: root@pts/27
109625 root 20 0 9316 7160 6076 S 0.0 0.0 0:00.06 nginx: master process nginx -g daemon off;
109724 www-data 20 0 10488 7116 4844 S 0.0 0.0 0:08.10 nginx: worker process
111942 systemd+ 20 0 72216 7108 4800 S 0.0 0.0 2:06.81 /lib/systemd/systemd-resolved
29243 root 20 0 76888 7052 5720 S 0.0 0.0 0:00.80 /lib/systemd/systemd --user
857 root 0 -20 143376 7020 5876 S 0.0 0.0 212:27.84 /usr/bin/vmtoolsd
109716 www-data 20 0 10220 6848 4844 S 0.0 0.0 0:08.73 nginx: worker process
997 root 20 0 286256 6720 5820 S 0.0 0.0 4:47.88 /usr/lib/accountsservice/accounts-daemon
109720 www-data 20 0 10100 6588 4844 S 0.0 0.0 0:08.31 nginx: worker process
109722 www-data 20 0 10224 6588 4844 S 0.0 0.0 0:08.11 nginx: worker process
109718 www-data 20 0 10116 6584 4844 S 0.0 0.0 0:08.92 nginx: worker process
109719 www-data 20 0 10116 6584 4844 S 0.0 0.0 0:08.11 nginx: worker process
109715 www-data 20 0 10124 6576 4844 S 0.0 0.0 0:08.96 nginx: worker process
109721 www-data 20 0 10148 6356 4588 S 0.0 0.0 0:08.41 nginx: worker process
1167 root 20 0 288884 6152 5360 S 0.0 0.0 1:52.53 /usr/lib/policykit-1/polkitd --no-debug
1019 root 20 0 70868 6068 4980 S 0.0 0.0 0:25.01 /lib/systemd/systemd-logind
Ví dụ sử dụng lệnh htop
.
1 [ 0.0%] 5 [ 0.0%]
2 [ 0.0%] 6 [ 0.0%]
3 [| 0.7%] 7 [ 0.0%]
4 [||| 2.0%] 8 [ 0.0%]
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||2.23G/15.6G] Tasks: 107, 446 thr; 1 running
Swp[| 2.27M/4.00G] Load average: 0.08 0.16 0.23
Uptime: 152 days(!), 11:03:00
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
126337 root 20 0 33688 6232 3916 R 1.3 0.0 0:00.13 htop
41313 nobody 20 0 712M 40940 19944 S 0.7 0.2 51:58.54 /bin/alertmanager --cluster.advertise-address=0.0.0.0:9093 --config.file=/etc/alertmanager/config.yml --storage.path=/alertmanager
51794 nobody 20 0 712M 40940 19944 S 0.0 0.2 20:00.96 /bin/alertmanager --cluster.advertise-address=0.0.0.0:9093 --config.file=/etc/alertmanager/config.yml --storage.path=/alertmanager
57192 nobody 20 0 709M 27388 11264 S 0.0 0.2 1h03:15 /bin/pushgateway
40831 nobody 20 0 709M 27388 11264 S 0.0 0.2 12h26:34 /bin/pushgateway
51022 root 20 0 757M 50032 33584 S 0.0 0.3 0:55.99 /usr/bin/coredns -dns.port=53
41670 nobody 20 0 709M 27388 11264 S 0.0 0.2 1h02:30 /bin/pushgateway
41395 nobody 20 0 1282M 106M 53116 S 0.0 0.7 35:53.71 /bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/con
41547 472 20 0 796M 112M 62264 S 0.0 0.7 22:27.42 grafana-server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana
40963 nobody 20 0 712M 40940 19944 S 0.0 0.2 4h36:43 /bin/alertmanager --cluster.advertise-address=0.0.0.0:9093 --config.file=/etc/alertmanager/config.yml --storage.path=/alertmanager
41090 nobody 20 0 1282M 106M 53116 S 0.0 0.7 5h55:47 /bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/con
41464 472 20 0 796M 112M 62264 S 0.0 0.7 3h40:29 grafana-server --homepath=/usr/share/grafana --config=/etc/grafana/grafana.ini --packaging=docker cfg:default.log.mode=console cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana
51033 root 20 0 757M 50032 33584 S 0.0 0.3 0:05.18 /usr/bin/coredns -dns.port=53
1 root 20 0 220M 8704 6028 S 0.0 0.1 2:57.67 /lib/systemd/systemd --system --deserialize 38
589 root 20 0 103M 1904 1664 S 0.0 0.0 0:00.25 /sbin/lvmetad -f
855 root 20 0 89868 9896 8620 S 0.0 0.1 0:00.00 /usr/bin/VGAuthService
871 root 0 -20 140M 7020 5876 S 0.0 0.0 5:05.86 /usr/bin/vmtoolsd
857 root 0 -20 140M 7020 5876 S 0.0 0.0 3h32:29 /usr/bin/vmtoolsd
992 daemon 20 0 28336 2156 1944 S 0.0 0.0 0:00.20 /usr/sbin/atd -f
1048 root 20 0 279M 6720 5820 S 0.0 0.0 4:47.21 /usr/lib/accountsservice/accounts-daemon
1123 root 20 0 279M 6720 5820 S 0.0 0.0 0:00.32 /usr/lib/accountsservice/accounts-daemon
997 root 20 0 279M 6720 5820 S 0.0 0.0 4:47.91 /usr/lib/accountsservice/accounts-daemon
1127 root 20 0 446M 2764 1412 S 0.0 0.0 0:16.98 /usr/bin/lxcfs /var/lib/lxcfs/
1128 root 20 0 446M 2764 1412 S 0.0 0.0 0:17.56 /usr/bin/lxcfs /var/lib/lxcfs/
11815 root 20 0 446M 2764 1412 S 0.0 0.0 0:16.91 /usr/bin/lxcfs /var/lib/lxcfs/
11818 root 20 0 446M 2764 1412 S 0.0 0.0 0:17.79 /usr/bin/lxcfs /var/lib/lxcfs/
11500 root 20 0 446M 2764 1412 S 0.0 0.0 0:16.18 /usr/bin/lxcfs /var/lib/lxcfs/
75901 root 20 0 446M 2764 1412 S 0.0 0.0 0:14.01 /usr/bin/lxcfs /var/lib/lxcfs/
1003 root 20 0 446M 2764 1412 S 0.0 0.0 1:39.48 /usr/bin/lxcfs /var/lib/lxcfs/
1057 root 20 0 107M 3472 3084 S 0.0 0.0 0:00.00 /usr/sbin/irqbalance --foreground
1004 root 20 0 107M 3472 3084 S 0.0 0.0 19:53.17 /usr/sbin/irqbalance --foreground
1019 root 20 0 70868 6068 4980 S 0.0 0.0 0:25.01 /lib/systemd/systemd-logind
1308 root 20 0 165M 17568 9160 S 0.0 0.1 0:00.00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
1025 root 20 0 165M 17568 9160 S 0.0 0.1 0:02.84 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
1034 messagebu 20 0 50316 4748 3780 S 0.0 0.0 3:44.50 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
1227 root 20 0 282M 6152 5360 S 0.0 0.0 0:00.00 /usr/lib/policykit-1/polkitd --no-debug
1229 root 20 0 282M 6152 5360 S 0.0 0.0 1:28.05 /usr/lib/policykit-1/polkitd --no-debug
1167 root 20 0 282M 6152 5360 S 0.0 0.0 1:52.53 /usr/lib/policykit-1/polkitd --no-debug
1289 root 20 0 181M 19408 11508 S 0.0 0.1 0:00.00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
1172 root 20 0 181M 19408 11508 S 0.0 0.1 0:00.04 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
2893 root 20 0 1972M 44448 27316 S 0.0 0.3 57:45.90 /usr/bin/containerd
2894 root 20 0 1972M 44448 27316 S 0.0 0.3 0:03.80 /usr/bin/containerd
2896 root 20 0 1972M 44448 27316 S 0.0 0.3 15:46.27 /usr/bin/containerd
2897 root 20 0 1972M 44448 27316 S 0.0 0.3 0:05.22 /usr/bin/containerd
2898 root 20 0 1972M 44448 27316 S 0.0 0.3 0:00.00 /usr/bin/containerd
2902 root 20 0 1972M 44448 27316 S 0.0 0.3 14:45.74 /usr/bin/containerd
2903 root 20 0 1972M 44448 27316 S 0.0 0.3 15:29.62 /usr/bin/containerd
2904 root 20 0 1972M 44448 27316 S 0.0 0.3 8:16.30 /usr/bin/containerd
2905 root 20 0 1972M 44448 27316 S 0.0 0.3 0:00.00 /usr/bin/containerd
Nếu máy bạn chưa cài htop, bạn có thể cài đặt nó bằng lệnh dưới.
sudo apt install htop
sudo apt-get install htop
Cách tính toán số lượng RAM đang sử dụng trong tiến trình.
Bước 1: Xác định phần trăm RAM xử lý của tiến trình.
Chúng ta sẽ phân tích 1 ứng dụng bất kỳ, ví dụ của mình là Squid như dưới.
25526 proxy 20 0 495924 366000 9884 S 0.0 2.2 60:28.79 (squid-1) -YC -f /etc/squid/squid.conf
Giá trị này đại diện cho thông tin về một tiến trình trên hệ thống Linux và được hiển thị trong đầu ra của lệnh top
hoặc htop
. Dưới đây là giải thích chi tiết cho từng phần trong giá trị này:
25526
: Đây là ID của tiến trình. Mỗi tiến trình trên hệ thống Linux sẽ có một ID riêng để xác định nó.proxy
: Đây là tên người dùng mà tiến trình đang chạy. Tên này cho biết tiến trình này được chạy dưới quyền của người dùng nào trên hệ thống.20
: Đây là mức độ ưu tiên của tiến trình. Mức độ ưu tiên càng cao thì tiến trình sẽ được ưu tiên hơn trong việc sử dụng các tài nguyên của hệ thống.0
: Đây là ID của CPU mà tiến trình đang chạy trên nó. Giá trị này sẽ thay đổi nếu tiến trình được chuyển sang CPU khác.495924
: Đây là kích thước bộ nhớ ảo (Virtual Memory) mà tiến trình đang sử dụng. Bộ nhớ ảo bao gồm cả bộ nhớ vật lý và bộ nhớ swap.366000
: Đây là kích thước bộ nhớ vật lý (Resident Set Size – RSS) mà tiến trình đang sử dụng. RSS là lượng bộ nhớ thực sự được sử dụng bởi tiến trình, bao gồm cả các trang được load vào bộ nhớ vật lý.9884
: Đây là PID (Parent Process ID) của tiến trình cha của tiến trình hiện tại.S
: Đây là trạng thái của tiến trình. Trạng tháiS
nghĩa là tiến trình đang chạy.0.0
: Đây là tỷ lệ sử dụng CPU hiện tại của tiến trình. Trong trường hợp này, tiến trình không sử dụng CPU.2.2
: Đây là tỷ lệ sử dụng bộ nhớ hiện tại của tiến trình, tính bằng phần trăm.60:28.79
: Đây là thời gian hoạt động của tiến trình, được tính bằng đơn vị phút:giây.(squid-1) -YC -f /etc/squid/squid.conf
: Đây là tên và các tham số của tiến trình. Trong trường hợp này, tiến trình đang chạy là Squid, một ứng dụng Proxy Server
Như vậy tiến trình Squid đang sử dụng 2% RAM.
Bước 2: Xác định tổng số RAM bạn đang có.
Bạn có thể xem tổng dung lượng Ram của bạn hiện có bằng lệnh free -h
. Hiện tại máy chủ của mình được cài đặt với 16GB RAM nhưng khi bạn kiểm tra dung lượng RAM sử dụng trên máy ảo bằng lệnh free -h
nó chỉ hiển thị 15GB RAM vì lệnh này hiển thị số liệu tương đối và không chính xác 100%. Có một số lượng nhỏ RAM bị chiếm dụng bởi các tiến trình hệ thống khác nhưng không được hiển thị trong báo cáo free -h
.
Ngoài ra, một phần của RAM cũng có thể bị dành riêng để sử dụng cho các phần cứng khác như card đồ họa tích hợp. Vì vậy, một phần của RAM sẽ không được sử dụng cho mục đích thông thường.
$ free -h
total used free shared buff/cache available
Mem: 15G 2.4G 709M 50M 12G 12G
Swap: 4.0G 2.3M 4.0G
Thông số được hiển thị trong báo cáo free -h
cho thấy tình trạng sử dụng bộ nhớ trên hệ thống của bạn:
total
: Tổng dung lượng RAM có sẵn trên hệ thống của bạn. Trong trường hợp này, tổng dung lượng RAM là 15GB.used
: Dung lượng RAM đang được sử dụng bởi các tiến trình trên hệ thống. Trong trường hợp này, có khoảng 2.4GB RAM đang được sử dụng.free
: Dung lượng RAM còn trống và có thể sử dụng bởi các tiến trình. Trong trường hợp này, có khoảng 709MB RAM còn trống.shared
: Dung lượng RAM được chia sẻ giữa các tiến trình trên hệ thống. Trong trường hợp này, có khoảng 50MB RAM được chia sẻ.buff/cache
: Dung lượng RAM đang được sử dụng để lưu trữ bộ đệm và dữ liệu tạm thời của các tiến trình. Trong trường hợp này, có khoảng 12GB RAM đang được sử dụng cho mục đích này.available
: Dung lượng RAM khả dụng cho các tiến trình mới. Trong trường hợp này, có khoảng 12GB RAM có thể sử dụng.
Ngoài ra, báo cáo cũng hiển thị thông tin về Swap – phân vùng trao đổi trên hệ thống của bạn:
Swap total
: Tổng dung lượng phân vùng trao đổi trên hệ thống của bạn. Trong trường hợp này, tổng dung lượng Swap là 4GB.Swap used
: Dung lượng phân vùng trao đổi đang được sử dụng bởi hệ thống. Trong trường hợp này, chỉ có khoảng 2.3MB phân vùng trao đổi được sử dụng.Swap free
: Dung lượng phân vùng trao đổi còn trống. Trong trường hợp này, có khoảng 4GB phân vùng trao đổi còn trống.
Khi tính toán số lượng RAM sử dụng, chúng ta nên sử dụng giá trị được hiển thị trong báo cáo free -h
, tức là 15GB RAM. Việc này sẽ giúp tính toán chính xác hơn vì đó là số lượng RAM thực tế mà hệ thống đang sử dụng và quản lý được.
Nếu sử dụng giá trị 16GB RAM, có thể sẽ dẫn đến sai sót trong tính toán và dẫn đến khó khăn trong việc đánh giá hiệu suất và tối ưu hóa sử dụng RAM trên hệ thống của bạn.
Như vậy số lượng RAM hiện có của mình là 15GB.
Bước 3: Cách ính số RAM đang sử dụng của tiến trình.
Như vậy nếu tổng dung lượng RAM của bạn là 15GB và một ứng dụng đang sử dụng 2.2% của tổng dung lượng RAM này, thì ứng dụng đó đang sử dụng khoảng (2.2/100)*15GB = 0.33GB RAM.
Để tính toán 0.352GB thành MB, chúng ta có thể nhân giá trị đó với 1024, vì một GB bằng 1024 MB. Vậy:
0.33 x 1024 MB = 337,92MB
Tuy nhiên, khi làm tròn số, chúng ta có thể xem xét giá trị này là khoảng 338MB.