一、基本概念
1、地址
(1)逻辑地址:指由程序产生的与段相关的偏移地址部分。在C语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址。
(2)线性地址:段中的偏移地址(逻辑地址),加上相应段的基地址就生成了一个线性地址。
(3)物理地址: 放在寻址总线上的地址。
(4)虚拟地址:保护模式下段和段内偏移量组成的地址,而逻辑地址就是代码段内偏移量,或称进程的逻辑地址。
2、内存
(1) 虚拟内存:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。
(2) 物理内存:实际的内存。物理地址被分成离散的单元,成为页(page)。目前大多数系统的页面大小都为4k。
3、地址转换
Linux采用段页式管理机制,有两个部件用于地址转换:分段部件和分页部件。
(1) 分段部件:将逻辑地址转换为线性地址。分段提供了隔绝各个代码、数据和堆栈区域的机制,因此多个程序(任务)可以运行在同一个处理器上而不会互相干扰。
(2) 分页部件:将线性地址转换为物理地址(页表和页目录),若没有启用分页机制,那么线性地址直接就是物理地址。
二、相关命令
1、free命令
free命令用于显示内存状态。
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
(1)语法:
free [参数]
(2)常用参数
(3)输出项含义
free 与 available 的区别:
free 是真正尚未被使用的物理内存数量。
available 是应用程序认为可用内存数量,available = free + buffer + cache
(注:只是大概的计算方法)
Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。
Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可以干其他的事情。
简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
(4)示例
<1>显示内存使用情况: # free
linux@b109199:$ free total used free shared buff/cache available Mem: 7822340 5364752 2228236 17720 229352 2323856 Swap: 13108028 136788 12971240 1inux@b109199:~$
<2>以总和的形式显示内存的使用信息:# free -t
inux@b109199:~$free-t total used free shared buff/cache available Mem: 7822340 5385408 2207580 17720 229352 2303200 Swap : Total:209303681310802855221601367521297127615178856
<3>周期性的查询内存使用信息:# free -s 10 //每10s 执行一次命令
linux@b109199:~$free -s10 total used free shared buff/cache available Mem: 7822340 5383376 2209612 17720 229352 2305232 Swap : 13108028 136724 12971304 total used free shared buff/cache available Mem: 7822340 5285528 2307460 17720 229352 2403080 Swap: 13108028 136664 12971364
2、vmstat工具
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。它能够对系统的整体情况进行统计,无法对某个进程进行深入分析。
(1)语法:
vmstat [参数]
常用参数:
(2)输出字段说明:
vpc@vpc:~$ vmstat 2 2 procs - --memory-- -Swap-- -----io-----system--------cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 400300 247968 107152 283068 29 124 1512 1489 227 761 8 4 86 1 2 0 400300 247968 107152 283068 0 0 0 54 99 1 0990
(3)示例:
<1>每2秒执行一次vmstat,共执行6次
OOT T O 98 8T 0 0 89ETOT 190ZZ ZTPOT8 0 OOT 0 O LT 0 89ETOT 190ZZ ZTFOT8 0 0 0 0 0 0 OOT 0 0 : 8E LT O 0 0 0 89ETOT 190ZZ ZTFOT8 0 0 0 OOT O O SE T 0 0 0 89ETOT 190ZZ ZTFOT8 0 0 0 0 0 OOT O O SE 9T 0 0 0 89ETOT 79022 ZTpOT8 0 0 0 0 0 0 0 Z 968O LS OS E 99 89ETOT 190Z7 0ZFOT8 0 0 Is em pr ks sn so uT oq Tq TS qOB3 Jjnq eaIJ pdms 9 工 ndo. waISAS dems Atowaw soord 9 Z 1B1SUA #[~1utuoa1@100x]
<2>输出带时间戳的vmstat命令
DZST U8:L9:BT 20-60-ZTOZ 0 0 969 0 Z69 68T 0 0 FZZ6T Z661Z 999T89 0 0 I 0 0 LSI TZ:LS:FT Z0-60-ZTOZ 0 0 969 01ZS 99T 0 FZZ6T Z661Z 08LTE9 0 0 0 0 0 0 LSI 0Z:L9:TT Z0-60-ZT0Z 0 0 969 0 009 96T 0 0 0 FZZ6T Z6678 币0O6TE9 0 0 T 0 LSI 6T:LS:FT Z0-60-ZT0Z 0 0 P69 I PTS TLT O 0 0 ZZ6T Z664Z 8ZOZE9 0 0 I 0 LSI 8T:L9:PT ZO-60-ZT0Z O I 96E I 8L 99 S OL 0 FZZ6T Z661Z 8Z0ZE9 0 00 0 Is em pT As sn so uT 0q Tq os TS aqoeo Jjnq pdms 9 I dueisauti ndo. -w1sAS_ Arowau. soord IBISUA Jutuoarorutuoa1]
<3>输出各种事件计数器和内存的统计信息
#vmstat –s
<4>输出所有磁盘的统计信息
#vmstat –d
<5>输出以MB为单位输出统计信息
#vmstat -S M 1 5
3、iostat工具
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
(1)用法:
iostat [选项] [<时间间隔>] [<次数>]
(2)常用参数:
(3)输出字段说明:
#iostat
avg" cpu:号user 0.78名nice 0.00名system 0.05名iowait 0.01号steal 0.00号idle99.16 Device: tps Blk read/s Blk wrtn/s Blk read Blk wrtn sda 1.08 15.87 9.58 497398 300018 dm-1 dm-0 0.72 4 .22 4.87 132186 152560 0.01 0.08 0.00 2496 0 dm-2 0.83 11.36 4.71 355842 147440 sdb 0.03 1.15 0.08 35922 2560 sdc sdd dm-3 0.11 0.03 0.03 1.05 1.08 0.08 0.10 33704 32952 3152 2552 4.30 0.35 134738 11064 sde 0.03 1.11 0.09 34880 2800
cpu属性值说明:
备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲;
如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU
disk属性值说明:
(4)示例:
<1>间隔1秒,总共显示5次 #iostat 1 5 <2>每隔2秒,显示一次设备统计信息 #iostat -d 2 <3>每隔2秒显示一次sda, sdb两个设备的扩展统计信息,共输出3次 #iostat -x sda sdb 2 3