Linux查看CPU和内存使用情况(top mpstat pmap free ps命令使用)
在linux系统中,一般使用系统自带的top和mpstat命令查看CPU的性能和使用情况,使用free和pmap命令查看系统的内存使用情况。这里就这几个命令的使用做详细的介绍。
top命令
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
$ top -u oracle
内容解释:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
操作实例:
在命令行中输入 “top”
即可启动 top
top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。
[email protected]:~$ top
top - 18:02:00 up 17 days, 12:48, 3 users, load average: 0.38, 0.21, 0.15
Tasks: 261 total, 1 running, 260 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.8 us, 2.0 sy, 0.0 ni, 80.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 994888 total, 103856 free, 481292 used, 409740 buff/cache
KiB Swap: 1045500 total, 574292 free, 471208 used. 292728 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1968 biao 20 0 1700932 168016 9036 S 39.6 16.9 1588:13 compiz
1239 root 20 0 414800 49536 6956 S 2.0 5.0 874:48.48 Xorg
26932 biao 20 0 41932 3964 3200 R 2.0 0.4 0:22.43 top
1 root 20 0 185236 3264 1748 S 0.0 0.3 0:56.77 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.45 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:19.75 ksoftirqd/0
7 root 20 0 0 0 0 S 0.0 0.0 15:02.55 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root rt 0 0 0 0 S 0.0 0.0 0:01.26 migration/0
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:08.23 watchdog/0
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
14 root rt 0 0 0 0 S 0.0 0.0 0:07.70 watchdog/1
15 root rt 0 0 0 0 S 0.0 0.0 0:01.63 migration/1
16 root 20 0 0 0 0 S 0.0 0.0 1:12.44 ksoftirqd/1
[email protected]:~$
第一部分 -- 最上部的 系统信息栏 :
第一行(top):
“00:11:04”为系统当前时刻;
“3:35”为系统启动后到现在的运作时间;
“2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;
第二行(Tasks):
“59 total”为当前系统进程总数;
“1 running”为当前运行中的进程数;
“58 sleeping”为当前处于等待状态中的进程数;
“0 stoped”为被停止的系统进程数;
“0 zombie”为被复原的进程数;
第三行(Cpus):
分别表示了 CPU 当前的使用率;
第四行(Mem):
分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;
第五行(Swap):
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
第二部分 -- 中间部分的内部命令提示栏:
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
s- 改变画面更新频率
l - 关闭或开启第一部分第一行 top 信息的表示
t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N - 以 PID 的大小的顺序排列表示进程列表(第三部分后述)
P - 以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)
M - 以内存占用率大小的顺序排列进程列表 (第三部分后述)
h - 显示帮助
n - 设置在进程列表所显示进程的数量
q - 退出 top
s -改变画面更新周期
第三部分 -- 最下部分的进程列表栏:
以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式
mpstat命令
使用命令: mpstat 1 5 可以每一秒打印一次CPU状态,共打印5次,详细参数可以查看man文档
~ # mpstat 1 5
Linux 3.10.0 ((none)) 09/12/18 _armv7l_ (1 CPU)
18:56:33 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
18:56:34 all 50.00 0.00 3.75 1.25 0.00 1.25 0.00 0.00 43.75
18:56:34 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
18:56:35 all 40.51 0.00 13.92 6.33 0.00 1.27 0.00 0.00 37.97
18:56:35 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
18:56:36 all 51.28 0.00 5.13 0.00 0.00 0.00 0.00 0.00 43.59
18:56:36 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
18:56:37 all 46.15 0.00 10.26 0.00 0.00 0.00 0.00 0.00 43.59
18:56:37 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
18:56:38 all 51.85 0.00 3.70 2.47 0.00 0.00 0.00 0.00 41.98
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
Average: all 47.98 0.00 7.32 2.02 0.00 0.51 0.00 0.00 42.17
~ #
pmap命令
可以根据进程查看进程相关信息占用的内存情况,如下所示:
$ pmap -d 24603
[email protected]:~$ pmap -d 24603
24603: -bash
Address Kbytes Mode Offset Device Mapping
0000000000400000 976 r-x-- 0000000000000000 008:00001 bash
00000000006f3000 4 r---- 00000000000f3000 008:00001 bash
00000000006f4000 36 rw--- 00000000000f4000 008:00001 bash
00000000006fd000 24 rw--- 0000000000000000 000:00000 [ anon ]
0000000001714000 1948 rw--- 0000000000000000 000:00000 [ anon ]
00007fa64e1f2000 44 r-x-- 0000000000000000 008:00001 libnss_files-2.23.so
00007fa64e1fd000 2044 ----- 000000000000b000 008:00001 libnss_files-2.23.so
00007fa64e3fc000 4 r---- 000000000000a000 008:00001 libnss_files-2.23.so
00007fa64e3fd000 4 rw--- 000000000000b000 008:00001 libnss_files-2.23.so
00007fa64e3fe000 24 rw--- 0000000000000000 000:00000 [ anon ]
00007fa64e404000 44 r-x-- 0000000000000000 008:00001 libnss_nis-2.23.so
00007fa64e40f000 2044 ----- 000000000000b000 008:00001 libnss_nis-2.23.so
00007fa64e60e000 4 r---- 000000000000a000 008:00001 libnss_nis-2.23.so
00007fa64e60f000 4 rw--- 000000000000b000 008:00001 libnss_nis-2.23.so
00007fa64e610000 88 r-x-- 0000000000000000 008:00001 libnsl-2.23.so
00007fa64e626000 2044 ----- 0000000000016000 008:00001 libnsl-2.23.so
00007fa64e825000 4 r---- 0000000000015000 008:00001 libnsl-2.23.so
00007fa64e826000 4 rw--- 0000000000016000 008:00001 libnsl-2.23.so
00007fa64e827000 8 rw--- 0000000000000000 000:00000 [ anon ]
00007fa64e829000 32 r-x-- 0000000000000000 008:00001 libnss_compat-2.23.so
00007fa64e831000 2044 ----- 0000000000008000 008:00001 libnss_compat-2.23.so
00007fa64ea30000 4 r---- 0000000000007000 008:00001 libnss_compat-2.23.so
00007fa64ea31000 4 rw--- 0000000000008000 008:00001 libnss_compat-2.23.so
00007fa64ea32000 2912 r---- 0000000000000000 008:00001 locale-archive
00007fa64ed0a000 1792 r-x-- 0000000000000000 008:00001 libc-2.23.so
00007fa64eeca000 2048 ----- 00000000001c0000 008:00001 libc-2.23.so
00007fa64f0ca000 16 r---- 00000000001c0000 008:00001 libc-2.23.so
00007fa64f0ce000 8 rw--- 00000000001c4000 008:00001 libc-2.23.so
00007fa64f0d0000 16 rw--- 0000000000000000 000:00000 [ anon ]
00007fa64f0d4000 12 r-x-- 0000000000000000 008:00001 libdl-2.23.so
00007fa64f0d7000 2044 ----- 0000000000003000 008:00001 libdl-2.23.so
00007fa64f2d6000 4 r---- 0000000000002000 008:00001 libdl-2.23.so
00007fa64f2d7000 4 rw--- 0000000000003000 008:00001 libdl-2.23.so
00007fa64f2d8000 148 r-x-- 0000000000000000 008:00001 libtinfo.so.5.9
00007fa64f2fd000 2044 ----- 0000000000025000 008:00001 libtinfo.so.5.9
00007fa64f4fc000 16 r---- 0000000000024000 008:00001 libtinfo.so.5.9
00007fa64f500000 4 rw--- 0000000000028000 008:00001 libtinfo.so.5.9
00007fa64f501000 152 r-x-- 0000000000000000 008:00001 ld-2.23.so
00007fa64f705000 16 rw--- 0000000000000000 000:00000 [ anon ]
00007fa64f71d000 28 r--s- 0000000000000000 008:00001 gconv-modules.cache
00007fa64f724000 8 rw--- 0000000000000000 000:00000 [ anon ]
00007fa64f726000 4 r---- 0000000000025000 008:00001 ld-2.23.so
00007fa64f727000 4 rw--- 0000000000026000 008:00001 ld-2.23.so
00007fa64f728000 4 rw--- 0000000000000000 000:00000 [ anon ]
00007ffcd1c34000 132 rw--- 0000000000000000 000:00000 [ stack ]
00007ffcd1d62000 8 r---- 0000000000000000 000:00000 [ anon ]
00007ffcd1d64000 8 r-x-- 0000000000000000 000:00000 [ anon ]
ffffffffff600000 4 r-x-- 0000000000000000 000:00000 [ anon ]
mapped: 22872K writeable/private: 2252K shared: 28K
ps
如下例所示:
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存
[email protected]:~$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'
PID COMMAND COMMAND %CPU RSZ VSZ STIME USER UID
1 systemd /sbin/init auto noprompt 0.0 3264 185236 Aug26 root 0
1465 smbd /usr/sbin/smbd -D 0.0 700 329808 Aug26 root 0
1468 lightdm lightdm --session-child 12 0.0 1456 230304 Aug26 root 0
1476 smbd /usr/sbin/smbd -D 0.0 1868 337920 Aug26 root 0
1516 rtkit-daemon /usr/lib/rtkit/rtkit-daemon 0.0 776 183544 Aug26 rtkit 118
1551 upowerd /usr/lib/upower/upowerd 0.0 1292 347088 Aug26 root 0
1568 colord /usr/lib/colord/colord 0.0 1508 313564 Aug26 colord 113
1583 systemd /lib/systemd/systemd --user 0.0 828 45248 Aug26 biao 1000
1586 (sd-pam) (sd-pam) 0.0 68 63316 Aug26 biao 1000
1622 gnome-keyring-d /usr/bin/gnome-keyring-daem 0.0 1064 205216 Aug26 biao 1000
1631 upstart /sbin/upstart --user 0.0 2180 46460 Aug26 biao 1000
1712 upstart-udev-br upstart-udev-bridge --daemo 0.0 812 32860 Aug26 biao 1000
1720 dbus-daemon dbus-daemon --fork --sessio 0.0 1804 43848 Aug26 biao 1000
1732 window-stack-br /usr/lib/x86_64-linux-gnu/h 0.0 856 86348 Aug26 biao 1000
1752 upstart-dbus-br upstart-dbus-bridge --daemo 0.0 344 32796 Aug26 biao 1000
1756 upstart-dbus-br upstart-dbus-bridge --daemo 0.0 116 32796 Aug26 biao 1000
1768 upstart-file-br upstart-file-bridge --daemo 0.0 840 41288 Aug26 biao 1000
1769 ibus-daemon /usr/bin/ibus-daemon --daem 0.0 1692 358328 Aug26 biao 1000
1778 gvfsd /usr/lib/gvfs/gvfsd 0.0 568 274520 Aug26 biao 1000
1793 gvfsd-fuse /usr/lib/gvfs/gvfsd-fuse /r 0.0 912 419960 Aug26 biao 1000
1804 ibus-dconf /usr/lib/ibus/ibus-dconf 0.0 1100 277544 Aug26 biao 1000
1805 ibus-ui-gtk3 /usr/lib/ibus/ibus-ui-gtk3 0.0 2028 479724 Aug26 biao 1000
1814 bamfdaemon /usr/lib/x86_64-linux-gnu/b 0.1 5032 525904 Aug26 biao 1000
1815 gpg-agent gpg-agent --homedir /home/b 0.0 160 166540 Aug26 biao 1000
1817 ibus-x11 /usr/lib/ibus/ibus-x11 --ki 0.0 2576 429916 Aug26 biao 1000
1826 at-spi-bus-laun /usr/lib/at-spi2-core/at-sp 0.0 1392 353736 Aug26 biao 1000
1835 dbus-daemon /usr/bin/dbus-daemon --conf 0.0 768 43032 Aug26 biao 1000
1838 at-spi2-registr /usr/lib/at-spi2-core/at-sp 0.0 1232 206976 Aug26 biao 1000
1850 ibus-engine-sim /usr/lib/ibus/ibus-engine-s 0.0 620 201680 Aug26 biao 1000
1851 hud-service /usr/lib/x86_64-linux-gnu/h 0.0 2140 646584 Aug26 biao 1000
1853 unity-settings- /usr/lib/unity-settings-dae 0.0 5700 928664 Aug26 biao 1000
1871 gnome-session-b /usr/lib/gnome-session/gnom 0.0 672 560568 Aug26 biao 1000
1875 unity-panel-ser /usr/lib/x86_64-linux-gnu/u 0.0 10024 640236 Aug26 biao 1000
1894 indicator-messa /usr/lib/x86_64-linux-gnu/i 0.0 1856 370080 Aug26 biao 1000
1895 indicator-bluet /usr/lib/x86_64-linux-gnu/i 0.0 1192 349052 Aug26 biao 1000
1896 indicator-power /usr/lib/x86_64-linux-gnu/i 0.0 1568 359572 Aug26 biao 1000
1897 indicator-datet /usr/lib/x86_64-linux-gnu/i 0.0 2740 1239784 Aug26 biao 1000
1898 indicator-keybo /usr/lib/x86_64-linux-gnu/i 0.0 2972 649540 Aug26 biao 1000
1901 indicator-sound /usr/lib/x86_64-linux-gnu/i 0.0 2168 749532 Aug26 biao 1000
1906 indicator-print /usr/lib/x86_64-linux-gnu/i 0.0 2668 549388 Aug26 biao 1000
1909 indicator-sessi /usr/lib/x86_64-linux-gnu/i 0.0 1976 570720 Aug26 biao 1000
1914 indicator-appli /usr/lib/x86_64-linux-gnu/i 0.0 1468 476884 Aug26 biao 1000
1936 dconf-service /usr/lib/dconf/dconf-servic 0.0 1440 178664 Aug26 biao 1000
1965 pulseaudio /usr/bin/pulseaudio --start 0.0 1372 434796 Aug26 biao 1000
1968 compiz compiz 6.2 168016 1700932 Aug26 biao 1000
1973 evolution-sourc /usr/lib/evolution/evolutio 0.0 2276 1310660 Aug26 biao 1000
2016 evolution-calen /usr/lib/evolution/evolutio 0.0 1456 869796 Aug26 biao 1000
2023 vmtoolsd /usr/bin/vmtoolsd -n vmusr 0.1 1076 503608 Aug26 biao 1000
2025 polkit-gnome-au /usr/lib/policykit-1-gnome/ 0.0 4028 639008 Aug26 biao 1000
2027 gnome-software /usr/bin/gnome-software --g 0.0 35136 1357648 Aug26 biao 1000
2028 nm-applet nm-applet 0.0 2084 665244 Aug26 biao 1000
2029 unity-fallback- /usr/lib/unity-settings-dae 0.0 2444 576876 Aug26 biao 1000
2043 nautilus nautilus -n 0.0 8368 1223100 Aug26 biao 1000
2050 fwupd /usr/lib/x86_64-linux-gnu/f 0.0 10328 635456 Aug26 root 0
2059 gvfs-udisks2-vo /usr/lib/gvfs/gvfs-udisks2- 0.0 692 296248 Aug26 biao 1000
2068 udisksd /usr/lib/udisks2/udisksd -- 0.0 3104 382264 Aug26 root 0
2076 gvfs-mtp-volume /usr/lib/gvfs/gvfs-mtp-volu 0.0 1000 259524 Aug26 biao 1000
2081 gvfs-afc-volume /usr/lib/gvfs/gvfs-afc-volu 0.0 1292 403608 Aug26 biao 1000
2096 gvfs-goa-volume /usr/lib/gvfs/gvfs-goa-volu 0.0 1084 257532 Aug26 biao 1000
2103 gvfs-gphoto2-vo /usr/lib/gvfs/gvfs-gphoto2- 0.0 924 271720 Aug26 biao 1000
2113 evolution-calen /usr/lib/evolution/evolutio 0.0 636 814620 Aug26 biao 1000
2123 evolution-addre /usr/lib/evolution/evolutio 0.0 1228 697292 Aug26 biao 1000
2125 evolution-calen /usr/lib/evolution/evolutio 0.0 1556 807076 Aug26 biao 1000
2151 evolution-addre /usr/lib/evolution/evolutio 0.0 1544 772772 Aug26 biao 1000
2183 gvfsd-trash /usr/lib/gvfs/gvfsd-trash - 0.0 764 363648 Aug26 biao 1000
2198 zeitgeist-datah zeitgeist-datahub 0.0 388 571676 Aug26 biao 1000
2208 sh /bin/sh -c /usr/lib/x86_64- 0.0 400 12528 Aug26 biao 1000
2215 zeitgeist-daemo /usr/bin/zeitgeist-daemon 0.0 1360 423504 Aug26 biao 1000
2224 zeitgeist-fts /usr/lib/x86_64-linux-gnu/z 0.0 1144 321468 Aug26 biao 1000
2271 update-notifier update-notifier 0.0 7956 526288 Aug26 biao 1000
2319 deja-dup-monito /usr/lib/x86_64-linux-gnu/d 0.0 764 441296 Aug26 biao 1000
6526 gnome-terminal- /usr/lib/gnome-terminal/gno 0.0 6928 683692 Aug26 biao 1000
6533 bash bash 0.0 612 22764 Aug26 biao 1000
8609 bash bash 0.0 580 22764 Aug26 biao 1000
13240 smbd /usr/sbin/smbd -D 0.0 12384 353060 Sep11 root 0
13642 sshd sshd: biao [priv] 0.0 740 97464 Sep11 root 0
13691 sshd sshd: [email protected]/17 0.0 960 97464 Sep11 biao 1000
13692 bash -bash 0.0 4284 25796 Sep11 biao 1000
13878 smbd /usr/sbin/smbd -D 0.0 10800 359080 Sep11 root 0
16970 python3 python3 /usr/lib/software-p 0.0 5972 201920 Sep11 root 0
16993 unity-scope-hom /usr/lib/x86_64-linux-gnu/u 0.0 1532 646992 Sep11 biao 1000
17005 unity-scope-loa /usr/bin/unity-scope-loader 0.0 2452 576120 Sep11 biao 1000
17006 unity-files-dae /usr/lib/x86_64-linux-gnu/u 0.0 1512 556848 Sep11 biao 1000
17086 gvfsd-metadata /usr/lib/gvfs/gvfsd-metadat 0.0 1336 185980 Sep11 biao 1000
18606 unity-panel-ser /usr/lib/x86_64-linux-gnu/u 0.0 8960 550668 Sep11 biao 1000
23887 cups-browsed /usr/sbin/cups-browsed 0.0 2040 274820 07:36 root 0
24552 sshd sshd: biao [priv] 0.0 5128 97464 08:20 root 0
24602 sshd sshd: [email protected]/20 0.0 3860 97464 08:20 biao 1000
24603 bash -bash 0.0 5188 22868 08:20 biao 1000
26961 kworker/0:0 [kworker/0:0] 0.0 0 0 17:25 root 0
27026 kworker/u256:2 [kworker/u256:2] 0.0 0 0 17:45 root 0
27050 kworker/1:2 [kworker/1:2] 0.0 0 0 17:51 root 0
27076 kworker/u256:0 [kworker/u256:0] 0.0 0 0 18:01 root 0
27094 kworker/0:2 [kworker/0:2] 0.0 0 0 18:05 root 0
27095 kworker/1:1 [kworker/1:1] 0.0 0 0 18:05 root 0
27143 kworker/u256:1 [kworker/u256:1] 0.0 0 0 18:13 root 0
27157 cupsd /usr/sbin/cupsd -l 0.0 7276 93236 18:16 root 0
27158 dbus /usr/lib/cups/notifier/dbus 0.0 5760 81244 18:16 lp 7
27159 dbus /usr/lib/cups/notifier/dbus 0.0 5640 81244 18:16 lp 7
27166 ps ps -e -o pid,comm,args,pcpu 0.0 3268 37364 18:17 biao 1000
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk
其中rsz为实际内存,上例实现按内存排序,由大到小
free命令
在Linux下查看内存我们一般用free命令:
[[email protected] tmp]# free
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652 2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别:
这两个的区别在于使用的角度来看,第二行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached。第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收,所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
当可用内存少于额定值的时候,就会开始进行交换,交换区的内存将被使用。
如何看额定值:
cat /proc/meminfo
[[email protected] tmp]# cat /proc/meminfo
MemTotal: 3266180 kB
MemFree: 17456 kB
Buffers: 111328 kB
Cached: 2664024 kB
SwapCached: 0 kB
Active: 467236 kB
Inactive: 2644928 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 3266180 kB
LowFree: 17456 kB
SwapTotal: 2048276 kB
SwapFree: 1968116 kB
Dirty: 8 kB
Writeback: 0 kB
Mapped: 345360 kB
Slab: 112344 kB
Committed_AS: 535292 kB
PageTables: 2340 kB
VmallocTotal: 536870911 kB
VmallocUsed: 272696 kB
VmallocChunk: 536598175 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
用free -m查看的结果:
[[email protected] tmp]# free -m
total used free shared buffers cached
Mem: 3189 3173 16 0 107 2605
-/+ buffers/cache: 460 2729
Swap: 2000 78 1921
#free -b -s5
使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。
查看/proc/kcore文件的大小(内存镜像):
[[email protected] tmp]# ll -h /proc/kcore
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore
备注:
占用内存的测量
测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
[[email protected] ~]# cat /proc/self/statm
654 57 44 0 0 334 0
输出解释
CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:
参数 解释 /proc//status
Size (pages) 任务虚拟地址空间的大小 VmSize/4
Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4
Shared(pages) 共享页数 0
Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4
Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4
Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4
dt(pages) 04
查看机器可用内存
/proc/28248/>free
total used free shared buffers cached
Mem: 1023788 926400 97388 0 134668 503688
-/+ buffers/cache: 288044 735744
Swap: 1959920 89608 1870312
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
所以 空闲内存=free+buffers+cached=total-used
文章内容来在:https://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 基础上整理而来