欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux查看CPU和内存使用情况(top mpstat pmap free ps命令使用)

程序员文章站 2022-07-12 19:11:43
...

    在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    基础上整理而来