Linux 内存监控

init进程是系统中的第一个进程,PID永远为1

查看系统在中静态进程的统计信息

命令: ps

格式: ps [可选项]

  • ax: 显示所有的进程信息
  • -u: 使用以用户为主的格式输出进程信息
  • -e: select all processes 显示系统内的进程信息
  • -l: 使用长格式显示进程信息
  • -f: full 使用完整的格式显示进程信息

ps aux命令

[[email protected] tmp]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 125568  3984 ?        Ss   Sep04   0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    Sep04   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Sep04   0:00 [ksoftirqd/0]

解析
USER: 进程所属的用户
PID: 进程id
%CPU: 进程占用CPU的百分比
%MEM: 进程占用内存的百分比
VSZ:  进程使用的虚拟内存量
RSS:  进程占用的物理内存容量
TTY: 进程在哪个终端上运行
STAT: 进程状态
START: 进程启动时间
TIME: 进程实际占用cpu的时间
COMMAND: 命令名称和参数

ps -elf命令

[[email protected] tmp]# ps -elf
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root         1     0  0  80   0 - 31392 ep_pol Sep04 ?        00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root         2     0  0  80   0 -     0 kthrea Sep04 ?        00:00:00 [kthreadd]
1 S root         3     2  0  80   0 -     0 smpboo Sep04 ?        00:00:00 [ksoftirqd/0]
1 S root         5     2  0  60 -20 -     0 worker Sep04 ?        00:00:00 [kworker/0:0H]

F : 进程的flag, 4代表使用者, super user
S : 进程的用户
PPID : 父进程
C: cpu的利用率
PRI : Priority  优先级
NI : Nice
PRI/NI : 进程被CPU执行的优先级, 值越小, 越容易被执行
ADDR: 进程内存的地址
SZ: 占用的内存大小
WCHAN: 是否正在运作
CMD: 命令名称和参数

查看动态的进程排名信息

top命令

  • P:按%CPU排序
  • M:按%MEM排序
  • 1: 多核的话, 按1,可以显示出全部CPU

空格:马上刷新

默认每三秒就刷新一次

每隔一秒刷新一次

top -d 1  

top 字段解析

top - 20:31:56 up 10 days,  5:03,  1 user,  load average: 0.00, 0.01, 0.05
 当前时间      系统运行的时间    在线人数       系统负载 : 任务队列的平均长度
# 使用w 或 uptime 可以查看到同样的信息

Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  0.0 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
total 进程总数81   正在运行1个进程  80个在休眠  0个停止了  0个僵尸进程数
3.2 us : 用户空间占用cpu百分比3.2
0.0 sy : 内核空间占用cpu的百分百
0.0 ni : 用户空间内改变过优先级的进程占用cpu的百分比
96.8 id: 空闲的cpu百分比
0.0 wa: 等待输入输出的进程占用cpu 的百分比
0.0 hi: 硬件cpu占用百分比
0.0 si: 软中断占用cpu百分比
0.0 st: 虚拟机占有cpu百分比

KiB Mem :  3880020 total,   601516 free,  1553552 used,  1724952 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2045092 avail Mem 

Mem 内存 总共3880020k 物理内存容量  空闲内存容量=601516  已经使用:used=1553552 缓存=1724952
Swap: 交换区总量0 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0  125568   3984   2628 S   0.0  0.1   0:05.14 systemd     

PID: 进程id
USER: 优先级
PR: 优先级
NI: 负数表示高优先级, 正数表示低优先级
VIRT: 进程使用的虚拟内存数
RES: 进程使用的未被换出的物理内存大小
SHR: 共享内存量
S: 进程状态
%CPU: 使用的CPU百分比
@MEN: 使用的物理内存百分比
TIME+ : 使用的CPU时间总计
COMMAND :  命令名

加入nice值后, PRI(新) = PRI(老) + nice

  • root ,可以设置的范围是 [-20 19]
  • 普通用户 ,可以设置的范围是 [0 19]

以树型结构显示各进程间的关系

命令: pstree

[[email protected] tmp]# pstree
systemd─┬─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─agetty
        ├─atd
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon
        ├─dockerd-current─┬─docker-containe───10*[{docker-containe}]
        │                 └─10*[{dockerd-current}]
        ├─irqbalance
        ├─java───49*[{java}]
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─ntpd
        ├─polkitd───6*[{polkitd}]
        ├─python
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─wrapper─┬─java───14*[{java}]
                  └─{wrapper}

进程优先级设置

  • niceness:表示进程可被执行的优先级的修正数值 ,可手工修改,与priority有关

优先级有正负之分(-20 -19)

加入nice值后 PRI(新) = PRI(老) + nice

root可以设置nice值范围(-20 - 19)

普通用户可以设置nice值范围(0- 19)

  • 用nice命令新的nice(新开启的进程)

以新的nice来启动命令

nice -10 vi &  设置nice值为10
nice --10 vi & 设置nice值为-10
  • 用renice命令设置新nice(已经存在的进程)
renice 10 15132   设置nice值为10
renice -10 15132  设置nice值为-10
renice命令。renice -n 2 -p 3432。-n,后面是优先级的值;-p,是进程号。
  • 用top命令修改进程的优先级
先输入r,然后输入pid,最后输入优先级

后台运行

需要在命令行后添加&符号

如何让 jar包后台运行?

nohup java -jar xxx.jar &

退出 exit

信号 kill

kill命令用来发送信号, 是进程间通信机制中唯一的异步通信机制

进程接收到信号后,采取其他动作,常用它杀死进程

信号值 符号 行为
2 sigint (interrupt) ctrl + c
9 sigkill (强制杀死进程) 请求终止,不能忽略
15 sigterm ( terminate终止) 请求终止 默认值
20 sigtstp (stop, 挂起进程,放到后台执行) ctrl + z

强制杀死进程

kill -9 pid

有时候直接 kill pid 却杀不掉这个进程, 说明他屏蔽了默认值

杀死终端

实现强制下线用户

pkill [选项]

  • -u: 根据进程所属的用户名,杀死进程
  • -t: 根据用户所在的终端 TTY杀死进程
[[email protected] ~]# w | grep -v "root"
14:10:10 up  6:08,  4 users,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT
teacher  tty1     -                14:04    5:34   0.16s  0.16s -bash
hack      pts/1    173.17.17.174    14:05    4:32   0.17s  0.17s -bash
[[email protected] ~]# pkill -9 -t pts/1
[[email protected] ~]# w | grep -v "root"
 14:12:22 up  6:10,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT
teacher  tty1     -                14:04    7:46   0.16s  0.16s -bash

显示物理内存和交换空间的使用情况

命令: free

-m: 用MB的形式显示内存信息
-h: human readable

[[email protected] ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.4G        636M        8.6M        1.6G        2.0G
Swap:            0B          0B          0B

从用户的角度来说,可用的空间就是 free + buff/cache
buff/cache 会随着系统负载的增大而减小, 释放掉缓存的空间,更多的IO直接针对磁盘操作,系统会变慢

内存监控

  • 系统内存信息在这个文件记录 /proc/meminfo

点击查看对这个文件所有自己字段的解释

释放内存

/proc是一个特殊文件系统,我们可以通过对它的读写操作,来作为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存

往 /proc/sys/vm/drop_caches 分别写入1, 2, 3

页面缓存(page cache)可以包含磁盘块的任何内存映射
echo 1 > /proc/sys/vm/drop_caches;

inode是表示文件的数据结构
echo 2 > /proc/sys/vm/drop_caches;

dentries是表示目录的数据结构 。
echo  3  > /proc/sys/vm/drop_caches.

原文地址:https://www.cnblogs.com/ZhuChangwu/p/11520324.html

时间: 2024-10-11 21:57:36

Linux 内存监控的相关文章

Linux内存监控与调优

首先,内存在被使用是被分为区域的 32位系统:zone_DMA ·zone_NORMAL (正常内存区域 16M) ·zone_RESRVED(用于高地址内存空间 896M) ·zone_HIGHMEM(高地址内存空间 ) 64位系统: ·zone_DMA(16G) ·zone_DMA32(4G) ·zone_normal(大于4G) 内存大页 : HugePage:大页面,在rhel 6 x64位系统上不但支持大页面而且支持使用透明大页 THP:透明大页,简单来讲就是对匿名内存的使用,不需要用

linux内存监控 free

free 命令详解: 执行命令后总共四行. 第一行: 列头 第二行: total 内存总数: 32881776 used 已经使用的内存数: 8324796 free 空闲的内存数: 24556980 shared 当前已经废弃不用,总是0 buffers: Buffer Cache内存数: 486096 cached: Page Cache内存数: 3424368 关系:total = used + free 第三行: -/+ buffers/cache的意思: -buffers/cache

Linux内存管理机制

一.首先大概了解一下计算机CPU.Cache.内存.硬盘之间的关系及区别. 1.  CPU也称为中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路, 是一台计算机的运算核心(Core)和控制核心( Control Unit).它的功能主要是解释计算机指令以及处理计算机软件中的数据.中央处理器主要由三核心部件组成,运算器.控制器和总线(BUS),运算器又主要由算术逻辑单元(ALU)和寄存器(RS)组成. 2.Cache即高速缓冲存储器,是位于CPU与主内存

Linux 性能监控 —— 磁盘 I/O

零. 前言 如果从磁盘(disk)中读取/写入数据, CPU 就会处于空闲状态, 大大浪费了这段等待时间 CPU 的计算能力. 所以SSD. 缓存. 内存. 寄存器之类的设计就是为了减少 CPU 的等待时间, 释放计算能力. 可以看出业界对磁盘 I/O 的重视, 以及磁盘 I/O 对系统的影响之大. 一.  如何查看磁盘 I/O 在 Linux 平台或者 BSD 平台下, 借助 top 命令可以清楚看到磁盘 I/O 情况. 二. 如何衡量磁盘 I/O 存在瓶颈 磁盘 I/O 是否存在瓶颈取决于当

Cgroup - Linux 内存资源管理

Hi ,我是 Zorro .这是我的微博地址,我会不定期在这里更新文章,如果你有兴趣,可以来关注我呦. 另外,我的其他联系方式: Email: [email protected] QQ: 30007147 本文PDF 在聊 cgroup 的内存限制之前,我们有必要先来讲解一下: Linux 内存管理基础知识 free 命令 无论从任何角度看, Linux 的内存管理都是一坨麻烦的事情,当然我们也可以用一堆.一片.一块.一筐来形容这个事情,但是毫无疑问,用一坨来形容它简直恰当无比.在理解它之前,我

Linux 系统监控、诊断工具-top,vmstat,iostat,iotop

1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了. 同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件.硬件层面分别寻找解决方案. 2.排查: 从 top 中可以看到 load average 偏高,%wa 很高,%us 偏低: 从上图我们大致可以推断 IO

Zabbix 3.0 监控交换机(3)--CPU、内存监控及配置Trigger

要监控交换机的CPU.内存关键在于找到正确的OID,关于怎么寻找OID请参考以下博文. http://tryrus.blog.51cto.com/10914693/1788833 看这篇博文之前请确定已对zabbix的基本操作已有了解,有不明白的地方可以看我之前写的博文. http://tryrus.blog.51cto.com/10914693/1772271 http://tryrus.blog.51cto.com/10914693/1782062 一.配置环境 CentOS 7 Linux

linux 性能监控-实用命令(摘抄)

1.TOP——Linux进程监控 top: linux 进行监控 运行时间 当前时间 当前登录用户数 cpu 内存 load average 系统负载 (1分钟 5分钟 15分钟[一般会小于1,高于5会硬性系统性能,需要详细查看进程) 2.VMSTAT——虚拟内存统计 Linux的vmstat命令用于显示虚拟内存统计,kernerl线程.磁盘.系统进程.I/O模块.中断.CPU活动等.默认情况下,需要在Linux系统上安装一个sysstat包才可以使用vmstat命令.. LSOF——列出打开的

浅谈Linux内存管理机制

经常遇到一些刚接触Linux的新手会问内存占用怎么那么多? 在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理.主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能.而Windows是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间.换句话说,每增加一