Thursday, November 21, 2024

Đọc thông tin Memory trong Linux

-

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ệnh top để 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ím Shift + 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ệnh htop cũng giống như lệnh top, 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ím F6 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ái S 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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories