精华内容
下载资源
问答
  • Linux系统查看CPU使用率、内存使用率、磁盘使用率

    万次阅读 多人点赞 2019-04-16 15:17:00
    一、查看CPU使用率 1. top 命令 top命令可以看到总体的系统运行状态和cpu的使用率 。 %us:表示用户空间程序的cpu使用率(没有通过nice调度) %sy:表示系统空间的cpu使用率,主要是内核程序。 %ni:表示用户空间...

    一、查看CPU使用率

    1. top 命令

    [root@sss ~]# top
    top - 16:54:38 up 7 days,  5:13,  3 users,  load average: 0.00, 0.01, 0.05
    Tasks:  77 total,   2 running,  75 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1882232 total,   813020 free,   330164 used,   739048 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.  1386608 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                        
    17215 root       0 -20  127504  12176   9560 S  0.7  0.6  21:46.45 AliYunDun                                                                                                                                      
     2770 root      20   0  573932  17232   6088 S  0.3  0.9   1:11.38 tuned                                                                                                                                          
        1 root      20   0   43548   3844   2588 S  0.0  0.2   0:06.54 systemd                                                                                                                                        
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                       
        3 root      20   0       0      0      0 S  0.0  0.0   0:08.75 ksoftirqd/0                                                                                                                                    
        5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H              
    ... ...                                                                                                                                 
    

    top命令可以看到总体的系统运行状态和cpu的使用率 。

    %us:表示用户空间程序的cpu使用率(没有通过nice调度)
    %sy:表示系统空间的cpu使用率,主要是内核程序。
    %ni:表示用户空间且通过nice调度过的程序的cpu使用率。
    %id:空闲cpu
    %wa:cpu运行时在等待io的时间
    %hi:cpu处理硬中断的数量
    %si:cpu处理软中断的数量
    %st:被虚拟机偷走的cpu
    注:99.0 id,表示空闲CPU,即CPU未使用率,100%-99.0%=1%,即系统的cpu使用率为1%。
    

    2、vmstat

    详细使用和参数介绍参考网址

    3、sar

    sar命令语法和vmstat一样。命令不存在时需要安装sysstat包,这个包很有用。
    

    命令示例:

    例如每1秒采集一次CPU使用率,共采集5次。
    
    [root@sss ~]# sar -u 1 5
    Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)
    
    04:56:03 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    04:56:04 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
    04:56:05 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
    04:56:06 PM     all      0.99      0.00      0.99      0.00      0.00     98.02
    04:56:07 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
    04:56:08 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
    Average:        all      0.20      0.00      0.20      0.00      0.00     99.60
    

    和top一样,可以看到所有cpu的使用情况。如果需要查看某颗cpu的使用可以用-P参数。例如指定显示0号cpu 的使用情况。

    [root@sss ~]# sar -P 0 -u 1 5
    Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)
    
    04:39:13 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    04:39:14 PM       0      0.00      0.00      0.99      0.00      0.00     99.01
    04:39:15 PM       0      0.00      0.00      0.00      0.00      0.00    100.00
    04:39:16 PM       0      0.00      0.00      0.00      0.00      0.00    100.00
    04:39:17 PM       0      0.00      0.00      0.00      0.00      0.00    100.00
    04:39:18 PM       0      1.00      0.00      0.00      0.00      0.00     99.00
    Average:          0      0.20      0.00      0.20      0.00      0.00     99.60
    [root@izuf633l0ge76tv5mzalpmz ~]# 
    

    进程队列长度和平均负载状态
    例如每1秒采集一次,共采集5次。

    [root@sss ~]# sar -q 1 5  
    Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)
    
    04:40:14 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
    04:40:15 PM         0       149      0.00      0.01      0.05         0
    04:40:16 PM         0       149      0.00      0.01      0.05         0
    04:40:17 PM         0       149      0.00      0.01      0.05         0
    04:40:18 PM         1       149      0.00      0.01      0.05         0
    04:40:19 PM         1       149      0.00      0.01      0.05         0
    Average:            0       149      0.00      0.01      0.05         0
    

    输出项:

    runq-sz:运行队列的长度(等待运行的进程数)
    
    plist-sz:进程列表中进程(processes)和线程(threads)的数量
    
    ldavg-1:最后1分钟的系统平均负载(System load average)
    
    ldavg-5:过去5分钟的系统平均负载
    
    ldavg-15:过去15分钟的系统平均负载
    

    创建的平均值和上下文切换的次数
    例如每1秒收集一次,共收集5次。

    [root@sss ~]# sar -w 1 5 
    Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)
    
    04:41:39 PM    proc/s   cswch/s
    04:41:40 PM      0.00    274.26
    04:41:41 PM      0.00    277.78
    04:41:42 PM      0.00    285.00
    04:41:43 PM      0.00    280.00
    04:41:44 PM      0.00    270.00
    Average:         0.00    277.40
    

    sar命令也可以获取过去指定日期的性能参数。

    [root@sss ~]# sar -u -f /var/log/sa/sa08
    Linux 3.10.0-693.2.2.el7.x86_64 (localhost.localdomain)         04/08/2019      _x86_64_        (1 CPU)
    
    10:54:35 AM       LINUX RESTART
    
    11:00:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    11:10:01 AM     all     12.93      0.23      2.89      1.54      0.00     82.41
    11:20:01 AM     all     46.58      0.00      8.81      0.79      0.00     43.82
    11:30:01 AM     all     44.93      0.00      9.68      0.15      0.00     45.24
    11:40:02 AM     all      0.25      0.00      0.15      0.00      0.00     99.60
    11:50:01 AM     all      0.19      0.00      0.13      0.00      0.00     99.68
    12:00:01 PM     all      0.31      0.00      0.19      0.14      0.00     99.37
    ... ...
    

    4、mpstat

    这个命令也在sysstat包中,语法类似。
    cpu使用情况比sar更加详细些,也可以用-P指定某颗cpu 。
    

    例如每1秒收集一次,共5次。

    [root@sss ~]# mpstat 1 5 
    Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)
    
    04:58:01 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    04:58:02 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    04:58:03 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    04:58:04 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    04:58:05 PM  all    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
    04:58:06 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    Average:     all    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.80
    

    5、iostat

    这个命令主要用来查看io使用情况,也可以来查看cpu,个人感觉不常用。
    

    示例

    [root@sss ~]# iostat -c 1 2
    Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.26    0.00    0.21    0.01    0.00   99.53
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.00    0.00    0.00    0.00    0.00  100.00
    

    6、dstat

    每秒cpu使用率情况获取

    [root@sss ~]#  dstat -c
    ----total-cpu-usage----
    usr sys idl wai hiq siq
      0   0 100   0   0   0
      0   1  99   0   0   0
      1   0  99   0   0   0
      0   0 100   0   0   0
      0   0 100   0   0   0
      1   1  98   0   0   0
      0   0 100   0   0   0
      ... ...
    

    最占cpu的进程获取

    [root@sss ~]# dstat --top-cpu  
    -most-expensive-
      cpu process   
    AliYunDun    0.2
    AliYunDun    2.0
    mysqld       1.0
    AliYunDun    1.0
    kworker/0:1H 1.0
    AliYunDun    1.0
    AliYunDun    1.0
    AliYunDun    1.0
    

    二、查看内存使用率

    1、top命令

    top 命令查看内存使用率

    查看第四行: KiB Mem
    内存使用率: used/ total
    

    2、free命令

    free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

    1.命令格式:
    free [参数]
    
    2.命令功能:
    free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
    
    3.命令参数:
    -b  以Byte为单位显示内存使用情况。 
    
    -k  以KB为单位显示内存使用情况。 
    
    -m  以MB为单位显示内存使用情况。
    
    -g   以GB为单位显示内存使用情况。 
    
    -o  不显示缓冲区调节列。 
    
    -s<间隔秒数>  持续观察内存使用状况。 
    
    -t  显示内存总和列。 
    
    -V  显示版本信息。 
    
    4.使用实例:

    实例1:显示内存使用情况

    命令示例:

    free [-k] # 以 kb  为单位显示内存使用状况
    free -g # 以 G 为单位显示内存使用状况
    free -m # 以 M 为单位显示内存使用状况
    free -t  # 以总和的形式显示内存的使用信息
    free -s 1 # 每一秒显示内存使用情况
    

    输出:

    [root@sss ~]# free
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      331760      811004         592      739468     1384944
    Swap:             0           0           0
    
    [root@sss ~]# free -g
                  total        used        free      shared  buff/cache   available
    Mem:              1           0           0           0           0           1
    Swap:             0           0           0
    
    [root@sss ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1838         324         791           0         722        1352
    Swap:             0           0           0
    
    [root@sss ~]# free -t
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      331760      811004         592      739468     1384948
    Swap:             0           0           0
    Total:      1882232      331760      811004
    
    [root@sss ~]# free -s 1
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      331760      811004         592      739468     1384948
    Swap:             0           0           0
    
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      331784      810980         592      739468     1384924
    Swap:             0           0           0
    
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      331784      810980         592      739468     1384924
    Swap:             0           0           0
    ... ...
    

    说明–对这些数值的解释:

    total:总计物理内存的大小。
    
    used:已使用多大。
    
    free:可用有多少。
    
    Shared:多个进程共享的内存总额。
    
    Buff/cache:磁盘缓存的大小。
    

    第三行是交换分区SWAP的,也就是我们通常所说的虚拟内存。
    当可用内存少于额定值的时候,就会进行交换

    如何看额定值:

    命令:

    cat /proc/meminfo 
    

    输出:

    [root@sss ~]# cat /proc/meminfo
    MemTotal:        1882232 kB
    MemFree:          811244 kB
    MemAvailable:    1385300 kB
    Buffers:           81268 kB
    Cached:           602500 kB
    SwapCached:            0 kB
    Active:           601948 kB
    Inactive:         379880 kB
    Active(anon):     298392 kB
    Inactive(anon):      256 kB
    Active(file):     303556 kB
    Inactive(file):   379624 kB
    Unevictable:           0 kB
    Mlocked:               0 kB
    SwapTotal:             0 kB
    SwapFree:              0 kB
    Dirty:               320 kB
    Writeback:             0 kB
    AnonPages:        298052 kB
    Mapped:            47236 kB
    Shmem:               592 kB
    Slab:              55772 kB
    SReclaimable:      44076 kB
    SUnreclaim:        11696 kB
    KernelStack:        2384 kB
    PageTables:         5808 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:      941116 kB
    Committed_AS:     810896 kB
    VmallocTotal:   34359738367 kB
    VmallocUsed:       10604 kB
    VmallocChunk:   34359719676 kB
    HardwareCorrupted:     0 kB
    AnonHugePages:    237568 kB
    CmaTotal:              0 kB
    CmaFree:               0 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    DirectMap4k:       63360 kB
    DirectMap2M:     2033664 kB
    DirectMap1G:           0 kB
    

    交换将通过三个途径来减少系统中使用的物理页面的个数:

    1.减少缓冲与页面cache的大小, 
    
    2.将系统V类型的内存页面交换出去,  
    
    3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。 
    

    事实上,少量地使用swap是不是影响到系统性能的。

    那buffers和cached都是缓存,两者有什么区别呢?

    为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
    
    磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。
    
    Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。
    
    Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。
    
    简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。
    
    所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.
    
    如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。
    
    实例2:以总和的形式显示内存的使用信息

    命令:

     	free -t 
    

    输出:

    [root@sss ~]# free -t
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      331760      811004         592      739468     1384948
    Swap:             0           0           0
    Total:      1882232      331760      811004
    
    实例3:周期性的查询内存使用信息

    命令:

    free -s 10
    

    输出:

    [root@sss ~]# free -s 10
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      324924      816688         496      740620     1392280
    Swap:             0           0           0
    
                  total        used        free      shared  buff/cache   available
    Mem:        1882232      324944      816664         496      740624     1392260
    Swap:             0           0           0
    

    说明:

    每10s 执行一次命令
    

    三、查看磁盘使用率

    1、输入df命令

    [root@sss ~]# df
    

    显示详情:

    Filesystem1K-blocksUsedAvailableUse%Mounted on
    /dev/vda14115180837942443524413210%/
    devtmpfs93064409306440%/dev
    tmpfs94111609411160%/dev/shm
    tmpfs9411164689406481%/run
    tmpfs94111609411160%/sys/fs/cgroup
    tmpfs18822401882240%/run/user/0

    说明

    磁盘使用率=(Used列数据之和)/(1k-blocks列数据之和)
    

    磁盘和内存的区别与联系:

    (磁盘--也叫硬盘--或是U盘--或是移动硬盘)
    1、硬盘与内存都是存储器,一个是内部,一个是外部。
    
    2、硬盘与内存的区别是很大的,这里只谈最主要的三点:
    	1)内存是计算机的工作场所,硬盘用来存放暂时不用的信息;
    	2)内存是半导体材料制作,硬盘是磁性材料制作;
    	3)内存中的信息会随掉电而丢失,硬盘中的信息可以长久保存。
    	
    3、内存与硬盘的联系也非常密切:
    		硬盘上的信息永远是暂时不用的,要用请装入内存!
    		CPU与硬盘不发生直接的数据交换,CPU只是通过控制信号指挥硬盘工作,硬盘上的信息只有在装入内存后才能被处理。
    		
    4、计算机的启动过程就是一个从硬盘上把最常用信息装入内存的过程。
    
    5、硬盘则决定你的电脑可以装下多少东西,内存则决定你的电脑开机后一次最多可以运行多少程序(如手机运行内存)。
    
    展开全文
  • 内存使用率始终超过90%怎么办

    千次阅读 2020-10-20 19:41:44
    现象: POD内存使用率超过90% 排查焦点:是否存在内存泄露? 查看pod配置可知该pod共分配5g内存, 通过 jstate -gcutil $(pid)命令可知 1.年轻代大小是1g, 老年代大小是3g 2.年轻代频繁ygc 3.老年代目前fgc总次数是13...

    现象: POD内存使用率超过90%

    排查焦点:是否存在内存泄露?
    查看pod配置可知该pod共分配5g内存,
    通过 jstat -gcutil $(pid)命令可知
    1.年轻代大小是1g, 老年代大小是3g
    2.年轻代频繁ygc
    3.老年代目前fgc总次数是13次,当前老年代占用2g
    也就是说当前jvm中有1g内存是空闲的,换句话说jvm的fgc是有效的,并没有出现内存泄露。(如果出现则应该频繁的g
    fgc)

    pod内存使用率始终高达90%的原因是:
    jvm占用内存后就不会再释放内存了。

    随着服务运行,jvm的老年代空间逐步被使用,最终导致分配给jvm的4g内存都被使用,导致pod的内存使用率高达90%。

    jvm内存空间不足会导致fgc,虽然jvm通过fgc能成功回收大量垃圾,但是jvm并不会释放内存给操作系统,所以在pod看来该部分内存仍然被jvm占用,所以内存使用率始终比较高。

    解决方案: 增加pod内存,扩展到6g。

    展开全文
  • 指标解释:容器的内存使用率是读取物理机cgroup下面的文件的,获取的是整个容器的内存使用率并不是针对某个程序。物理机内存使用率和使用free命令计算结果是一致的。物理机和容器两者内存计算数据是独立的 解决步骤...

    零、总结:

    本次问题通过分析,由于平时70%+的内存使用率,目前达到88%是由于5个月系统未重新发布内存数据和缓存不断增加以及堆内存的增加累计达到了内存使用率的报警阀值88%。
    在这里插入图片描述

    那么平时如果出现内存使用率偏高的问题,应该如何解决呢?下面的几个步骤其实就是从硬件-》系统-》进程来由大到小解决的。
    1、由于内存分配问题(也就是我这里的问题,对应解决办法如步骤1和2),


    2019-1-21 19:57:00 更新
    在深入理解java虚拟机(第二版)周志明的第5章中有高性能硬件上的程序部署策略,有一些指引方向,当时我排查问题还没看该书。特此在这里补充下。


    2、长期持有super big对象耗内存(对应解决办法如步骤3)
    3、死锁问题(对应解决办法如步骤4)
    4、其他原因比如poll长连接或者其他导致并发线程增多的原因(对应解决办法如步骤5和6)
    5、定位某个进程的内存什么问题(如步骤7)
    6、线程具体什么代码或者什么原因导致的(如步骤8)
    对于jvm8+调优点击下面
    参考实战和指导手册

    如果你是小白码农,还没有到达码工的层级,那么可以按照如下的教程定位问题。如果依然有疑问可以关注公众号【小诚信驿站】或者加 QQ群300458205

    一、知识点了解:

    了解下硬件和系统和进程之间的关系。
    在这里插入图片描述
    1.1硬件:
    top执行命令可以得到

    Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:     73728k total,    70048k used,     3680k free,        0k buffers
    Swap:    16384k total,     4696k used,    11688k free,    64716k cached
    
    top看到的内存使用情况,有一部分是缓存,mem那行后面有个buffers ,swap那行后面有个cached,这两个就是缓存大小。所以如果要计算应用程序真正使用物理内存的情况,应该是used-cached-buffers才对,所以刚才top看到的物理内存使用情况为70048k-64716k=5332k。
    

    如果想要直接看内存使用情况可以执行 free命令 后面加个m是以M为单位显示

    free -m
    -----------
                  total       used       free     shared    buffers     cached
    Mem:            72         69          2          0          0         63
    -/+ buffers/cache:          5         66
    Swap:           16          4         11
    
    其中第一行用全局角度描述系统使用的内存状况: 
    total——总物理内存 
    used——已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存 
    free——完全未被使用的内存 
    shared——应用程序共享内存 多个进程之间共享的内存部分,比如公共库libc.so等
    buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)缓存将要放到硬盘里的数据 
    cached——缓存,缓存从硬盘读出来的数据用于已打开的文件:
    当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。 
    其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用。 
    只有当 free 减去 cached 剩下的这部分内存情况紧张时,才有可能出现应用程序没有足够内存使用的情况 
    注意-/+ buffers/cache: 5 66这行。 
    前个值表示-buffers/cache—–>不包括缓存,应用程序物理内存使用情况,即 -buffers/cache=used-buffers-cached ,所以此时应用程序才用了5M内存 。 
    后个值表示+buffers/cache—–>所有可供应用程序使用的内存大小,free加上缓存值,即+buffers/cache=free+buffers+cached ,所以此时还有接近66M 内存可供程序使用。 
    
    swap:
    交换分区、交互内存:
    
    交互分区属于硬盘空间,做为内存不足时的临时内存使用
    swap 主要的功能是当实体内存不够时,则某些在内存当中所占的程序会暂时被移动到 swap 当中,让实体内存可以被需要的程序来使用。另外,如果你的主机支持电源管理模式, 也就是说,你的 Linux 主机系统可以进入“休眠”模式的话,那么, 运行当中的程序状态则会被纪录到 swap 去,以作为“唤醒”主机的状态依据! 另外,有某些程序在运行时,本来就会利用 swap 的特性来存放一些数据段, 所以, swap 来是需要创建的!只是不需要太大!
    
    

    1.2系统:

    虚拟内存是操作系统内核为了对进程地址空间进行管理(process address space management)而精心设计的一个逻辑意义上的内存空间概念。我们程序中的指针其实都是这个虚拟内存空间中的地址。比如我们在写完一段C++程序之后都需要采用g++进行编译,这时候编译器采用的地址其实就是虚拟内存空间的地址。因为这时候程序还没有运行,何谈物理内存空间地址?凡是程序运行过程中可能需要用到的指令或者数据都必须在虚拟内存空间中。既然说虚拟内存是一个逻辑意义上(假象的)的内存空间,为了能够让程序在物理机器上运行,那么必须有一套机制可以让这些假象的虚拟内存空间映射到物理内存空间(实实在在的RAM内存条上的空间)。这其实就是操作系统中页映射表(page table)所做的事情了。内核会为系统中每一个进程维护一份相互独立的页映射表。页映射表的基本原理是将程序运行过程中需要访问的一段虚拟内存空间通过页映射表映射到一段物理内存空间上,这样CPU访问对应虚拟内存地址的时候就可以通过这种查找页映射表的机制访问物理内存上的某个对应的地址。“页(page)”是虚拟内存空间向物理内存空间映射的基本单元。
    

    1.3进程
    拿java举例
    在这里插入图片描述

    VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
    RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
    PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
    USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
    一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
    

    二、问题:

    内存使用率88%高于80%报警。

    三、原因:

    指标含义:内存使用率百分比(%)。
    指标解释:容器的内存使用率是读取物理机cgroup下面的文件的,获取的是整个容器的内存使用率并不是针对某个程序。物理机内存使用率和使用free命令计算结果是一致的。物理机和容器两者内存计算数据是独立的
    计算公式近似等于为:进程使用的(物理内存和本地内存和共享内存)、未被换出的物理内存大小,单位kb。RES=CODE+DATA

    四、解决步骤:

    用top中查看RES是操作系统角度看jvm的内存占用。
    用jmap查看的堆内存,是用jvm的角度看jvm内部程序的内存占用。
    存在差异是因为jvm有一些共享库和共享内存,被操作系统计入RES中,但未被jvm计入

    1、查看哪些应用占用内存比较大

    查看哪几个进程内存占用最高:top -c,输入大写M,以内存使用率从高到低排序
    

    在这里插入图片描述

    PID : 进程id
    PPID : 父进程id
    RUSER : Real user name
    UID : 进程所有者的用户id
    USER : 进程所有者的用户名
    GROUP : 进程所有者的组名
    TTY : 启动进程的终端名。不是从终端启动的进程则显示为 ?
    PR : 优先级
    NI : nice值。负值表示高优先级,正值表示低优先级
    P : 最后使用的CPU,仅在多CPU环境下有意义
    %CPU : 上次更新到现在的CPU时间占用百分比
    TIME : 进程使用的CPU时间总计,单位秒
    TIME+ : 进程使用的CPU时间总计,单位1/100秒
    %MEM : 进程使用的物理内存百分比
    VIRT : 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    SWAP : 进程使用的虚拟内存中,被换出的大小,单位kb。
    RES : 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    CODE : 可执行代码占用的物理内存大小,单位kb
    DATA : 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    SHR : 共享内存大小,单位kb
    nFLT : 页面错误次数
    nDRT : 最后一次写入到现在,被修改过的页面数。
    S : 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    COMMAND : 命令名/命令行
    WCHAN : 若该进程在睡眠,则显示睡眠中的系统函数名
    Flags : 任务标志,参考 sched.h
    
    默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。 更改显示内容
    通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
    按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
    按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转
    

    2、通过jmap -heap 进程id 命令排除是由于堆分配内存问题。得到如下结果

    Attaching to process ID 542287, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.20-b23
    
    using thread-local object allocation.
    Garbage-First (G1) GC with 43 thread(s)
    //堆配置信息
    Heap Configuration:
       //指定 jvm heap 在使用率小于 n 的情况下 ,heap 进行收缩 ,Xmx==Xms 的情况下无效 , 如 
       MinHeapFreeRatio         = 40
       //指定 jvm heap 在使用率大于 n 的情况下 ,heap 进行扩张 ,Xmx==Xms 的情况下无效 , 如 
       MaxHeapFreeRatio         = 70
       //最大堆空间
       MaxHeapSize              = 5393874944 (5144.0MB)
       //设置Yong Generation的初始值大小,一般情况下,不允许-XX:Newratio值小于1,即Old要比Yong大。
       NewSize                  = 1363144 (1.2999954223632812MB)
       //设置Yong Generation的最大值大小
       MaxNewSize               = 3235905536 (3086.0MB)
       OldSize                  = 5452592 (5.1999969482421875MB)
       //设置年轻代和老年代的比例,默认情况下,此选项为2
       NewRatio                 = 2
       //默认eden空间大小和survivor空间大小的比,默认情况下为8
       SurvivorRatio            = 8
       //初始化元空间大小,控制gc阀值,gc后动态增加或者降低元空间大小,默认情况下平台的不同,步长为12-20M
       MetaspaceSize            = 209715200 (200.0MB)
       //默认1G,这个参数主要是设置Klass Metaspace的大小,不过这个参数设置了也不一定起作用,前提是能开启压缩指针,假如-Xmx超过了32G,压缩指针是开启不来的。如果有Klass Metaspace,那这块内存是和Heap连着的。
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       //为类元数据分配的最大空间量
       MaxMetaspaceSize         = 536870912 (512.0MB)
       //堆内存中一个Region的大小可以通过-XX:G1HeapRegionSize参数指定,大小区间只能是1M、2M、4M、8M、16M和32M,总之是2的幂次方,如果G1HeapRegionSize为默认值,则在堆初始化时计算Region的实践大小
       G1HeapRegionSize         = 2097152 (2.0MB)
    //堆的使用信息
    Heap Usage:
    G1 Heap:
    //区域数量
       regions  = 2572
    //堆内存大小
       capacity = 5393874944 (5144.0MB)
    //已经使用了
       used     = 3216639400 (3067.62638092041MB)
    //空闲着的堆内存
       free     = 2177235544 (2076.37361907959MB)
       59.63503850933923% used
    以下同理
    G1 Young Generation:
    Eden Space:
       regions  = 425
       capacity = 2650800128 (2528.0MB)
       used     = 891289600 (850.0MB)
       free     = 1759510528 (1678.0MB)
       33.62341772151899% used
    Survivor Space:
       regions  = 1
       capacity = 2097152 (2.0MB)
       used     = 2097152 (2.0MB)
       free     = 0 (0.0MB)
       100.0% used
    G1 Old Generation:
       regions  = 1109
       capacity = 2740977664 (2614.0MB)
       used     = 2323252648 (2215.62638092041MB)
       free     = 417725016 (398.37361907958984MB)
       84.75999927009985% used
    
    35394 interned Strings occupying 3871104 bytes.
    

    截止到这里,本次问题已经找到了。因为设置的堆空间分配额比较大。将近63% =5g/8g。内存使用率计算公式为code+Data。本地内存和共享内存和可执行代码以外的部分(数据段+栈)等,当堆内存还没有达到full gc的时候,内存使用率问题就显现出来了。将内存分配最大值设为4g.并重新更新配置文件,发布应用
    在这里插入图片描述
    在这里插入图片描述
    但是这里存在一个问题,内存使用率高,刚才提到的一个情况就是堆内存接近最大值不会进行fullgc么?fullgc不就帮你回收堆空间了么?
    这是个好的问题。
    实际上他确实发生fullgc了,我们可以查到
    在这里插入图片描述
    在这里插入图片描述
    那么为什么没有解决内存使用率问题呢?而是将堆分配额重新调整之后,内存使用率才降下去。
    简单点说,就是如果你的项目需要人手10个人,你跟领导要了10个人,当项目只是第一个迭代干完了,那么你会不会立马将其中的5个人交给领导?答案是不会的,但是如果现在重新分配,领导说我就给你5个人下一个迭代你先干着,这样你就需要必须上交5个人。具体的点这里。详细的说明内存是如何管理的。


    如果上面也没有问题定位到原因,则继续按照步骤排查

    3、找到最耗内存的对象
    jmap -histo 进程ID(带上:live则表示先进行一次FGC再统计,如jmap -histo:live 进程ID)

    在这里插入图片描述
    可以看到上面最大的实例进程 将近30M。

    4、导出内存转储快照dump文件:
    4.1、通过java进程命令定位 系统进程并使用jmap工具dump文件。

    ps -ef | grep java 
    生成dump文件的命令:
    jmap -dump:format=b,file=20181218.dump 16048
    file后面的是自定义的文件名,最后的数字是进程的pid。
    

    4.2、使用jvisualvm来分析dump文件:

    jvisualvm是JDK自带的Java性能分析工具,在JDK的bin目录下,文件名就叫jvisualvm.exe。
    jvisualvm可以监控本地、远程的java进程,实时查看进程的cpu、堆、线程等参数,对java进程生成dump文件,并对dump文件进行分析。
    假设我现在下载下来的是txt文件也可以直接扔给jvisualvm来分析。
    

    在这里插入图片描述

    4.3、使用方式:直接双击打开jvisualvm.exe,点击文件->装入,在文件类型那一栏选择堆,选择要分析的dump文件,打开。

    导入文件以后界面如下图:
    在这里插入图片描述
    在这里插入图片描述

    可以看到,dump文件里记录的堆中的实例,总大小大概5392M左右,(用第一行的实例大小除以百分比就能算出来)

    4.4、现在看堆转储的线程问题

    在这里插入图片描述
    每一个部分的含义如下:
    “http-nio-1601-Acceptor-0” 线程名称
    daemon 线程的类型
    prio=5 线程的优先级别
    tid=290 线程ID
    RUNNABLE 线程当前的状态

    4.5、线程当前的状态是我们主要关注的内容。
    dump文件中描述的线程状态

    runnable:运行中状态,在虚拟机内部执行,可能已经获取到了锁,可以观察是否有locked字样。
    blocked:被阻塞并等待锁的释放。
    wating:处于等待状态,等待特定的操作被唤醒,一般停留在park(), wait(), sleep(),join() 等语句里。
    time_wating:有时限的等待另一个线程的特定操作。
    terminated:线程已经退出

    4.6、进程的区域划分

    进入区(Entry Set):等待获取对象锁,一旦对象锁释放,立即参与竞争。
    拥有区(The Owner):已经获取到锁。
    等待区(Wait Set):表示线程通过wait方法释放了对象锁,并在等待区等待被唤醒。

    4.7、方法调用修饰

    locked: 成功获取锁
    waiting to lock:还未获取到锁,在进入去等待;
    waiting on:获取到锁之后,又释放锁,在等待区等待;

    4.8、OQL(对象查询语言)
    如果需要根据某些条件来过滤或查询堆的对象,比如现在我们查询下系统中类加载器一共有几种?

    在这里插入图片描述

    4.9、引导计数
    引导类 (即 JVM 在未使用任何 java.lang.ClassLoader 实例的情况下加载的 Java 平台类) 的计数
    其余展示的与名称一样

    5、统计进程打开的句柄数:ls /proc/进程ID/fd |wc -l

    6、统计进程打开的线程数:ls /proc/进程ID/task |wc -l

    7、使用jstat查看进程的内存使用情况
    jstat [Options] vmid [interval] [count]
    Options,选项,我们一般使用 -gcutil 查看gc情况
    vmid,VM的进程号,即当前运行的java进程号
    interval,间隔时间,单位为秒或者毫秒
    count,打印次数,如果缺省则打印无数次

      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
      0.00 100.00  32.20   7.05  48.98  95.35 102490 10125.674     1   39.100 10164.775
      0.00 100.00  32.57   7.05  48.98  95.35 102490 10125.674     1   39.100 10164.775
      0.00 100.00  32.94   7.05  48.98  95.35 102490 10125.674     1   39.100 10164.775
      0.00 100.00  33.31   7.05  48.98  95.35 102490 10125.674     1   39.100 10164.775
      0.00 100.00  33.62   7.05  48.98  95.35 102490 10125.674     1   39.100 10164.775
    
     S0C:年轻代中第一个survivor(幸存区)的容量 (字节) 
    S1C:年轻代中第二个survivor(幸存区)的容量 (字节) 
    S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节) 
    S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节) 
    EC:年轻代中Eden(伊甸园)的容量 (字节) 
    EU:年轻代中Eden(伊甸园)目前已使用空间 (字节) 
    OC:Old代的容量 (字节) 
    OU:Old代目前已使用空间 (字节) 
    PC:Perm(持久代)的容量 (字节) 
    PU:Perm(持久代)目前已使用空间 (字节) 
    YGC:从应用程序启动到采样时年轻代中gc次数 
    YGCT:从应用程序启动到采样时年轻代中gc所用时间(s) 
    FGC:从应用程序启动到采样时old代(全gc)gc次数 
    FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s) 
    GCT:从应用程序启动到采样时gc用的总时间(s) 
    NGCMN:年轻代(young)中初始化(最小)的大小 (字节) 
    NGCMX:年轻代(young)的最大容量 (字节) 
    NGC:年轻代(young)中当前的容量 (字节) 
    OGCMN:old代中初始化(最小)的大小 (字节) 
    OGCMX:old代的最大容量 (字节) 
    OGC:old代当前新生成的容量 (字节) 
    PGCMN:perm代中初始化(最小)的大小 (字节) 
    PGCMX:perm代的最大容量 (字节) 
    PGC:perm代当前新生成的容量 (字节) 
    S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 
    S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 
    E:年轻代中Eden(伊甸园)已使用的占当前容量百分比 
    O:old代已使用的占当前容量百分比 
    P:perm代已使用的占当前容量百分比 
    M:元空间中已使用的占当前容量百分比
    S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节) 
    S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节) 
    ECMX:年轻代中Eden(伊甸园)的最大容量 (字节) 
    DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满) 
    TT: 持有次数限制 
    MTT : 最大持有次数限制
    
    

    8、.用jstack查看一下
    jstack pid | grep tid(线程ID) -A 30

    在这里插入图片描述

    展开全文
  • android 获取cpu使用率, 内存 实时数据

    热门讨论 2012-07-20 17:47:36
    可以获取系统的内存和可用内存,cpu的实时使用率
  • Redis 内存使用率

    千次阅读 2019-07-02 11:58:01
    used_memory:由 Redis 分配器分配的内存总量,包含了redis进程内部的开销和数据占用的内存,以字节(byte)为单位 used_memory_human:已更直观的单位展示分配的内存总量。 used_memory_rss:向操作系统申请的...

    1、Redis-cli命令行界面访问到Redis服务器

    2、输入info memory命令,返回与内存相关的数据。

     

    used_memory:由 Redis 分配器分配的内存总量,包含了redis进程内部的开销和数据占用的内存,以字节(byte)为单位

    used_memory_human:已更直观的单位展示分配的内存总量。

    used_memory_rss:向操作系统申请的内存大小。与 top 、 ps等命令的输出一致。

    used_memory_rss_human:已更直观的单位展示向操作系统申请的内存大小。

    used_memory_peak:redis的内存消耗峰值(以字节为单位)

    used_memory_peak_human:以更直观的格式返回redis的内存消耗峰值

    total_system_memory:整个系统内存

    total_system_memory_human:以更直观的格式显示整个系统内存

    used_memory_lua:Lua脚本存储占用的内存

    used_memory_lua_human:以更直观的格式显示Lua脚本存储占用的内存

    maxmemory:Redis实例的最大内存配置

    maxmemory_human:以更直观的格式显示Redis实例的最大内存配置

    maxmemory_policy:当达到maxmemory时的淘汰策略

    mem_fragmentation_ratio:碎片率,used_memory_rss/ used_memory

    mem_allocator:内存分配器

     

    当内存使用达到设置的最大阀值时,需要选择一种key的回收策略,可在Redis.conf配置文件中修改“maxmemory-policy”属性值。 Redis 淘汰策略,如下:

    • volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据。
    • volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰。
    • volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰。
    • allkeys-lru:使用LRU算法从所有数据集合中淘汰数据。
    • allkeys-random:从数据集合中任意选择数据淘汰
    • no-enviction:禁止淘汰数据。

    若是Redis数据集中的key都设置了过期时间,那么“volatile-ttl”策略是比较好的选择。但如果key在达到最大内存限制时没能够迅速过期,或者根本没有设置过期时间。那么设置为“allkeys-lru”值比较合适,它允许Redis从整个数据集中挑选最近最少使用的key进行删除(LRU淘汰算法)。

    参考:Redis性能问题排查解决手册(七)

    展开全文
  • 一、查看CPU使用率 1、top命令 在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。常用的查看CPU使用率命令为top命令。 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程...
  • 监控内存:监控内存使用率 触发报警:当使用率超过95%时,发出报警信息   1:原理 命令:free Mem total:总内存 used:程序已使用内存 free:未分配内存 shared:共享内存 buff/cache:系统缓存(buff...
  • Zabbix 监控 内存 使用率

    千次阅读 2019-08-13 10:40:04
    echo $[100*mem_used/mem_total] 2、添加监控自定义参数  cd /etc/zabbix/zabbix_agentd.d/ touch userparameter_memory.conf vi userparameter_memory.conf #内容 UserParameter=mem.usage,/etc/zabbix/...
  • 正确计算linux系统内存使用率

    万次阅读 2018-08-12 09:03:14
    图中的例子很典型,就是:多数的...具体的机制我们无需知道,我们需要知道的是,linux的内存管理机制的思想包括(不敢说就是)内存利用最大化。内核会把剩余的内存申请为cached,而cached不属于free范畴。当...
  • 内存使用率计算

    千次阅读 2018-06-17 14:59:29
    free命令和/proc/meminfo 可以查看内存使用情况1.此处使用/proc/meminfo 文件来计算内存占用#!/bin/bash # 内存占用 = (MemTotal - MemFree - Inactive) / MemTotal meminfo=$(cat /proc/meminfo) ...
  •  psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现...
  • shell脚本监控cpu/内存使用率

    万次阅读 2017-12-12 17:56:52
    该脚本检测cpu和内存使用情况,如果您觉得有用的话直接搬走就行了,不用联系我!!!#/bin/sh #auth yangxingyi 2017-12-12 17:50 #email openweixin666@126.com #this script check cpu used rate and memory used ...
  • 内存使用率过高排查步骤

    千次阅读 2019-05-21 09:42:56
    1.先查看服务器剩余内存容量 free -h ​​ 2.查看占用内存最大的10个进程: ps -aux | sort -k4nr | head -n 10 ​​ 3.查看内存占用最高的pid的线程: top -Hp <pid> ​​ 4.记录首个pid,转化成16...
  • 故障排查——内存使用率过高

    千次阅读 2019-03-10 10:48:39
    本篇将介绍服务器内存使用率过高的处理方案。 内存使用率 产生原因 排查步骤 健康范围
  • aix 查看内存使用率

    万次阅读 2018-07-20 14:17:57
    AIX: 1.查看top 10 的进程 ps aux | head -1 ;...2. 查看某进程占用内存率 ps aux | head -1 ; ps aux | grep topas(进程名) 3.查看当前内存大小:svmon -G ocs1@Route1$[/ztesoft/ocs/bin]svmon -G  ...
  • 使用Python获取本地CPU使用率和内存使用率 如果我们想利用Python来做一个脚本去获取计算机的CPU使用率和内存使用信息,我们可以使用psutil库中的一些函数来获取 from psutil import * # cpu_percent()可以获取cpu的...
  • Shell脚本监控Linux系统内存使用率

    千次阅读 2017-06-30 17:33:46
    MSG:内存high了high了!已经用了${mem}%" echo $msg /test/pymail.py $msg fi 发送邮件脚本 pymail.py 内容如下: #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import smtplib import email....
  • shell查看CPU 硬盘 内存使用率

    千次阅读 2019-06-27 09:38:04
    [root@tiger ~]# cat 1.sh ...free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }' df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}' top -bn1 |...
  • linux 计算内存使用率

    千次阅读 2014-11-08 11:54:16
    1、通过定期采集/proc文件系统内的meminfo文件来获取当前内存使用情况: proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用...
  • 【服务器】关于内存使用率的问题

    千次阅读 2017-09-11 18:22:57
    内存使用率指的是此进程所开销的内存。占内存大的程序不一定会占用很多的CPU资源,而占CPU大的程序也不一定开销太大的内存。某一程序的CPU占用率过高会影响其他程序的运行。而某一程序占用内存过大,会影响机器的...
  • Linux下内存使用率正确的算法

    万次阅读 2014-12-15 15:18:59
    Linux下各种内存的使用...linux 系统查看物理内存使用率的命令,以百分比形式输出? 回答的答案是: free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}'
  • CPU使用率低 内存使用率

    万次阅读 2016-10-10 08:34:27
    打开资源管理器一看,CPU使用率只有百分之十几,物理内存使用率却高达九十几!这是啥原因呢?之前还真没想过这个问题。现在整理一下,知道问题的来龙去脉。 首先看看进程,目前有六七十个进程在占用资源,...
  • 一、查看CPU使用率 top命令 top:time of process,查看系统当前的运行情况,查看CPU、内存、运行时间、交换分区、执行的线程等信息。 top命令是linux下常用的性能分析工具,能够实时的显示系统中各个进程中资源...
  • 获取系统的CPU使用率、内存使用率

    万次阅读 2013-07-29 15:28:22
    我们就能获取处理器的CPU使用率。(这里就不贴图了) 接下来我们看看怎么通过获取内存的使用情况,这个主要是通过WMI实现的。 ManagementClass mc = new ManagementClass("Win32_OperatingSystem")...
  • 4.2 内存使用率分析 我们在开发过程中,经常会遇到内存泄漏的问题,为了定位内存泄漏的代码位置,这时我们就可以使用Visual Studio性能探测器下内存使用率工具来对对应项目模块的代码进行内存泄漏分析。 具体操作...
  • 问题背景 有同事反映我们有个ETL服务器启动一些作业时报错,我看了下是内存溢出的问题。...我这里是看一下机器状况,有时候内存使用率高可能也伴随着cpu使用率高。如果纯粹看内存使用情况,也可以用f...
  • java获取系统CPU和内存使用率的三种方法

    千次阅读 热门讨论 2020-04-09 18:38:01
    获取系统CPU和内存的三种方法: 1、使用...准确 OperatingSystemMXBean 获取的内存数据准确,CPU差距有点大 sigar 获取的内存数据稍微有点差距,CPU相对OSMXB好一点 oshi 获取的内存数据准...
  • redis 跟踪内存使用率

    千次阅读 2017-04-12 01:00:16
    因为当Redis内存使用率超过可用内存的95%时,部分数据开始在内存与swap空间来回交换,这时就可能有丢失数据的危险。 当开启并触发快照功能时,Redis会fork一个子进程把当前内存中的数据完全复制一份写入到硬盘上。...
  • Win10内存使用率高解决方案

    千次阅读 2019-12-02 10:29:08
    最近自己的Win10机器(8G内存),每次内存使用率都到92%以上,导致PC速度巨慢。 解决方案 1、在任意位置,建立一个注册表文件,就是后缀名为reg的文件。我是在桌面建立的。 2、打开这个reg文件,输入以下内容。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 515,878
精华内容 206,351
关键字:

内存使用率100怎么办