物理内存

Linux查看CPU和内存使用情况

隐身守侯 提交于 2020-01-22 12:22:38
Linux查看CPU和内存使用情况 top命令   top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。   运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。    内容解释: 第一行(top):   15:24:36 系统当前时刻   14 days 系统启动后到现在的运作时间   3 users 当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目   load average 当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程 第二行(Tasks):   288 total 当前系统进程总数   1 running 当前运行中的进程数   287 sleeping 当前处于等待状态中的进程数   0 stoped 被停止的系统进程数   0 zombie 僵尸进程数 第三行(Cpus):   7.3% us 用户空间占用CPU百分比  

关于进程内存磁盘的一些命令

筅森魡賤 提交于 2020-01-21 16:17:43
df命令 功能是用来检查linux服务器的文件系统的磁盘空间占用情况 df -ha 【-a 显示所有】    free命令 显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存注:cat /proc/meminfo 其实 free 命令中的信息都来自于 /proc/meminfo 文件free 如果加上 -h 选项,输出的结果会友好很多 有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数: 输出简介 Mem 行(第二行)是内存的使用情况。 Swap 行(第三行)是交换空间的使用情况。 total 列显示系统总的可用物理内存和交换空间大小。 used 列显示已经被使用的物理内存和交换空间。 free 列显示还有多少物理内存和交换空间可用使用。 shared 列显示被共享使用的物理内存大小。 buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。 available 列显示还可以被应用程序使用的物理内存大小。 详见https://www.cnblogs.com/ultranms/p/9254160.html top命令 显示cpu占用情况    ps命令 查看当前系统中运行的进程信息 一般格式: ps 【选项】 说明: ps命令是查看进程状态的最常用的命令,它提供关于进程的许多信息

linux --监控系统性能 vmstat

微笑、不失礼 提交于 2020-01-21 03:45:39
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如: root@ubuntu:~# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2表示每个两秒采集一次服务器状态,1表示只采集一次。 实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如: root@ubuntu:~# vmstat 2 procs -----------memory---------- --

Linux中的free命令

流过昼夜 提交于 2020-01-20 21:20:08
解释一下Linux上free命令的输出。   下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 15402628 FO[3][2] = 12033012 free的输出一共有四行,第四行为交换区的信息,分别是交换的总量(total),使用量(used)和有多少空闲的交换区(free),这个比较清楚,不说太多。   free输出地第二行和第三行是比较让人迷惑的。这两行都是说明内存使用情况的。第一列是总量(total),第二列是使用量(used),第三列是可用量(free)。   第一行的输出时从操作系统(OS)来看的。也就是说,从OS的角度来看,计算机上一共有: 15402628KB(缺省时free的单位为KB)物理内存,即FO[2][1]; 在这些物理内存中有15318812KB(即FO[2][2])被使用了; 还用83816KB(即FO[2][3])是可用的; 这里得到第一个等式: FO[2][1] = FO[2][2] + FO[2][3] FO[2][4]表示被几个进程共享的内存的,现在已经deprecated,其值总是0(当然在一些系统上也可能不是0,主要取决于free命令是怎么实现的)。 FO[2][5]表示被OS buffer住的内存。FO[2][6

Linux free命令详解

蓝咒 提交于 2020-01-20 21:15:17
前段时间有个项目的用C写的,性能测试时发现内存泄露问题。关于怎么观察内存使用问题,free是很好用的一个命令。 参数讲解 bash-3.00$ free total used free shared buffers cached Mem: 1572988 1509260 63728 0 62800 277888 -/+ buffers/cache: 1168572 404416 Swap: 2096472 16628 2079844 Mem:表示物理内存统计 total:表示物理内存总量(total = used + free) used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。 free:未被分配的内存。 shared:共享内存,一般系统不会用到,这里也不讨论。 buffers:系统分配但未被使用的buffers 数量。 cached:系统分配但未被使用的cache 数量。 -/+ buffers/cache:表示物理内存的缓存统计 used2:也就是第一行中的used – buffers-cached 也是实际使用的内存总量。 //used2为第二行 free2= buffers1 + cached1 + free1 //free2为第二行、buffers1等为第一行 free2:未被使用的buffers 与cache

Linux free命令详解

浪子不回头ぞ 提交于 2020-01-20 20:45:11
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等 命  令: free 功能说明:显示内存状态。 语  法: free [-bkmotV][-s <间隔秒数>] 补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。 参  数:  -b  以Byte为单位显示内存使用情况。  -k  以KB为单位显示内存使用情况。  -m  以MB为单位显示内存使用情况。  -o  不显示缓冲区调节列。  -s<间隔秒数>  持续观察内存使用状况。  -t  显示内存总和列。  -V  显示版本信息。 如果内存不足,可以增加swap交换分区. 具体方法请参考: [root@test]# mkdir -p /u01/swap [root@test]# dd if=/dev/zero of=/u01/swap/swap bs=1024 count=2048000 2048000+0 records in 2048000+0 records out [root@test]# mkswap /u01/swap/swap Setting up swapspace version 1, size = 2097147 kB [root@test]# swapon /u01/swap

Linux的内存管理

荒凉一梦 提交于 2020-01-20 20:42:16
Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile. 所以才经常要跟一帮人吵着说Pagefile的大小,以及如何分配这个问题,在Linux大家就不用再吵什么swap大小的问题,我个人认为,swap设个512M已经足够了,如果你问说512M的SWAP不够用怎么办?只能说大哥你还是加内存吧,要不就检查你的应用,是不是真的出现了memory leak. 夜也深了,就不再说废话了。 在Linux下查看内存我们一般用command free [root@nonamelinux ~]# free total used free shared buffers cached Mem: 386024 377116 8908 0 21280 155468 -/+ buffers/cache: 200368 185656 Swap: 393552 0 393552 下面是对这些数值的解释: 第二行(mem): total:总计物理内存的大小。 used:已使用多大。 free:可用有多少。 Shared:多个进程共享的内存总额。 Buffers/cached:磁盘缓存的大小。 第三行(-/+ buffers/cached): used:已使用多大。 free

计算机操作系统-内存管理

老子叫甜甜 提交于 2020-01-20 10:27:13
虚拟内存 虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 分页系统地址映射 内存管理单元(MMU)管理着地址空间和物理内存的转换,其中的页表(Page table)存储着页(程序地址空间)和页框(物理内存空间)的映射表。 一个虚拟地址分成两个部分,一部分存储页面号,一部分存储偏移量。 下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1)

linux内存真实使用机制

 ̄綄美尐妖づ 提交于 2020-01-19 13:28:16
今天有人告诉我说linux服务器上的内存快不够用了,128G的内存,马上要用光了。我吓了一跳,这台服务器上的应用现在负载很小啊,怎么利用率会很高呢。先用ZABBIX看了下,内存剩余空间还是很大的,还有117G的空余啊。然后又登陆到服务器上用再看下: [oracle@dsj-sjk1 ~ ]$ top top - 11 : 41 : 03 up 415 days, 1 : 06 , 2 users, load average: 0.17 , 0.12 , 0.28 Tasks: 847 total, 1 running, 846 sleeping, 0 stopped, 0 zombie Cpu(s): 1.0 %us, 0.7 %sy, 0.0 %ni, 98.3 %id, 0.0 %wa, 0.0 %hi, 0.0 %si, 0.0 % st Mem: 132035736k total, 130251764k used, 1783972k free, 679012k buffers Swap: 16777212k total, 448004k used, 16329208k free, 120309904k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 48069 oracle 20 0 59 .1g

频繁分配释放内存导致的性能问题的分析

和自甴很熟 提交于 2020-01-18 06:37:13
频繁分配释放内存导致的性能问题的分析 现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。 初步分析 majflt代表major fault,中文名叫大错误,minflt代表minor fault,中文名叫小错误。 这两个数值表示一个进程自启动以来所发生的缺页中断的次数。 当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 检查要访问的虚拟地址是否合法 查找/分配一个物理页 填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 此进程minflt如此之高,一秒10000多次,不得不怀疑它跟进程内核态cpu消耗大有很大关系。 分析代码 查看代码,发现是这么写的:一个请求来,用malloc分配2M内存,请求结束后free这块内存。看日志,发现分配内存语句耗时10us,平均一条请求处理耗时1000us 。 原因已找到! 虽然分配内存语句的耗时在一条处理请求中耗时比重不大,但是这条语句严重影响了性能