kernel-dynamic-memory
nocache very high
环境
内存占用过高,怀疑有10 GB内存丢失。
1 2 [root@gz03-SDK-server-10e50e63e22 secure] Linux gz03-SDK-server-10e50e63e22 3.10.0-957.el7.x86_64
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@gz03-SDK-server-10e50e63e22 secure] NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
根因定位
free -h
1 2 3 4 [root@gz03-SDK-server-10e50e63e22 secure] total used free shared buff/cache available Mem: 31G 23G 5.3G 1.0G 2.0G 5.8G Swap: 0B 0B 0B
top
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 [root@gz03-SDK-server-10e50e63e22 secure] top - 15:16:17 up 240 days, 16:59, 1 user, load average: 0.00, 0.05, 0.05 Tasks: 422 total, 1 running, 421 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 32761856 total, 5595952 free, 25024292 used, 2141612 buff/cache KiB Swap: 0 total, 0 free, 0 used. 6071504 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 1080916 889928 1736 S 0.0 2.7 215:42.26 systemd 88707 root 20 0 3717704 387888 6328 S 0.0 1.2 0:59.11 uwsgi 88698 root 20 0 3739964 169808 6316 S 0.0 0.5 0:27.72 uwsgi 264328 root 20 0 755228 161684 3000 S 3.0 0.5 1999:43 titanagent 88697 root 20 0 3713292 140496 6312 S 0.0 0.4 0:20.30 uwsgi 88699 root 20 0 3712568 132564 6236 S 0.0 0.4 0:09.40 uwsgi 427892 root 20 0 3714128 90012 6324 S 0.0 0.3 0:29.36 uwsgi 432638 root 20 0 3712864 75784 6316 S 0.0 0.2 0:32.84 uwsgi 430059 root 20 0 3712328 75384 6312 S 0.0 0.2 0:33.01 uwsgi 442099 root 20 0 3713412 75236 6316 S 0.0 0.2 0:33.49 uwsgi 431569 root 20 0 3712448 75024 6324 S 0.0 0.2 0:31.07 uwsgi 435775 root 20 0 3712332 74780 6324 S 0.0 0.2 0:32.13 uwsgi 450706 root 20 0 3712448 74568 6316 S 0.0 0.2 0:26.77 uwsgi 426368 root 20 0 3712340 74556 6324 S 0.0 0.2 0:25.44 uwsgi 429462 root 20 0 3712912 74496 6324 S 0.0 0.2 0:31.80 uwsgi 427636 root 20 0 3712352 74488 6324 S 0.0 0.2 0:27.87 uwsgi 428704 root 20 0 3713132 74264 6304 S 0.0 0.2 0:30.53 uwsgi 424777 root 20 0 3712644 73920 6324 S 0.0 0.2 0:22.61 uwsgi 426223 root 20 0 3711940 73060 6324 S 0.0 0.2 0:24.35 uwsgi 423904 root 20 0 3712632 72284 6324 S 0.0 0.2 0:22.62 uwsgi 11945 root 20 0 913036 50804 8312 S 0.0 0.2 1848:42 telegraf 40299 root 20 0 2452284 38236 7076 S 0.0 0.1 20:36.14 dockerd 84662 root 20 0 55092 36380 9660 S 0.0 0.1 0:46.21 uwsgi 87040 998 20 0 39528 29124 752 S 0.0 0.1 1:54.56 nginx 87042 998 20 0 39404 28788 668 S 0.0 0.1 0:02.01 nginx 87048 998 20 0 39404 28788 668 S 0.0 0.1 0:10.02 nginx 87053 998 20 0 39404 28788 668 S 0.0 0.1 0:01.92 nginx 87060 998 20 0 39404 28788 668 S 0.0 0.1 0:16.18 nginx 87062 998 20 0 39404 28788 668 S 0.0 0.1 0:17.94 nginx 87067 998 20 0 39404 28304 308 S 0.0 0.1 0:01.96 nginx 87072 998 20 0 39404 28304 308 S 0.0 0.1 0:11.70 nginx 3689400 nginx 20 0 75060 27852 240 S 0.0 0.1 7:33.00 nginx 3689401 nginx 20 0 75060 27844 232 S 0.0 0.1 7:27.37 nginx 30084 root 20 0 2792044 26672 4176 S 0.0 0.1 36:55.66 containerd 5677 root 20 0 55848 18380 17992 S 0.0 0.1 30:51.40 systemd-journal 3402461 root 20 0 787500 14000 11848 S 0.0 0.0 3:02.01 rsyslogd 83054 root 20 0 38688 13932 12956 S 0.0 0.0 0:05.77 systemd-journal 11944 root 20 0 717708 11980 3964 S 0.0 0.0 63:21.16 eAgent 11950 root 20 0 573816 11776 620 S 0.0 0.0 64:48.91 tuned 90821 root 20 0 719620 11488 3828 S 0.0 0.0 57:09.81 vnet-proxy 11942 root 20 0 728600 9628 2804 S 0.0 0.0 29:47.50 monitor_exporte 10934 polkitd 20 0 612472 8780 1004 S 0.0 0.0 8:19.54 polkitd 82993 root 20 0 23052 7224 4988 S 0.0 0.0 0:06.80 systemd 67000 haproxy 20 0 736924 7216 128 S 0.3 0.0 619:39.23 haproxy 82972 root 20 0 712376 7124 4468 S 0.0 0.0 0:35.95 containerd-shim 83662 root 20 0 30060 4956 3352 S 0.0 0.0 0:00.68 systemd-udevd 496355 root 20 0 115772 4672 3616 S 0.0 0.0 0:00.00 sshd 83695 systemd+ 20 0 18908 4400 3472 S 0.0 0.0 0:00.23 systemd-network 11094 root 20 0 271792 4320 1200 S 0.0 0.0 377:14.87 vmtoolsd 496387 root 20 0 218212 4196 3140 S 0.0 0.0 0:00.00 sudo
smem -wk
1 2 3 4 5 6 7 [root@gz03-SDK-server-10e50e63e22 secure] Area Used Cache Noncache firmware/hardware 0 0 0 kernel image 0 0 0 kernel dynamic memory 22.6G 1.7G 21.0G userspace memory 3.1G 99.8M 3.0G free memory 5.5G 5.5G 0
smem -wk
是一个用于查看系统内存使用情况的命令,输出结果概要如下:
各区域内存分布 :
kernel dynamic memory
:内核动态内存占用
22.6G (缓存 1.7G + 非缓存 21.0G)
userspace memory
:用户空间程序占用
3.1G (缓存 99.8M + 非缓存 3.0G)
free memory
:剩余可用内存
5.5G (全部为缓存)
关键指标 :
总内存 ≈ 22.6G + 3.1G + 5.5G =
31.2G (假设为32G物理内存)
内核占用较高 (21G非缓存),可能处理大量内核态任务。
用户空间内存 较少,系统可能主要运行内核服务。
选项作用 :
-w
:显示更宽的输出格式(含完整分类)。
-k
:显示带单位的缩写后缀(例如 KB、MB 等)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 [root@gz03-SDK-server-10e50e63e22 secure] PID User Command Swap USS PSS RSS 1 root /usr/lib/systemd/systemd -- 0 868.5M 868.6M 869.1M 88707 root /bin/uwsgi --ini /opt/sdk_p 0 365.8M 366.6M 381.9M 88698 root /bin/uwsgi --ini /opt/sdk_p 0 155.2M 156.0M 171.3M 264328 root ./titanagent -d -b /etc/tit 0 158.5M 158.6M 159.3M 88697 root /bin/uwsgi --ini /opt/sdk_p 0 127.3M 128.1M 143.3M 88699 root /bin/uwsgi --ini /opt/sdk_p 0 119.4M 120.3M 135.6M 427892 root /bin/uwsgi --ini /opt/sdk_p 0 78.0M 78.8M 94.1M 442099 root /bin/uwsgi --ini /opt/sdk_p 0 63.6M 64.4M 79.7M 432638 root /bin/uwsgi --ini /opt/sdk_p 0 63.5M 64.3M 79.5M 430059 root /bin/uwsgi --ini /opt/sdk_p 0 63.3M 64.1M 79.3M 431569 root /bin/uwsgi --ini /opt/sdk_p 0 63.1M 63.9M 79.2M 428704 root /bin/uwsgi --ini /opt/sdk_p 0 63.0M 63.8M 79.0M 429462 root /bin/uwsgi --ini /opt/sdk_p 0 62.8M 63.6M 78.8M 427636 root /bin/uwsgi --ini /opt/sdk_p 0 62.7M 63.5M 78.7M 426368 root /bin/uwsgi --ini /opt/sdk_p 0 62.6M 63.4M 78.7M 435775 root /bin/uwsgi --ini /opt/sdk_p 0 62.2M 63.0M 78.3M 450706 root /bin/uwsgi --ini /opt/sdk_p 0 62.0M 62.8M 78.1M 424777 root /bin/uwsgi --ini /opt/sdk_p 0 61.7M 62.5M 77.8M 426223 root /bin/uwsgi --ini /opt/sdk_p 0 61.3M 62.1M 77.3M 423904 root /bin/uwsgi --ini /opt/sdk_p 0 61.1M 61.9M 77.2M 11945 root /opt/app/telegraf/telegraf 0 52.9M 52.9M 52.9M 40299 root /usr/bin/dockerd -H fd:// - 0 39.7M 39.7M 39.7M 84662 root /bin/uwsgi --ini /opt/sdk_p 0 19.8M 21.4M 35.5M 87040 998 nginx: worker proces 0 26.9M 27.1M 28.4M 87060 998 nginx: worker proces 0 26.7M 26.9M 28.2M 87062 998 nginx: worker proces 0 26.7M 26.9M 28.2M 87053 998 nginx: worker proces 0 26.7M 26.8M 28.2M 87048 998 nginx: worker proces 0 26.7M 26.8M 28.2M 87042 998 nginx: worker proces 0 26.7M 26.8M 28.2M 87067 998 nginx: worker proces 0 26.6M 26.7M 27.9M 87072 998 nginx: worker proces 0 26.6M 26.7M 27.9M 30084 root /usr/bin/containerd 0 27.4M 27.4M 27.4M 3689401 nginx nginx: worker proces 0 26.2M 26.5M 27.2M 3689400 nginx nginx: worker proces 0 26.2M 26.5M 27.2M 5677 root /usr/lib/systemd/systemd-jo 0 5.1M 9.9M 17.9M 3402461 root /usr/sbin/rsyslogd -n 0 4.5M 8.0M 13.7M 83054 root /usr/lib/systemd/systemd-jo 0 9.1M 10.3M 13.7M 11944 root /data/web/eAgent/eAgent -p 0 13.1M 13.1M 13.1M 11950 root /usr/bin/python2 -Es /usr/s 0 11.1M 11.4M 12.0M 90821 root /usr/bin/vnet-proxy -conf / 0 11.8M 11.8M 11.8M 11942 root /opt/app/monitor_exporter/m 0 10.5M 10.5M 10.5M 507468 root python /bin/smem -s rss -rt 0 8.3M 8.6M 9.7M 10934 polkitd /usr/lib/polkit-1/polkitd - 0 8.5M 8.6M 9.0M 67000 haproxy /usr/sbin/haproxy -Ws -f /e 0 6.5M 6.9M 7.6M 82972 root /usr/bin/containerd-shim-ru 0 7.5M 7.5M 7.5M 82993 root /usr/sbin/init 0 3.6M 4.2M 7.1M 83662 root /usr/lib/systemd/systemd-ud 0 2.0M 2.4M 5.1M 496355 root sshd: secure [priv] 0 1.1M 2.4M 4.6M 83695 systemd-network /usr/lib/systemd/systemd-ne 0 1.2M 1.7M 4.5M 86007 root /usr/lib/systemd/systemd-lo 0 1.0M 1.5M 4.2M 11094 root /usr/sbin/vmtoolsd 0 3.8M 3.8M 4.2M 496387 root sudo -s 0 2.1M 2.7M 4.1M 84796 root sshd: /usr/sbin/sshd -D [li 0 1.9M 2.2M 3.8M 82957 root /usr/bin/docker-proxy -prot 0 1.7M 2.3M 3.2M 82950 root /usr/bin/docker-proxy -prot 0 1.6M 2.2M 3.1M 496357 secure sshd: secure@pts/1 0 604.0K 1.3M 2.4M 84388 991 /usr/bin/dbus-daemon --syst 0 1.1M 1.2M 2.2M 496388 root /bin/bash 0 504.0K 987.0K 2.1M 496361 secure -bash 0 448.0K 935.0K 2.1M 5698 root /usr/lib/systemd/systemd-ud 0 1.4M 1.4M 1.7M 12117 root /usr/sbin/keepalived -D -d 0 260.0K 584.0K 1.6M 11132 root /usr/lib/vmware-vgauth/VGAu 0 1.4M 1.4M 1.4M 86326 root /usr/sbin/crond -n 0 416.0K 470.0K 1.3M 12116 root /usr/sbin/keepalived -D -d 0 260.0K 559.0K 1.3M 10944 dbus /usr/bin/dbus-daemon --syst 0 1.0M 1.0M 1.3M 10943 root /usr/lib/systemd/systemd-lo 0 880.0K 907.0K 1.2M 10946 ntp /usr/sbin/ntpd -u ntp:ntp - 0 804.0K 847.0K 1.2M 12115 root /usr/sbin/keepalived -D -d 0 100.0K 413.0K 1.2M 264334 root titan_monitor -p 264328 -l 0 744.0K 773.0K 1.1M 87030 root nginx: master process /usr/ 0 152.0K 236.0K 1.1M 11991 root /usr/sbin/haproxy -Ws -f /e 0 212.0K 628.0K 1.0M 12112 root sshd: /usr/sbin/sshd -f /et 0 664.0K 733.0K 1.0M 10909 root /sbin/auditd 0 712.0K 729.0K 1008.0K 11007 root /usr/sbin/crond -n 0 688.0K 704.0K 1004.0K 3689399 root nginx: master process /usr/ 0 160.0K 418.0K 988.0K 86484 root /sbin/agetty -o -p -- \u -- 0 176.0K 209.0K 836.0K 10942 root /usr/sbin/irqbalance --fore 0 428.0K 440.0K 628.0K 90820 root /bin/sh -c env GOTRACEBACK= 0 224.0K 224.0K 228.0K ------------------------------------------------------------------------------- 78 10 0 3.1G 3.2G 3.5G
这个 smem
命令用于统计系统中各个进程的内存占用情况,并按内存使用量降序排列。以下是关键点解析:
1. 命令参数
-s rss
:按 RSS(常驻内存)
降序排序
-r
:反向排序(此处与 -t
配合实际为降序)
-t
:显示汇总行(最后一行)
-k
:显示带单位的缩写后缀(例如 KB、MB 等)
2. 关键字段
PID
进程 ID
User
进程所属用户
Command
进程命令(可能截断)
Swap
进程使用的 Swap 内存(全为 0,说明未启用 Swap)
USS
进程独占物理内存(不共享部分)
PSS
实际物理内存占用(USS + 共享内存按比例分配)
RSS
常驻内存(含共享内存,可能重复计算)
3. 重点进程分析
高内存进程 :
systemd
(PID 1):869MB
RSS (系统主进程)
多个 uwsgi
进程:每个约 70-380MB
RSS (Python Web 服务)
titanagent
:159MB
RSS (可能是自定义服务)
nginx
worker:每个约 28MB RSS (Web
服务)
其他服务 :
telegraf
(监控):53MB RSS
dockerd
:40MB RSS
containerd
:27MB RSS
汇总 (最后一行):
78 个进程 ,总计占用 3.5GB
RSS (含共享内存重复计算)
4. 内存类型对比
RSS (3.5G) > PSS (3.2G) >
USS (3.1G)
说明系统中存在较多共享内存(如 uwsgi
/nginx
可能共享库)。
5. 优化建议
检查 uwsgi
进程 :
多个同类进程占用较高(总计约
2GB+),确认是否需优化配置或减少实例数。
监控 systemd
:
共享内存 :
若需精确统计内存压力,应以 PSS 为准(3.2G
更真实)。
6. 扩展命令
smem -m -s pss -rtk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 [root@gz03-SDK-server-10e50e63e22 secure] Map PIDs AVGPSS PSS <anonymous> 78 26.3M 2.0G [heap] 73 14.4M 1.0G /usr/bin/dockerd 1 20.6M 20.6M /usr/bin/containerd 1 14.5M 14.5M /run/log/journal/8db494489b22414a8f3baba 2 6.3M 12.5M /dev/zero 31 368.0K 11.2M /run/log/journal/d92103d7ffe243ff8b086ee 1 8.7M 8.7M /opt/app/telegraf/telegraf 1 8.5M 8.5M /usr/lib64/python2.7/site-packages/crypt 18 353.0K 6.2M /usr/lib64/libpython2.7.so.1.0 21 263.0K 5.4M /usr/lib64/python2.7/site-packages/lxml/ 18 292.0K 5.1M /usr/bin/containerd-shim-runc-v2 1 4.6M 4.6M /data/web/eAgent/eAgent 1 4.4M 4.4M /usr/bin/vnet-proxy 1 4.0M 4.0M /opt/app/monitor_exporter/monitor_export 1 3.1M 3.1M /usr/lib64/libcrypto.so.1.1.1f 34 78.0K 2.6M /usr/lib64/libcrypto.so.1.0.2k 15 171.0K 2.5M /usr/lib/systemd/systemd 2 1.2M 2.4M [stack] 78 30.0K 2.3M /usr/bin/docker-proxy 2 1.0M 2.0M /usr/lib/systemd/libsystemd-shared-243.s 5 403.0K 2.0M /usr/lib64/libc-2.17.so 36 50.0K 1.8M /usr/lib64/libc-2.28.so 37 34.0K 1.2M /usr/sbin/sshd 4 228.0K 913.0K /usr/lib64/libkrb5.so.3.3 15 59.0K 898.0K /usr/sbin/nginx 12 66.0K 797.0K /usr/bin/bash 3 264.0K 792.0K /usr/bin/uwsgi 19 41.0K 790.0K /titan/agent/plugin/libAuditMonitor.so 1 748.0K 748.0K /titan/agent/plugin/libRadar.so 1 732.0K 732.0K /usr/lib64/python2.7/site-packages/_cffi 18 35.0K 630.0K /usr/lib/systemd/systemd-logind 2 302.0K 604.0K /usr/sbin/rsyslogd 1 556.0K 556.0K /titan/agent/plugin/libLogWatcher.so 1 532.0K 532.0K /usr/sbin/haproxy 2 258.0K 516.0K /usr/lib/systemd/systemd-udevd 2 252.0K 504.0K /titan/agent/plugin/libDiting.so 1 504.0K 504.0K /usr/lib64/libxml2.so.2.9.10 19 24.0K 458.0K /usr/lib64/python2.7/site-packages/nacl/ 18 25.0K 450.0K /usr/lib64/libssl.so.1.1.1f 33 13.0K 433.0K /usr/lib64/python2.7/lib-dynload/_io.so 20 21.0K 432.0K /usr/lib64/python2.7/site-packages/lxml/ 18 23.0K 414.0K /usr/lib/systemd/systemd-journald 2 200.0K 400.0K /usr/libexec/sudo/sudoers.so 1 396.0K 396.0K /usr/lib/systemd/systemd-networkd 1 384.0K 384.0K /usr/lib64/ld-2.17.so 36 10.0K 382.0K /usr/lib/vmware-tools/lib64/libcrypto.so 2 180.0K 360.0K /usr/bin/dbus-daemon 2 174.0K 348.0K /usr/lib64/libgio-2.0.so.0.5600.1 2 170.0K 340.0K /usr/lib64/libssl.so.1.0.2k 10 33.0K 332.0K /usr/lib64/libmount.so.1.1.0 8 39.0K 317.0K /usr/lib/vmware-tools/lib64/libvmtools.s 1 300.0K 300.0K /usr/lib64/libpthread-2.17.so 32 9.0K 298.0K /usr/lib64/libglib-2.0.so.0.5600.1 5 59.0K 296.0K /usr/lib64/libselinux.so.1 31 9.0K 292.0K /usr/lib64/ld-2.28.so 37 7.0K 278.0K /usr/lib64/libgcrypt.so.20.2.6 7 39.0K 273.0K /usr/lib64/python2.7/site-packages/lxml/ 18 15.0K 270.0K /usr/lib64/libdbus-1.so.3.19.11 1 264.0K 264.0K /titan/agent/plugin/libFileMonitor.so 1 252.0K 252.0K /usr/sbin/ntpd 1 244.0K 244.0K /usr/lib64/python2.7/lib-dynload/itertoo 21 11.0K 244.0K /usr/lib/vmware-tools/lib64/libglib-2.0. 2 118.0K 236.0K /usr/lib64/libpthread-2.28.so 36 6.0K 232.0K /usr/lib64/libnss_files-2.17.so 27 8.0K 231.0K /usr/lib64/security/pam_systemd.so 2 112.0K 224.0K /usr/lib64/python2.7/lib-dynload/termios 18 12.0K 216.0K /usr/lib64/libblkid.so.1.1.0 9 24.0K 216.0K /usr/lib64/libdbus-1.so.3.14.14 2 106.0K 212.0K /usr/lib64/libgssapi_krb5.so.2.2 15 14.0K 210.0K /usr/lib64/libdl-2.17.so 32 6.0K 210.0K /usr/lib64/libm-2.17.so 19 10.0K 202.0K /usr/lib64/librt-2.28.so 25 8.0K 200.0K /usr/lib64/liblzma.so.5.2.2 15 13.0K 196.0K /usr/lib64/libsystemd.so.0.6.0 7 27.0K 191.0K /usr/lib64/libtinfo.so.5.9 3 61.0K 184.0K /usr/lib64/libm-2.28.so 33 5.0K 181.0K /usr/lib64/libaudit.so.1.0.0 15 11.0K 177.0K /usr/lib64/libsystemd.so.0.27.0 2 86.0K 172.0K /usr/lib64/libgobject-2.0.so.0.5600.1 2 86.0K 172.0K /usr/lib64/libunistring.so.2.1.0 5 34.0K 170.0K /usr/lib64/libpcre.so.1.2.0 26 6.0K 162.0K /usr/sbin/keepalived 3 52.0K 157.0K /usr/lib64/librt-2.17.so 22 7.0K 156.0K /usr/lib64/libgcc_s-4.8.5-20150702.so.1 16 9.0K 156.0K /usr/lib64/libnss3.so 4 38.0K 152.0K /usr/lib64/python2.7/lib-dynload/operato 21 7.0K 148.0K /usr/lib64/python2.7/lib-dynload/_ctypes 20 7.0K 148.0K /usr/lib64/libgcrypt.so.11.8.2 8 18.0K 148.0K /usr/lib64/libk5crypto.so.3.1 15 9.0K 146.0K /usr/lib64/libdevmapper.so.1.02 6 23.0K 141.0K /usr/lib64/python2.7/lib-dynload/datetim 20 6.0K 139.0K /usr/lib64/python2.7/lib-dynload/_socket 20 6.0K 139.0K /usr/lib64/libexpat.so.1.6.11 1 136.0K 136.0K /usr/lib64/libdw-0.172.so 9 15.0K 136.0K /usr/lib64/libcap-ng.so.0.0.0 16 8.0K 134.0K /usr/lib64/python2.7/lib-dynload/_collec 21 6.0K 132.0K /titan/agent/titan_monitor 1 132.0K 132.0K /usr/lib64/libnss_myhostname.so.2 19 6.0K 128.0K /usr/lib64/libz.so.1.2.7 21 5.0K 125.0K /usr/lib/vmware-tools/plugins64/vmsvc/li 1 124.0K 124.0K /usr/bin/sudo 1 124.0K 124.0K /usr/lib64/libcryptsetup.so.12.6.0 5 23.0K 115.0K /usr/lib64/libnssutil3.so 4 28.0K 114.0K /usr/lib64/libseccomp.so.2.5.0 5 22.0K 113.0K /var/lib/containerd/io.containerd.metada 1 112.0K 112.0K /usr/lib64/libattr.so.1.1.0 17 6.0K 110.0K /usr/sbin/crond 2 54.0K 108.0K /usr/lib64/libresolv-2.17.so 18 5.0K 107.0K /usr/lib64/python2.7/lib-dynload/_json.s 19 5.0K 106.0K /usr/lib64/python2.7/lib-dynload/_functo 21 4.0K 104.0K /usr/lib64/libkrb5support.so.0.1 15 6.0K 104.0K /usr/lib/vmware-tools/sbin64/vmtoolsd 1 100.0K 100.0K /usr/lib/vmware-tools/lib64/libDeployPkg 1 100.0K 100.0K /usr/lib/vmware-tools/bin64/appLoader 1 100.0K 100.0K /usr/lib/vmware-tools/lib64/libpcre.so.1 2 48.0K 96.0K /usr/lib64/libcap.so.2.22 15 6.0K 94.0K /usr/libexec/sudo/libsudo_util.so.0.0.0 1 92.0K 92.0K /usr/lib64/libmozjs-17.0.so 1 92.0K 92.0K /usr/lib/vmware-tools/lib64/libgobject-2 1 92.0K 92.0K /run/log/journal/8db494489b22414a8f3baba 1 92.0K 92.0K /usr/lib64/python2.7/site-packages/.libs 18 5.0K 90.0K /usr/lib64/libuuid.so.1.3.0 29 3.0K 88.0K /usr/lib64/libcom_err.so.2.1 15 5.0K 88.0K /usr/lib/vmware-tools/lib64/libssl.so.1. 2 44.0K 88.0K /run/log/journal/8db494489b22414a8f3baba 1 88.0K 88.0K /run/log/journal/8db494489b22414a8f3baba 1 88.0K 88.0K /run/log/journal/8db494489b22414a8f3baba 1 88.0K 88.0K /usr/lib64/liblz4.so.1.9.2 7 12.0K 87.0K /usr/lib64/libpam.so.0.83.1 6 14.0K 85.0K /usr/lib64/libnspr4.so 5 17.0K 85.0K /usr/lib64/libgpg-error.so.0.29.0 7 12.0K 84.0K /run/log/journal/8db494489b22414a8f3baba 1 84.0K 84.0K /run/log/journal/8db494489b22414a8f3baba 1 84.0K 84.0K /run/log/journal/8db494489b22414a8f3baba 1 84.0K 84.0K /run/log/journal/8db494489b22414a8f3baba 1 84.0K 84.0K /usr/lib64/libkmod.so.2.3.5 5 16.0K 83.0K /usr/lib64/python2.7/lib-dynload/_ssl.so 20 4.0K 80.0K /usr/lib64/libstdc++.so.6.0.19 2 40.0K 80.0K /usr/lib64/libpcap.so.1.9.1 5 16.0K 80.0K /run/log/journal/8db494489b22414a8f3baba 1 80.0K 80.0K /run/log/journal/8db494489b22414a8f3baba 1 80.0K 80.0K /usr/lib64/libsepol.so.1 6 13.0K 78.0K /usr/lib64/libelf-0.172.so 12 6.0K 78.0K /usr/lib64/python2.7/lib-dynload/_struct 21 3.0K 76.0K /usr/lib64/libldap-2.4.so.2.10.7 1 76.0K 76.0K /run/log/journal/8db494489b22414a8f3baba 1 76.0K 76.0K /usr/lib64/python2.7/site-packages/crypt 18 4.0K 72.0K /usr/lib64/python2.7/site-packages/bcryp 18 4.0K 72.0K /usr/lib64/libssl3.so 1 72.0K 72.0K /usr/lib64/libpcre2-8.so.0.10.0 17 4.0K 72.0K /run/log/journal/8db494489b22414a8f3baba 1 72.0K 72.0K /run/log/journal/8db494489b22414a8f3baba 1 72.0K 72.0K /usr/lib64/libbz2.so.1.0.6 12 5.0K 70.0K /usr/lib64/liblz4.so.1.7.5 8 8.0K 68.0K /usr/lib64/libkeyutils.so.1.5 14 4.0K 68.0K /run/log/journal/8db494489b22414a8f3baba 1 68.0K 68.0K /usr/lib64/libutil-2.17.so 10 6.0K 66.0K /usr/sbin/auditd 1 64.0K 64.0K /usr/lib64/libgpg-error.so.0.10.0 8 8.0K 64.0K /usr/lib64/libgcc_s-7.3.0-20190804.so.1 35 1.0K 64.0K /usr/lib64/libdl-2.28.so 36 1.0K 64.0K /usr/lib/polkit-1/polkitd 1 64.0K 64.0K /run/log/journal/8db494489b22414a8f3baba 1 64.0K 64.0K /usr/lib/locale/locale-archive 8 7.0K 63.0K /usr/lib64/libnetsnmp.so.31.0.2 3 20.0K 61.0K /usr/lib64/python2.7/lib-dynload/stropmo 21 2.0K 60.0K /run/log/journal/8db494489b22414a8f3baba 1 60.0K 60.0K /run/log/journal/8db494489b22414a8f3baba 1 60.0K 60.0K /usr/sbin/agetty 1 56.0K 56.0K /usr/lib64/python2.7/lib-dynload/cPickle 20 2.0K 56.0K /usr/lib64/libudev.so.1.6.2 2 28.0K 56.0K /usr/lib64/libsmime3.so 1 56.0K 56.0K /usr/lib64/liblzma.so.5.2.5 26 2.0K 56.0K /run/log/journal/8db494489b22414a8f3baba 1 56.0K 56.0K /run/log/journal/8db494489b22414a8f3baba 1 56.0K 56.0K /run/log/journal/8db494489b22414a8f3baba 1 56.0K 56.0K /usr/lib64/libudev.so.1.6.15 5 11.0K 55.0K /usr/lib64/libjson-c.so.5.1.0 5 11.0K 55.0K /usr/lib64/libfreebl3.so 13 4.0K 55.0K /usr/lib64/libcrypt-2.17.so 13 4.0K 55.0K /usr/lib64/libstdc++.so.6.0.24 9 6.0K 54.0K /usr/lib64/python2.7/site-packages/_dbus 1 52.0K 52.0K /usr/lib64/python2.7/lib-dynload/_locale 21 2.0K 52.0K /usr/lib64/python2.7/lib-dynload/_heapq. 21 2.0K 52.0K /usr/lib64/libresolv-2.28.so 20 2.0K 52.0K /titan/agent/plugin/libLogCollector.so 1 52.0K 52.0K /run/log/journal/8db494489b22414a8f3baba 1 52.0K 52.0K /usr/lib64/security/pam_unix.so 3 16.0K 50.0K /usr/lib64/libnss_files-2.28.so 34 1.0K 50.0K /usr/lib64/libnsl-2.17.so 7 7.0K 50.0K /usr/lib64/libcap.so.2.32 5 9.0K 49.0K /usr/lib64/python2.7/lib-dynload/timemod 21 2.0K 48.0K /usr/lib64/libz.so.1.2.11 34 1.0K 48.0K /usr/lib64/libshellaudit.so 3 16.0K 48.0K /usr/lib64/libip4tc.so.2.0.0 5 9.0K 45.0K /usr/lib64/libidn2.so.0.3.7 5 9.0K 45.0K /usr/lib64/libattr.so.1.1.2448 5 9.0K 45.0K /usr/lib64/libacl.so.1.1.2253 5 9.0K 45.0K /usr/lib64/libpolkit-gobject-1.so.0.0.0 1 44.0K 44.0K /usr/lib/vmware-tools/plugins64/vmsvc/li 1 44.0K 44.0K /usr/sbin/irqbalance 1 40.0K 40.0K /usr/lib64/python2.7/lib-dynload/math.so 20 2.0K 40.0K /usr/lib64/libargon2.so.1 5 8.0K 40.0K /usr/lib/vmware-tools/lib64/libxml2.so.2 1 40.0K 40.0K /usr/lib64/libnetsnmpmibs.so.31.0.2 3 13.0K 39.0K /usr/lib64/python2.7/site-packages/gi/_g 1 36.0K 36.0K /usr/lib64/python2.7/lib-dynload/grpmodu 21 1.0K 36.0K /usr/lib64/python2.7/lib-dynload/arraymo 19 1.0K 36.0K /usr/lib64/perl5/CORE/libperl.so 3 12.0K 36.0K /usr/lib64/libpam.so.0.85.1 3 12.0K 36.0K /usr/lib64/libexpat.so.1.6.0 3 12.0K 36.0K /usr/lib64/libdb-5.3.so 3 12.0K 36.0K /usr/lib/vmware-tools/lib64/libvmtoolsd. 1 36.0K 36.0K /usr/lib64/security/pam_namespace.so 2 16.0K 32.0K /usr/lib64/security/pam_limits.so 3 10.0K 32.0K /usr/lib64/rsyslog/imuxsock.so 1 32.0K 32.0K /usr/lib64/python2.7/lib-dynload/selectm 20 1.0K 32.0K /usr/lib64/python2.7/lib-dynload/_hashli 20 1.0K 32.0K /usr/lib64/libkmod.so.2.2.10 2 16.0K 32.0K /usr/lib64/libffi.so.6.0.1 2 16.0K 32.0K /usr/lib64/libcrack.so.2.9.0 3 10.0K 32.0K /usr/lib/vmware-tools/lib64/libdnet.so.1 1 32.0K 32.0K /usr/lib64/libplc4.so 5 6.0K 30.0K /usr/lib64/libacl.so.1.1.0 6 5.0K 30.0K /usr/lib64/rsyslog/imudp.so 1 28.0K 28.0K /usr/lib64/rsyslog/imjournal.so 1 28.0K 28.0K /usr/lib64/libsasl2.so.3.0.0 1 28.0K 28.0K /usr/lib64/libfastjson.so.4.0.0 1 28.0K 28.0K /usr/lib64/gconv/gconv-modules.cache 5 5.0K 28.0K /usr/lib64/libplds4.so 5 5.0K 26.0K /usr/lib64/security/pam_env.so 3 8.0K 25.0K /usr/lib64/security/pam_succeed_if.so 3 8.0K 24.0K /usr/lib64/security/pam_selinux.so 2 12.0K 24.0K /usr/lib64/security/pam_keyinit.so 3 8.0K 24.0K /usr/lib64/rsyslog/lmnet.so 1 24.0K 24.0K /usr/lib64/python2.7/lib-dynload/fcntlmo 20 1.0K 24.0K /usr/lib64/python2.7/lib-dynload/bz2.so 19 1.0K 24.0K /usr/lib64/python2.7/lib-dynload/_random 20 1.0K 24.0K /usr/lib64/libpwquality.so.1.0.2 3 8.0K 24.0K /usr/lib64/liblber-2.4.so.2.10.7 1 24.0K 24.0K /usr/lib/vmware-tools/plugins64/common/l 1 24.0K 24.0K /usr/lib64/security/pam_tally2.so 1 20.0K 20.0K /usr/lib64/security/pam_pwquality.so 3 6.0K 20.0K /usr/lib64/security/pam_permit.so 3 6.0K 20.0K /usr/lib64/security/pam_localuser.so 3 6.0K 20.0K /usr/lib64/security/pam_lastlog.so 2 10.0K 20.0K /usr/lib64/security/pam_deny.so 3 6.0K 20.0K /usr/lib64/python2.7/lib-dynload/zlibmod 19 1.0K 20.0K /usr/lib64/python2.7/lib-dynload/cString 20 1.0K 20.0K /usr/lib64/python2.7/lib-dynload/_multip 19 1.0K 20.0K /usr/lib64/libkeyutils.so.1.10 1 20.0K 20.0K /usr/lib/vmware-tools/plugins64/vmsvc/li 1 20.0K 20.0K /usr/bin/python2.7 2 10.0K 20.0K /usr/lib64/security/pam_faildelay.so 3 6.0K 19.0K /usr/lib64/librpm.so.3.2.2 3 6.0K 18.0K /usr/lib64/libnl-3.so.200.23.0 3 6.0K 18.0K /usr/lib64/security/pam_sepermit.so 2 8.0K 16.0K /usr/lib64/security/pam_loginuid.so 2 8.0K 16.0K /usr/lib64/python2.7/lib-dynload/binasci 20 0 16.0K /usr/lib64/libpam_misc.so.0.82.0 2 8.0K 16.0K /usr/lib64/libgmodule-2.0.so.0.5600.1 2 8.0K 16.0K /usr/lib64/libfipscheck.so.1.2.1 1 16.0K 16.0K /usr/lib64/libestr.so.0.0.0 1 16.0K 16.0K /usr/lib64/libcrypt.so.1.1.0 29 0 16.0K /usr/lib/vmware-tools/plugins64/vmsvc/li 1 16.0K 16.0K /usr/lib/vmware-tools/plugins64/common/l 1 16.0K 16.0K /usr/lib/vmware-tools/lib64/libz.so.1/li 2 8.0K 16.0K /usr/lib/vmware-tools/lib64/libxmlsec1.s 1 16.0K 16.0K /usr/lib/vmware-tools/lib64/libxmlsec1-o 1 16.0K 16.0K /usr/lib/vmware-tools/lib64/libiconv.so. 2 8.0K 16.0K /usr/lib64/libnetsnmpagent.so.31.0.2 3 5.0K 15.0K /usr/lib64/libwrap.so.0.7.6 4 3.0K 14.0K /var/lib/docker/volumes/metadata.db 1 12.0K 12.0K /usr/lib64/security/pam_nologin.so 2 6.0K 12.0K /usr/lib64/security/pam_cracklib.so 1 12.0K 12.0K /usr/lib64/python2.7/lib-dynload/unicode 19 0 12.0K /usr/lib64/python2.7/lib-dynload/pyexpat 1 12.0K 12.0K /usr/lib64/python2.7/lib-dynload/_bisect 19 0 12.0K /usr/lib64/libutil-2.28.so 20 0 12.0K /usr/lib64/librpmio.so.3.2.2 3 4.0K 12.0K /usr/lib64/libopts.so.25.15.0 1 12.0K 12.0K /usr/lib64/libnss_dns-2.28.so 19 0 12.0K /usr/lib/vmware-tools/plugins64/vmsvc/li 1 12.0K 12.0K /usr/lib64/libnl-genl-3.so.200.23.0 3 3.0K 11.0K /usr/lib64/liblua-5.1.so 3 3.0K 9.0K /usr/lib64/python2.7/site-packages/marku 19 0 8.0K /usr/lib64/python2.7/site-packages/_dbus 1 8.0K 8.0K /usr/lib64/libpcreposix.so.0.0.1 2 4.0K 8.0K /usr/lib64/libnuma.so.1 1 8.0K 8.0K /usr/lib64/libgthread-2.0.so.0.5600.1 1 8.0K 8.0K /usr/lib64/libgirepository-1.0.so.1.0.0 1 8.0K 8.0K /usr/lib64/libffi.so.7.1.0 19 0 8.0K /usr/lib64/libdbus-glib-1.so.2.2.2 1 8.0K 8.0K /usr/lib64/libbz2.so.1.0.8 19 0 8.0K /usr/lib64/libauparse.so.0.0.0 1 8.0K 8.0K /usr/lib/vmware-tools/plugins64/vmsvc/li 1 8.0K 8.0K /usr/lib/vmware-tools/plugins64/vmsvc/li 1 8.0K 8.0K /usr/lib/vmware-tools/lib64/libhgfs.so/l 1 8.0K 8.0K /usr/lib/vmware-tools/lib64/libffi.so.6/ 2 4.0K 8.0K /usr/lib/vmware-tools/lib64/libVGAuthSer 1 8.0K 8.0K /run/systemd/journal/kernel-seqnum 2 4.0K 8.0K /usr/lib64/libxtables.so.10.0.0 3 2.0K 6.0K /usr/lib64/libsensors.so.4.4.0 3 2.0K 6.0K /usr/lib64/libpopt.so.0.0.0 3 2.0K 6.0K /usr/lib64/libip6tc.so.0.1.0 3 2.0K 6.0K /usr/lib64/libip4tc.so.0.1.0 3 2.0K 6.0K /var/titanagent/dns_shmem 1 4.0K 4.0K /usr/lib/vmware-tools/lib64/libmspack.so 1 4.0K 4.0K /usr/lib/vmware-tools/lib64/libgthread-2 1 4.0K 4.0K /usr/lib/vmware-tools/lib64/libgmodule-2 1 4.0K 4.0K /titan/agent/titanagent 1 4.0K 4.0K /etc/udev/hwdb.bin 2 2.0K 4.0K [vsyscall] 78 0 0 [vdso] 78 0 0 /var/lib/docker/buildkit/snapshots.db 1 0 0 /var/lib/docker/buildkit/metadata_v2.db 1 0 0 /var/lib/docker/buildkit/containerdmeta. 1 0 0 /var/lib/docker/buildkit/cache.db 1 0 0 /usr/lib64/libunwind.so.8.0.1 9 0 0 /usr/lib64/libprofiler.so.0.5.0 9 0 0 /usr/lib64/girepository-1.0/GLib-2.0.typ 1 0 0 /usr/lib/vmware-tools/icu/icudt44l.dat 1 0 0 /usr/lib/modules/3.10.0-957.el7.x86_64/m 1 0 0 /usr/lib/modules/3.10.0-957.el7.x86_64/m 1 0 0 /usr/lib/modules/3.10.0-957.el7.x86_64/m 1 0 0 /usr/lib/modules/3.10.0-957.el7.x86_64/m 1 0 0 /[aio] 8 0 0 ----------------------------------------------------------------- 328 2997 132.8M 3.2G
这个 smem -m -s pss -rtk
命令是用来分析 Linux
系统内存使用情况的工具,下面是对命令和输出的解释:
命令解释:
smem
:内存统计工具,可以显示实际内存使用情况
-m
:按内存映射(memory mappings)分组显示
-s pss
:按 PSS(Proportional Set Size)排序
-r
:反向排序(从大到小)
-t
:显示总计
-k
:以 KB 为单位显示(默认),但实际输出中显示的是
MB/GB
输出解释:
输出分为三列: 1. Map :内存映射的文件或区域名称 2.
PIDs :使用该映射的进程数量 3.
AVGPSS :平均每个进程的 PSS 4. PSS :总
PSS( Proportional Set Size,按共享比例计算的实际内存使用量)
关键信息:
匿名内存 (anonymous)占用最多:
78 个进程共享
平均每个进程 26.3MB
总共 2.0GB
[heap] 堆内存:
重要进程 :
dockerd:20.6MB
containerd:14.5MB
telegraf:8.5MB
总计 (最后一行):
328 个不同的内存映射
2997 个进程
平均每个进程 132.8MB
总内存使用 3.2GB
PSS 说明:
PSS(Proportional Set Size)是更准确的内存统计方式: -
私有内存:全部计入 - 共享内存:按共享进程数平分计入 - 比 RSS(Resident
Set Size)更能反映实际内存使用
常见映射类型:
<anonymous>
:匿名映射(如程序堆、栈等)
[heap]
:进程堆内存
[stack]
:进程栈内存
[vdso]
:虚拟动态共享对象
文件路径:共享库或内存映射文件
/proc/meminfo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [root@gz03-SDK-server-10e50e63e22 secure] MemTotal: 32761856 kB MemFree: 5752900 kB MemAvailable: 6140044 kB Buffers: 48 kB Cached: 1756500 kB SwapCached: 0 kB Active: 3502352 kB Inactive: 1411756 kB Active(anon): 3172812 kB Inactive(anon): 1085016 kB Active(file): 329540 kB Inactive(file): 326740 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 28 kB Writeback: 0 kB AnonPages: 3157792 kB Mapped: 101528 kB Shmem: 1100268 kB Slab: 295756 kB SReclaimable: 98300 kB SUnreclaim: 197456 kB KernelStack: 27600 kB PageTables: 23808 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 16380928 kB Committed_AS: 12744344 kB VmallocTotal: 34359738367 kB VmallocUsed: 231068 kB VmallocChunk: 34359310332 kB HardwareCorrupted: 0 kB AnonHugePages: 4096 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 3018560 kB DirectMap2M: 30535680 kB DirectMap1G: 2097152 kB
以下是标记后的 /proc/meminfo
数据解析,右侧标注每项的作用及是否明确占用物理内存 :
/proc/meminfo
详细解析
MemTotal
32761856
总物理内存 (32GB),硬件实际容量。
MemFree
5752900
完全空闲内存 (未分配,可立即使用)。✅
未占用 。
MemAvailable
6140044
系统实际可用内存 (含可回收缓存)。✅
未完全占用 。
Buffers
48
块设备缓存 (如磁盘读写缓冲)。⚠️
可回收 ,不算占用。
Cached
1756500
文件缓存 (加速文件访问)。⚠️
可回收 ,不算占用。
SwapCached
0
交换缓存 (未启用 Swap,无数据)。🚫
无占用 。
Active
3502352
活跃内存 (近期被访问)。含
Active(anon)
和 Active(file)
。
Inactive
1411756
非活跃内存 (可能被回收)。含
Inactive(anon)
和 Inactive(file)
。
Active(anon)
3172812
活跃匿名页 (如进程堆、栈)。✅
明确占用物理内存 。
Inactive(anon)
1085016
非活跃匿名页 (可能被回收)。⚠️
暂占用,但可释放 。
Active(file)
329540
活跃文件缓存 (如被频繁读写的文件)。⚠️
可回收 。
Inactive(file)
326740
非活跃文件缓存 (如未使用的文件缓存)。⚠️
可回收 。
Unevictable
0
不可回收内存 (如锁定的用户空间内存)。🚫
无占用 。
Mlocked
0
用户空间锁定内存 (防止被交换)。🚫
无占用 。
SwapTotal
0
Swap 空间总量 (未启用)。🚫
无占用 。
SwapFree
0
空闲 Swap 空间 (未启用)。🚫
无占用 。
Dirty
28
待写入磁盘的脏页 。⚠️
暂占用,写入后释放 。
Writeback
0
正在回写磁盘的内存 。🚫
无占用 。
AnonPages
3157792
已映射的匿名内存 (如进程堆、栈)。✅
明确占用物理内存 。
Mapped
101528
文件映射到内存 (如动态库)。⚠️
部分可回收 。
Shmem
1100268
共享内存 (如 tmpfs
、IPC)。✅
明确占用物理内存 。
Slab
295756
内核对象缓存 (如 dentry、inode)。含
SReclaimable
(可回收)和
SUnreclaim
(不可回收)。
SReclaimable
98300
可回收 Slab (如文件系统缓存)。⚠️
可回收 。
SUnreclaim
197456
不可回收 Slab (如网络栈、驱动占用)。✅
明确占用物理内存 。
KernelStack
27600
内核栈 (每个线程的内核态栈)。✅
明确占用物理内存 。
PageTables
23808
页表映射 (虚拟内存管理)。✅
明确占用物理内存 。
NFS_Unstable
0
NFS 不稳定页 (等待提交)。🚫
无占用 。
Bounce
0
缓冲高地址内存 (旧硬件兼容)。🚫
无占用 。
WritebackTmp
0
FUSE 临时回写缓存 。🚫
无占用 。
CommitLimit
16380928
系统允许的提交内存上限 (无 Swap 时为
MemTotal/2
)。📊 统计值,非占用 。
Committed_AS
12744344
已提交的虚拟内存 (可能未全部映射物理内存)。📊
统计值,非占用 。
VmallocTotal
34359738367
虚拟地址空间总量 (理论值)。📊
统计值,非占用 。
VmallocUsed
231068
已用虚拟地址空间 (如内核模块)。⚠️
部分占用物理内存 。
VmallocChunk
34359310332
最大连续虚拟地址空间 。📊
统计值,非占用 。
HardwareCorrupted
0
硬件损坏内存 (被内核标记为不可用)。🚫
无占用 。
AnonHugePages
4096
透明大页(THP)匿名内存 。✅
明确占用物理内存 。
CmaTotal
0
连续内存分配器(CMA)预留 。🚫
无占用 。
CmaFree
0
空闲 CMA 内存 。🚫 无占用 。
HugePages_Total
0
大页内存总量 (未配置)。🚫
无占用 。
HugePages_Free
0
空闲大页内存 (未配置)。🚫
无占用 。
Hugepagesize
2048
单个大页大小 (2MB)。📊
静态信息,非占用 。
DirectMap4k
3018560
4KB 直接映射内存 (内核线性映射)。📊
统计值,非独立占用 。
DirectMap2M
30535680
2MB 直接映射内存 (内核大页映射)。📊
统计值,非独立占用 。
DirectMap1G
2097152
1GB 直接映射内存 (内核巨页映射)。📊
统计值,非独立占用 。
物理内存占用分类总结
用户进程占用
AnonPages
+ Shmem
+
Mapped
(部分)
✅ 是
内核占用
SUnreclaim
+ KernelStack
+
PageTables
+ VmallocUsed
(部分)
✅ 是
可回收内存
Cached
+ Buffers
+
SReclaimable
+ Active(file)
+
Inactive(file)
❌ 否
空闲内存
MemFree
❌ 否
统计/预留值
MemTotal
、DirectMap*
、CommitLimit
等
❌ 否
关键结论
明确占用物理内存 的字段:
AnonPages
(进程匿名内存)
Shmem
(共享内存/tmpfs)
SUnreclaim
(不可回收 Slab)
KernelStack
(内核栈)
PageTables
(页表)
AnonHugePages
(透明大页)
总和计算 :
用户进程 ≈
AnonPages (3157792) + Shmem (1100268)
≈
4.26GB
内核 ≈
SUnreclaim (197456) + KernelStack (27600) + PageTables (23808)
≈ 248MB
总计 ≈
4.51GB (实际可能更高,需结合内核动态分配)。
其余内存 (如
Cached
、MemFree
)为可回收或空闲 ,不视为占用 。
缓存/可回收内存 :约 1.85GB
空闲内存 :约 5.75GB
剩余内存用途 :可能被内核动态管理或未显式统计(如
smem
中的 kernel dynamic memory
21GB
非缓存部分)。
📌 注意 :若 smem
显示内核占用 21GB
非缓存,而 meminfo
未明确统计,可能是内核预留内存(如
DMA、驱动占用等),需结合具体系统用途分析。
numastat -m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [root@gz03-SDK-server-10e50e63e22 secure] Per-node system memory usage (in MBs): Node 0 Total --------------- --------------- MemTotal 32767.43 32767.43 MemFree 5612.25 5612.25 MemUsed 27155.17 27155.17 Active 3429.36 3429.36 Inactive 1377.34 1377.34 Active(anon) 3104.48 3104.48 Inactive(anon) 1059.59 1059.59 Active(file) 324.88 324.88 Inactive(file) 317.75 317.75 Unevictable 0.00 0.00 Mlocked 0.00 0.00 Dirty 0.13 0.13 Writeback 0.00 0.00 FilePages 1717.17 1717.17 Mapped 99.20 99.20 AnonPages 3089.93 3089.93 Shmem 1074.48 1074.48 KernelStack 26.98 26.98 PageTables 22.70 22.70 NFS_Unstable 0.00 0.00 Bounce 0.00 0.00 WritebackTmp 0.00 0.00 Slab 289.02 289.02 SReclaimable 96.02 96.02 SUnreclaim 193.00 193.00 AnonHugePages 4.00 4.00 HugePages_Total 0.00 0.00 HugePages_Free 0.00 0.00 HugePages_Surp 0.00 0.00
以下是 numastat -m
命令输出的详细解析,在原始数据右侧标注每项的作用及是否明确占用物理内存:
numastat -m
内存统计解析
MemTotal
32767.43
总物理内存 (32GB),硬件实际容量。
MemFree
5612.25
完全空闲内存 (未分配,可立即使用)。✅
未占用 。
MemUsed
27155.17
已使用内存 (含缓存、内核、用户进程)。⚠️
包含可回收部分 。
Active
3429.36
活跃内存 (近期被访问)。含
Active(anon)
和 Active(file)
。
Inactive
1377.34
非活跃内存 (可能被回收)。含
Inactive(anon)
和 Inactive(file)
。
Active(anon)
3104.48
活跃匿名页 (如进程堆、栈)。✅
明确占用物理内存 。
Inactive(anon)
1059.59
非活跃匿名页 (可能被回收)。⚠️
暂占用,但可释放 。
Active(file)
324.88
活跃文件缓存 (如频繁读写的文件)。⚠️
可回收 。
Inactive(file)
317.75
非活跃文件缓存 (如未使用的文件缓存)。⚠️
可回收 。
Unevictable
0.00
不可回收内存 (如锁定的用户空间内存)。🚫
无占用 。
Mlocked
0.00
用户空间锁定内存 (防止被交换)。🚫
无占用 。
Dirty
0.13
待写入磁盘的脏页 。⚠️
暂占用,写入后释放 。
Writeback
0.00
正在回写磁盘的内存 。🚫
无占用 。
FilePages
1717.17
文件缓存 (加速文件访问)。⚠️
可回收 。
Mapped
99.20
文件映射到内存 (如动态库)。⚠️
部分可回收 。
AnonPages
3089.93
已映射的匿名内存 (如进程堆、栈)。✅
明确占用物理内存 。
Shmem
1074.48
共享内存 (如 tmpfs
、IPC)。✅
明确占用物理内存 。
KernelStack
26.98
内核栈 (每个线程的内核态栈)。✅
明确占用物理内存 。
PageTables
22.70
页表映射 (虚拟内存管理)。✅
明确占用物理内存 。
NFS_Unstable
0.00
NFS 不稳定页 (等待提交)。🚫
无占用 。
Bounce
0.00
缓冲高地址内存 (旧硬件兼容)。🚫
无占用 。
WritebackTmp
0.00
FUSE 临时回写缓存 。🚫
无占用 。
Slab
289.02
内核对象缓存 (如 dentry、inode)。含
SReclaimable
和 SUnreclaim
。
SReclaimable
96.02
可回收 Slab (如文件系统缓存)。⚠️
可回收 。
SUnreclaim
193.00
不可回收 Slab (如网络栈、驱动占用)。✅
明确占用物理内存 。
AnonHugePages
4.00
透明大页(THP)匿名内存 。✅
明确占用物理内存 。
HugePages_Total
0.00
大页内存总量 (未配置)。🚫
无占用 。
HugePages_Free
0.00
空闲大页内存 (未配置)。🚫
无占用 。
HugePages_Surp
0.00
超额大页内存 (未配置)。🚫
无占用 。
物理内存占用分类总结
用户进程占用
AnonPages
+ Shmem
+
Mapped
(部分)
✅ 是
内核占用
SUnreclaim
+ KernelStack
+
PageTables
✅ 是
可回收内存
FilePages
+ Active(file)
+
Inactive(file)
+ SReclaimable
❌ 否
空闲内存
MemFree
❌ 否
统计/预留值
MemTotal
、HugePages_*
等
❌ 否
关键结论
明确占用物理内存 的字段:
AnonPages
(进程匿名内存)
Shmem
(共享内存/tmpfs)
SUnreclaim
(不可回收 Slab)
KernelStack
(内核栈)
PageTables
(页表)
AnonHugePages
(透明大页)
总和计算 :
用户进程 ≈
AnonPages (3089.93) + Shmem (1074.48)
≈
4.16GB
内核 ≈
SUnreclaim (193.00) + KernelStack (26.98) + PageTables (22.70)
≈ 242.68MB
总计 ≈
4.4GB (实际可能更高,需结合内核动态分配)。
其余内存 (如
FilePages
、MemFree
)为可回收或空闲 ,不视为占用 。
NUMA 节点 :
当前仅 Node 0 有数据,说明系统为单节点(无 NUMA
跨节点访问问题)。
📌 注意 :若与 smem
或
/proc/meminfo
数据冲突,可能是统计口径差异(如内核预留内存未完全显示)。
/proc/buddyinfo
1 2 3 4 [root@gz03-SDK-server-10e50e63e22 secure] Node 0, zone DMA 0 0 0 0 2 1 1 0 1 1 3 Node 0, zone DMA32 15436 18684 7851 2302 720 243 80 32 21 0 0 Node 0, zone Normal 127559 175569 74035 31054 12025 2271 101 0 0 0 0
以下是 /proc/buddyinfo
数据的可读化转换 ,将原始数字按内存块大小分类,并标注实际物理内存量(假设页大小为
4KB ):
1. 数据转换表
列定义 (单位:连续内存块数量)
2^0
4KB
0
15436
127559
2^1
8KB
0
18684
175569
2^2
16KB
0
7851
74035
2^3
32KB
0
2302
31054
2^4
64KB
2
720
12025
2^5
128KB
1
243
2271
2^6
256KB
1
80
101
2^7
512KB
0
32
0
2^8
1MB
1
21
0
2^9
2MB
1
0
0
2^10
4MB
3
0
0
2. 按区域的可读化说明
① DMA 区域(16MB 以下)
剩余内存块 :
64KB :2 块 → 128KB
128KB :1 块 → 128KB
256KB :1 块 → 256KB
1MB :1 块 → 1MB
2MB :1 块 → 2MB
4MB :3 块 → 12MB
总计空闲 :≈
15.5MB (但极度碎片化,无连续大块)。
② DMA32 区域(4GB
以下)
剩余内存块 :
≤64KB :15436 (4KB) + 18684 (8KB) + ... + 720 (64KB)
→ ≈1.2GB (碎片化严重)
≥128KB :243 (128KB) + 80 (256KB) + ... + 21 (1MB) →
≈80MB (大块稀缺)
关键问题 :1MB 以上块仅 21
个 ,可能影响大内存需求应用。
③ Normal
区域(全部内存)
剩余内存块 :
≤64KB :127559 (4KB) + 175569 (8KB) + ... + 12025
(64KB) → ≈5.8GB (碎片化)
≥128KB :2271 (128KB) + 101 (256KB) →
≈350MB
≥1MB :0
块 (无法直接分配超大连续内存)
3. 可视化碎片分布
DMA 区域
1 [4MB][4MB][4MB] [2MB] [1MB] [256KB] [128KB] [128KB] [64KB][64KB]
→ 大块(≥1MB)占比高 ,但总量小(仅 16MB 区域)。
DMA32/Normal 区域
1 [4KB][4KB][8KB][16KB]...[64KB]...[128KB]...[256KB]...(极少 1MB+)
→ 90% 内存为 ≤64KB 小块 ,大块资源不足。
4. 碎片化总结
DMA
~15.5MB
4MB/2MB/1MB
🔥 高
旧设备驱动可能分配失败
DMA32
~1.28GB
4KB~64KB
⚠️ 中
大内存应用(如数据库)性能降级
Normal
~6.15GB
4KB~256KB
⚠️ 中
需 1MB+ 连续内存的应用异常
5. 用户友好提示
查看大块内存需求 :
1 grep -i huge /proc/meminfo
主动缓解碎片 :
1 echo 1 > /proc/sys/vm/compact_memory
📌
关键结论 :系统内存以小块(≤256KB)为主 ,DMA32/Normal
区域需关注大块分配问题 ,但常规应用影响有限。
/proc/pagetypeinfo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [root@gz03-SDK-server-10e50e63e22 secure] Page block order: 9 Pages per block: 512 Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10 Node 0, zone DMA, type Unmovable 0 0 0 0 2 1 1 0 1 0 0 Node 0, zone DMA, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA, type Movable 0 0 0 0 0 0 0 0 0 1 3 Node 0, zone DMA, type Reserve 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA, type CMA 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA, type Isolate 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA32, type Unmovable 3441 2551 862 156 49 37 28 10 6 0 0 Node 0, zone DMA32, type Reclaimable 21 21 182 149 97 59 33 18 15 0 0 Node 0, zone DMA32, type Movable 11625 16116 6805 1996 574 147 19 4 0 0 0 Node 0, zone DMA32, type Reserve 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA32, type CMA 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA32, type Isolate 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone Normal, type Unmovable 15016 9903 5654 2105 973 340 15 0 0 0 0 Node 0, zone Normal, type Reclaimable 4465 5246 4104 2644 1275 475 41 0 0 0 0 Node 0, zone Normal, type Movable 106989 160315 64278 26256 9777 1456 45 0 0 0 0 Node 0, zone Normal, type Reserve 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone Normal, type CMA 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone Normal, type Isolate 0 0 0 0 0 0 0 0 0 0 0 Number of blocks type Unmovable Reclaimable Movable Reserve CMA Isolate Node 0, zone DMA 1 0 7 0 0 0 Node 0, zone DMA32 961 43 524 0 0 0 Node 0, zone Normal 10261 217 4370 0 0 0
下面是对/proc/pagetypeinfo
的一次完整、结构化、清晰可读的汇总整理,包括:
基础信息
Page block order : 9
→ 表示一个 page block 包含 2^9 = 512
个页(pages)
每页大小 : 4KB
(通常的页大小)
每个 page block 大小 = 512 pages × 4KB
= 2MB
✅ 计算方法:
1 2 ^9 × 4 KB = 512 × 4 KB = 2048 KB = 2 MB
Page
Block Summary by Zone & MigrateType(页块数量与内存占用)
0
DMA
Unmovable
1
1 block × 2MB = 2 MB
不可移动 : -
内核早期代码区 :存放在内核启动阶段运行的代码,如内核初始化代码。 -
DMA
驱动驻留区 :用于直接内存访问(DMA)的驱动程序常驻内存区域,不会被交换或回收。 -
常驻内存不可回收的内核对象。
0
DMA
Reclaimable
0
0
可回收 :没有可回收的内存块,表示该区域当前没有标记为可回收的内存。
0
DMA
Movable
7
7 blocks × 2MB = 14 MB
可移动 : - DMA
区域少量可移动页 :DMA
区的内存空间,某些页可以在需要时被回收或移除。 -
可移动页 :内存中的某些部分可以被交换到磁盘或移至其他区域。
0
DMA
Reserve
0
0
预留 :没有保留的内存块,表示该区域没有保留任何特殊用途的内存。
0
DMA
CMA
0
0
CMA :未启用 CMA(Contiguous Memory
Allocator),因此没有为连续内存分配区保留内存。
0
DMA
Isolate
0
0
隔离 :没有使用内存隔离区,表示没有特定的内存区域被标记为隔离区。
0
DMA32
Unmovable
961
961 blocks × 2MB = 1.88 GB
不可移动 : -
驱动驻留内存 :内核驱动程序占用的内存区域,通常不被回收或交换。 -
vmalloc
区域 :动态分配的内存区域,通常用于较大的内存块,如大于
PAGE_SIZE 的分配。 - slab 中不可回收对象 :slab
分配器分配的内存,用于存储内核对象,某些对象是不可回收的。
0
DMA32
Reclaimable
43
43 blocks × 2MB = 86 MB
可回收 : - slab
可回收对象 :例如 inode、dentry
等内核缓存,通常会在空闲时被回收。 -
文件页缓存 :用于缓存文件数据,空闲时可以回收以释放内存。
0
DMA32
Movable
524
524 blocks × 2MB = 1.02 GB
可移动 : -
普通匿名页 :用户空间进程的匿名页,这些页不与文件系统映射,通常可以被交换。 -
文件缓存页 :操作系统用于缓存文件数据的内存,可以在需要时被移动或回收。 -
可以被回收或交换的内存页。
0
DMA32
Reserve
0
0
预留 :没有保留内存块,表示没有用于特殊目的的内存区域。
0
DMA32
CMA
0
0
CMA :没有启用
CMA,表示没有为连续内存分配区保留内存。
0
DMA32
Isolate
0
0
隔离 :没有使用内存隔离区,表示没有特定的内存区域被标记为隔离区。
0
Normal
Unmovable
10261
10261 blocks × 2MB = 20.04 GB
不可移动 : -
内核代码段 :包含内核的主要代码,始终驻留在内存中。 -
内核模块 :动态加载的内核模块,它们需要常驻内存。 -
slab/slub 中不可回收对象 :slab
分配器分配的不可回收的内存对象,如内核对象。 - vmalloc
映射区域 :由内核动态分配的虚拟内存区域。 -
固定映射页(fixmap) :由内核在固定位置映射的内存区域,用于各种内核操作。
0
Normal
Reclaimable
217
217 blocks × 2MB = 434 MB
可回收 : - 可回收的 slab
对象 :如 dentry、inode 等内核缓存对象,空闲时可以被回收。 -
文件页缓存(page
cache) :用于缓存文件数据,空闲时可以回收。 -
inode/dentry 缓存 :文件系统缓存,包含元数据。
0
Normal
Movable
4370
4370 blocks × 2MB = 8.54 GB
可移动 : -
用户空间匿名页 :用户进程的匿名内存页,通常可以被交换。 -
文件映射页 :映射到用户空间的文件数据页。 -
KSM 页 :用于内存合并的页,KSM(Kernel Same-page
Merging)技术可以将相同内容的页合并以节省内存。
0
Normal
Reserve
0
0
预留 :没有保留内存块,表示没有用于特殊目的的内存区域。
0
Normal
CMA
0
0
CMA :没有启用
CMA,表示没有为连续内存分配区保留内存。
0
Normal
Isolate
0
0
隔离 :没有使用内存隔离区,表示没有特定的内存区域被标记为隔离区。
总体可视化统计(按 Zone)
DMA
1
0
7
8
0.016 GB
DMA32
961
43
524
1528
2.98 GB
Normal
10261
217
4370
14848
29.0 GB
总计
11223
260
4901
16384 blocks
32.0 GB (总内存)
重点观察
Normal 区是主力:
Unmovable:10261 blocks
≈ 20.04 GB
Movable:4370 blocks
≈ 8.54 GB
DMA32 区也承担了一部分常驻内核内存 (如 Unmovable
961 blocks ≈ 1.88 GB)
未启用 CMA 和
Isolate ,说明没有使用大块连续内存预留和内存热拔插功能。
额外信息来源及命令建议
Slab/Slub 分配占用
slabtop
/ cat /proc/slabinfo
查看内核结构分配情况
模块加载情况
lsmod
/ cat /proc/modules
检查 ko 占用内存
vmalloc 区域分析
cat /proc/vmallocinfo
看分配了多少虚拟地址
页主跟踪
cat /sys/kernel/debug/page_owner
若开启 CONFIG_PAGE_OWNER
,可精确定位占用源
内存碎片情况
cat /proc/buddyinfo
查看页分配碎片状态
找出
Normal 区中那 10261 个不可移动页块(约 20GB) 都是被谁占用的?
要找出 Normal 区中那 10261 个不可移动页块(约 20GB)
都是被谁占用的,可以从多个维度来排查,方法如下:
一、先理解:“不可移动(Unmovable)”
包括哪些内容?
Unmovable 类型的页块,通常包含:
内核核心代码(text/data 段)
内核模块(ko 文件加载后常驻内存)
页表、vmalloc 区、固定映射(fixmap)
slab/slub 分配器中的非回收对象(slab caches)
不可迁移的内核结构(如 task_struct、文件描述符等)
映射到设备的页(如 DMA 内存)
二、定位这些页占用来源的方法
1.
slab/slub 分配器:占了多少内存?哪些对象是
Unmovable?
使用: 1 slabtop -s c -o | head -n20
或者: 1 cat /proc/slabinfo | sort -k 3 -nr | head -20
看哪些对象数量巨大,占用内存多,特别是 allocs
很多但
frees
很少的项(无法释放 = Unmovable)。
2.
内核模块:是否加载了很多 ko 占据了 Unmovable 区?
1 lsmod | sort -k2 -nr | head
查看模块的使用量。
配合: 看大小字段。
3. vmalloc 区域
查看 vmalloc 分配情况: 1 cat /proc/vmallocinfo | less
vmalloc 分配出来的地址空间大多数是
Unmovable(虽然页面本身可能有迁移可能性,但 pageblock 仍视作
Unmovable)。
4. page owner
tracing(较高级)
如果你打开了
CONFIG_PAGE_OWNER
,可以直接查看页面是谁分配的:
1 cat /sys/kernel/debug/page_owner
然后配合筛选: 1 grep -A30 Unmovable /sys/kernel/debug/page_owner | less
或者想查 Normal 区页可这样: 1 grep Normal /sys/kernel/debug/page_owner | grep Unmovable
注:需要内核编译时打开 CONFIG_PAGE_OWNER
并在grub加内核参数启动:
5. buddyinfo
辅助判断碎片分布
可以查看 Normal 区是否高度碎片化,是否还有可能回收页。
6.
内核页映射分布分析(较高级)
可以通过 page-types
工具配合 page_owner
分析页面用途。
比如: 1 sudo page-types -r /proc/kcore
可以尝试查看哪些物理页是 Unmovable。
三、实用建议组合分析方法
先用 slabtop
查看谁吃了最多的内存。
看 lsmod
模块是否加载太多。
检查 vmallocinfo
是否用了很多大分配。
如果你能重启加内核参数,可以启用 page_owner
来精确找出分配源。
结合 buddyinfo
看是否高度碎片化(意味着很多 page block
无法释放)。
More