1. linux内存系统
维基网络——虚拟内存定义
All about Linux swap space
Linux将物理RAM (Random Access Memory) 划分为称为页面的内存块。交换是将一页内存复制到硬盘上的预配置空间(称为交换空间)以释放改内存页面上的过程。物理内存和交换空间的组合就是可用的虚拟内存量。
虚拟内存的那点事儿
进程是与其他进程共享CPU和内存资源的。为了有效的管理内存并减少出错,现代操作系统提供了一种对主存的抽象概念,即:虚拟内存( Virtual Memory )。 虚拟内存为每个进程提供一个一致的,私有的地址空间,每个进程拥有一片连续完整的内存空间。
正如 维基网络 所说,虚拟内存不只是“使用硬盘空间来扩展内存”的技术。 虚拟内存的重要意义是它定义了一个连续的虚拟地址空间, 使得程序编写难度降低。并且, 把内存扩展到硬盘空间只是使用虚拟内存的必然结果,虚拟内存空间会存在硬盘中,并且会被全部放入内存中缓冲(按需),有的操作系统还会在内存不够的情况下,将一进程的内存全部放入硬盘空间中,并在切换到进程时再从硬盘读取 (这也是Windows会经常假死的原因...)。
虚拟内存主要提供了如下三个重要的能力:
内存通常被组织为一个由M个连续的字节大小的单元组成的数组。每个字节都有一个唯一的物理地址 (Physical Address PA) ,作为到数组的索引。
CPU访问内存最简单直接的方法就是使用物理地址,这种寻址方式称为 物理寻址 。
现代计算机使用的是一种被称为虚拟寻址 (Virtual Addressing) 的寻址方式。 使用虚拟寻址,CPU需要将虚拟地址翻译成物理地址,这样才能访问到真实的物理内存。
虚拟寻址需要硬件与操作系统之间相互合作。 CPU中含有一个被称为内存管理单元 (Memory Management Unit,MMU) 的硬件,它的功能是将虚拟地址转换称为物理地址,MMU需要借助存放在内存中的 页表 来动态翻译虚拟地址,该页表由操作系统管理。
分页表是一种数据结构,它用于计算机操作系统中虚拟内存系统,其存储了虚拟地址到物理地址之间的映射。虚拟地址在访问进程中是唯一的,而物理地址在硬件(比如内存)中是唯一的。
在操作系统中使用 虚拟内存 ,每个进程会认为使用一块大的连续的内存,事实上,每个进程的内存散布在 物理内存 的不同区域。或者可能被调出到备份存储中(一般是硬盘)。当一个进程请求自己的内存,操作系统负责把程序生成的虚拟地址,映射到实际存储的物理内存上。操作系统在 分页表 中存储虚拟地址到物理地址的映射。每个映射被称为 分页表项(page table entry ,PTE) 。
在一个简单的地址空间方案中,由虚拟地址寻址的页与物理内存中的帧之间的关系。物理内存可以包含属于许多进程的页。如果不经常使用,或者物理内存已满,可以将页面分页到磁盘。在上图中,并非所有页面都在物理内存中。
虚拟地址到物理地址的转换(即虚拟内存的管理)、内存保护、CPU高速缓存的控制。
现代的内存管理单元是以 页 的方式,分割虚拟地址空间(处理器使用的地址范围)的;页的大小是2的n次方,通常为几KB(字节)。地址尾部的n位(页大小的2的次方数)作为页内的偏移量保持不变。其余的地址位(address)为(虚拟)页号。
内存管理单元通常借助一种叫做转译旁观缓冲器(Translation Lookaside Buffer,TLB)和相联高速缓存来将虚拟页号转换为物理页号。当后备缓冲器中没有转换记录时,则使用一种较慢的机制,其中包括专用硬件的数据结构或软件辅助手段。这个数据结构称为 分页表 ,页表中的数据叫做 分页表项 (page table entry PTE)。物理页号结合页偏移量便提供了完整的物理地址。
页表 或 转换后备缓冲器数据项应该包括的信息有:
有时候,TLB和PTE会 禁止对虚拟页访问 ,这可能是因为没有RAM与虚拟页相关联。如果是这种情况,MMU将向CPU发出页错误的信号,操作系统将进行处理,也许会寻找RAM的空白帧,同时建立一个新的PTE将之映射到所请求的虚拟地址。如果没有空闲的RAM,可能必须关闭一个已经存在的页面,使用一些替换算法,将之保存到磁盘中(这被称为页面调度)。
当需要将虚拟地址转换为物理地址时,首先搜索TLB,如果找到匹配(TLB)命中,则返回物理地址并继续存储器访问。然而,如果没有匹配(称为TLB未命中),则MMU或操作系统TLB未命中处理器通常会查找 页表 中的地址映射以查看是否存在映射(页面遍历),如果存在,则将其写回TLB(这必须完成,因为硬件通过虚拟存储器系统中的TLB访问存储器),并且重启错误指令(这也可以并行发生)。此后续转换找到TLB命中,并且内存访问将继续。
虚拟地址到物理地址的转换过程,如果虚拟内存不存在与TLB,转换会被重置并通过分页表和硬件寻找。
通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问有效,那么 操作系统会尝试将相关的分页从硬盘上的虚拟内存文件调入内存。 而如果访问是不被允许的,那么操作系统通常会结束相关的进程。
虽然叫做“页缺失”错误,但实际上这并不一定是一种错误。而且这一机制是利用虚拟内存来增加程序可用内存空间。
发生这种情况的可能性:
当原程序再次需要该页内的数据时,如果这一页确实没有被分配出去,那么系统只需要重新为该页在MMU内注册映射即可。
操作系统需要:
硬性页缺失导致的性能损失是很大的。
另外,有些操作系统会将程序的一部分延迟到需要使用的时候再加载入内存执行,以此提升性能。这一特性也是通过捕获硬性页缺失达到的。
当硬性页缺失过于频繁发生时,称发生 系统颠簸。
具体动作与所使用的操作系统有关,比如Windows会使用异常机制向程序报告,而类Unix系统则使用信号机制。
尽管在整个运行过程中,程序引用不同的页面总数(也就是虚拟内存大小)可能超出了物理存储器(DRAM)总大小,但是程序常常在较小的活动页面上活动,这个集合叫做工作集或者常驻集。在工作集被缓存后,对它的反复调用会使程序命中提高,从而提高性能。
大部分的程序都可以在存储器获取数据和读取中达到稳定的状态,当程序达到稳定状态时,存储器的使用量通常都不会太大。虚拟内存虽然可以有效率控制存储器的使用, 但是大量的页缺失还是造成了系统迟缓的主要因素。 当工作集的大小超过物理存储器大小,程序将会发生一种不幸的情况,这种情况称为 “颠簸” ,页面将不停的写入、释放、读取,由于大量的丢失(而非命中)而损失极大性能。用户可以增加随机存取存储器的大小或是减少同时在系统里运行程序的数量来降低系统颠簸的记录。
推荐阅读:
操作系统--分页(一)
操作系统实现(二):分页和物理内存管理
2. linux 如何查看硬盘大小,内存大小等系统信息及硬件信息
一、linux CPU大小x0dx0a[root@idc ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"x0dx0amodel name: Intel(R) Xeon(TM) CPU 2.80GHzx0dx0amodel name: Intel(R) Xeon(TM) CPU 2.80GHzx0dx0amodel name: Intel(R) Xeon(TM) CPU 2.80GHzx0dx0amodel name: Intel(R) Xeon(TM) CPU 2.80GHzx0dx0aphysical id : 0x0dx0aphysical id : 0x0dx0aphysical id : 3x0dx0aphysical id : 3x0dx0a[root@idc ~]#x0dx0ax0dx0a说明:Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu,在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。x0dx0a其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到. flags 如果有 ht 说明支持超线程技术 判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPUx0dx0a可以看到上面,这台机器有两个双核的CPU,ID分别是0和3,大小是2.8G。x0dx0a二、内存大小x0dx0a[root@xbidc ~]# cat /proc/meminfo |grep MemTotalx0dx0aMemTotal: 1034612 kBx0dx0a[root@xbidc ~]# x0dx0ax0dx0a三、硬盘大小x0dx0a[root@xbidc ~]# fdisk -l |grep Diskx0dx0aDisk /dev/sda: 300.0 GB, 300000000000 bytesx0dx0a[root@xbidc ~]#x0dx0ax0dx0a四、 更多查看linux硬件信息的方法x0dx0auname -a # 查看内核/操作系统/CPU信息的linux系统信息命令x0dx0ahead -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母Lx0dx0acat /proc/cpuinfo # 查看CPU信息的linux系统信息命令x0dx0ahostname # 查看计算机名的linux系统信息命令x0dx0alspci -tv # 列出所有PCI设备x0dx0alsusb -tv # 列出所有USB设备的linux系统信息命令x0dx0alsmod # 列出加载的内核模块x0dx0aenv # 查看环境变量资源x0dx0afree -m # 查看内存使用量和交换区使用量x0dx0adf -h # 查看各分区使用情况x0dx0a -sh # 查看指定目录的大小x0dx0agrep MemTotal /proc/meminfo # 查看内存总量x0dx0agrep MemFree /proc/meminfo # 查看空闲内存量x0dx0auptime # 查看系统运行时间、用户数、负载x0dx0acat /proc/loadavg # 查看系统负载磁盘和分区x0dx0amount | column -t # 查看挂接的分区状态x0dx0afdisk -l # 查看所有分区x0dx0aswapon -s # 查看所有交换分区x0dx0ahdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)x0dx0admesg | grep IDE # 查看启动时IDE设备检测状况网络x0dx0aifconfig # 查看所有网络接口的属性x0dx0aiptables -L # 查看防火墙设置x0dx0aroute -n # 查看路由表x0dx0anetstat -lntp # 查看所有监听端口x0dx0anetstat -antp # 查看所有已经建立的连接x0dx0anetstat -s # 查看网络统计信息进程x0dx0aps -ef # 查看所有进程x0dx0atop # 实时显示进程状态用户x0dx0aw # 查看活动用户x0dx0aid # 查看指定用户信息x0dx0alast # 查看用户登录日志x0dx0acut -d: -f1 /etc/passwd # 查看系统所有用户x0dx0acut -d: -f1 /etc/group # 查看系统所有组x0dx0acrontab -l # 查看当前用户的计划任务服务x0dx0achkconfig _list # 列出所有系统服务x0dx0achkconfig _list | grep on # 列出所有启动的系统服务程序x0dx0arpm -qa # 查看所有安装的软件包x0dx0acat /proc/cpuinfo :查看CPU相关参数的linux系统命令x0dx0acat /proc/partitions :查看linux硬盘和分区信息的系统信息命令x0dx0acat /proc/meminfo :查看linux系统内存信息的linux系统命令x0dx0acat /proc/version :查看版本,类似uname -rx0dx0acat /proc/ioports :查看设备io端口x0dx0acat /proc/interrupts :查看中断x0dx0acat /proc/pci :查看pci设备的信息x0dx0acat /proc/swaps :查看所有swap分区的信息
3. Linux可以看设备内存和闪存吗
当然可以。
方法:
工具/原料:
Linux version 3.19.0-15-generic Ubuntu 4.9.2-10ubuntu13
方法/步骤
1/4分步阅读
第一种方法:/proc/meminfo
>> /proc文件夹中的meminfo文件可以提供内存信息。
2/4
>> cd /proc 进入/proc文件夹
3/4
>> dir可以看到该文件夹中的meminfo文件
4/4
>> more meminfo查看该文件的内容。
PS:Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
4. Linux服务器硬件情况的查看
1、首先是对于CPU的说明
服务器CPU性能参数主要信息可以通过查看 /proc/cpuinfo 获得。具体查看指令及效果如下:
显示这台服务器上有2个物理CPU
显示这台服务器的物理核数为16个
显示运行模式为64位
显示为Intel(R) Xeon(R) Gold 6226R CPU @ 2.90GHz
命令:
显示此服务器的线程数为64
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
1.命令格式:
top [参数]
2.命令功能:
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
3.命令参数:
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
4.使用实例:
实例1:通过 Top 命令显示进程信息
命令:
统计信息区:
前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。
第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:
10:38:58 — 当前系统时间
up 39 days, 19:47 — 系统已经运行了39天19小时47分钟(在这期间系统没有重启过的吆!)
1 users — 当前有1个用户登录系统
load average: 0.00, 0.00, 0.00 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行,Tasks — 任务(进程),具体信息说明如下:
系统现在共有769个进程,其中处于运行中的有1个,463个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行,cpu状态信息,具体属性说明如下:
0.0%us — 用户空间占用CPU的百分比。
0.0% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
100.0% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
备注:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!
第四行,内存状态,具体信息如下:
65600012k total — 物理内存总量
1785256k used — 使用中的内存总量
62385920k free — 空闲内存总量
1428836k buffers — 缓存的内存量
第五行,swap交换分区信息,具体信息说明如下:
2097148k total — 交换区总量
918340k used — 使用的交换区总量
1178808k free — 空闲交换区总量
备注:
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行,空行。
第七行以下:各进程(任务)的状态监控,项目列信息说明如下:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
或者通过 free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
命令:
显示我当前的服务器的物理内存是62G,其中交换内存是2个G,一共剩余是60G的
三、查看Linux内核当前的系统版本号
命令:
显示的当前的服务器Linux内核是Ubuntu系统,版本号是18.04.6
5. 在linux 下怎么查看服务器的cpu和内存的硬件信息
可以按照如下方式进行操作:
一、查看cpu总个数方法:
1、首先执行top命令,如下图中内容所表示。
2、在top命令的显示界面,按数字键1,即可查看到当前系统中的总cpu数,如下图中内容所表示。
二、查看总内存的方法:
1、free命令主要用于显示内存数量,如下图中内容所表示。
2、一般使用free命令的-h参数,更人性化的显示,如下图中内容所表示。
linux通用命令:
1、date:
2、stty-a:可以查看或者打印控制字符(Ctrl-C,Ctrl-D,Ctrl-Z等)
3、passwd:(用passwd-h查看)
4、logout,login:登录shell的登录和注销命令
5、pwd:printworkingdirectory
6、more,less,headtail:显示或部分显示文件内容.
7、lp/lpstat/cancel,lpr/lpq/lprm:打印文件.
8、更改文件权限:chmo+x...
9、删除非空目录:rm-frdir
10、拷贝目录:cp-Rdir
6. Linux系统的基本配置要求是什么
Linux系统最低配置:
CPU:700MHz;
内存:384MB;
硬盘:6GB剩余空间;
显卡:800x600以上分辨率。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
https://imgcdn.idongde.com/qa/2020/06/28/14/1593326438419354
(6)linux内存硬件扩展阅读:
Linux主要特性:
1、完全免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
2、多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
3、良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
4、支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
参考资料来源:网络-linux
7. linux怎么看内存型号
Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。下面是我带来的关于linux怎么看内存型号的内容,欢迎阅读!
linux怎么看内存型号:
在linux查看内存型号的命令
$ sudo dmidecode -t memory
# dmidecode 2.9
SM BIOS 2.4 present.
Handle 0x000A, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 4 GB
Error Information Handle: No Error
Number Of Devices: 2
Handle 0x000B, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x000A
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 1024 MB
Form Factor: SODIMM
Set: None
Locator: DIMM #1
Bank Locator: Not Specified
Type: DDR2
Type Detail: Synchronous
Speed: 800 MHz (1.2 ns)
Manufacturer: A-Data Technology
Serial Number: 00000000
Asset Tag: Not Specified
Part Number: ADOVF1A083FE
Handle 0x000C, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x000A
Error Information Handle: No Error
Total Width: 64 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: SODIMM
Set: None
Locator: DIMM #2
Bank Locator: Not Specified
Type: DDR2
Type Detail: Synchronous
Speed: 800 MHz (1.2 ns)
Manufacturer: A-Data Technology
Serial Number: 00000000
Asset Tag: Not Specified
Part Number: ADOVF1B163G2G
think in coding
相关 阅读推荐 :
EDO内存被SDRAM所取代有其必然性,因为,市场上主流CPU的主频已高达2G赫兹,未来CPU的主频还会越来越高。但由于传统内存条的读写速度远远跟不上CPU的速度,迫使CPU插入等待指令周期,从而大大降低了电脑的整体性能。为了缓解这个内存瓶颈的问题,我们就必须采用新的内存结构,即SDRAM。因为,从理论上说,SDRAM与CPU频率同步,共享一个时钟周期。
SDRAM内含两个交错的存储阵列,当CPU从一个存储阵列访问数据的同时,另一个已准备好读写数据,通过两个存储阵列的紧密切换,读取效率得到成倍提高。最新的SDRAM的存储速度已高达5纳秒,所以,SDRAM已成为内存发展的主流。
当然,EDO内存也并没有完全举手投降,相反,内存条凭借其出色的视频特性和低廉的价格,在显示内存等领域仍是连连得手,众多低档显卡更是无一例外地采用EDO内存。另外,许多硬盘、光驱和打印机也是采用EDO缓存,可见,EDO内存还真是宝刀不老啊!
RAM有些像教室里的黑板,上课时老师不断地往黑板上面写东西,下课以后全部擦除。RAM要求每时每刻都不断地供电,否则数据会丢失。如果在关闭电源以后RAM中的数据也不丢失就好了,这样就可以在每一次开机时都保证电脑处于上一次关机的状态,而不必每次都重新启动电脑,重新打开应用程序了。
但是RAM要求不断的电源供应,那有没有办法解决这个问题呢?随着技术的进步,人们想到了一个办法,即给RAM供应少量的电源保持RAM的数据不丢失,这就是电脑的待机功能,特别在Win2000里这个功能得到了很好的应用,休眠时电源处于连接状态,但是耗费少量的电能。
按内存条的接口形式,常见内存条有两种:单列直插内存条(SIMM),和双列直插内存条(DIMM)。SIMM内存条分为30线,72线两种。DIMM内存条与SIMM内存条相比引脚增加到168线。DIMM可单条使用,不同容量可混合使用,SIMM必须成对使用。
看了linux怎么看内存型号 文章 内容的人还看:
1. Linux使用dmidecode命令查看内存型号
2. linux怎么查看内存
3. linux如何查看内存大小
4. linux查询物理内存的方法有哪些
5. Linux内核访问用户空间内存的方法是什么
6. linux查看多个cpu信息
7. 用linux查看每个CPU的使用率
8. win7如何查内存型号
9. 详解Linux系统内存知识及调优方案
10. linux怎么看内存大小
8. linux中物理内存和虚拟内存
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。在学习vmstat命令前,我们先了解一下Linux系统中关于物理内存和虚拟内存相关信息。
物理内存和虚拟内存区别:
我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。
物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。
作为物理内存的扩展,linux会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。
linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。
要深入了解linux内存运行机制,需要知道下面提到的几个方面:
首先,Linux系统会不时的进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面。这可以避免等待交换所需的时间。
其次,linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存,linux内核根据”最近最经常使用“算法,仅仅将一些不经常使用的页面文件交换到虚拟内存,有时我们会看到这么一个现象:linux物理内存还有很多,但是交换空间也使用了很多。其实,这并不奇怪,例如,一个占用很大内存的进程运行时,需要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来这个占用很多内存资源的进程结束并释放了很多内存时,刚才被交换出去的页面文件并不会自动的交换进物理内存,除非有这个必要,那么此刻系统物理内存就会空闲很多,同时交换空间也在被使用,就出现了刚才所说的现象了。关于这点,不用担心什么,只要知道是怎么一回事就可以了。
最后,交换空间的页面在使用时会首先被交换到物理内存,如果此时没有足够的物理内存来容纳这些页面,它们又会被马上交换出去,如此以来,虚拟内存中可能没有足够空间来存储这些交换页面,最终会导致linux出现假死机、服务异常等问题,linux虽然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。
因此,合理规划和设计linux内存的使用,是非常重要的。
虚拟内存原理:
在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。
分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。
当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。
总结:物理内存就是硬件提供的真实的内存,比如我们电脑内存不够了,就会加一个内存条
虚拟内存就是从磁盘上虚拟出来的一块逻辑内存,用做虚拟内存的磁盘空间被称为交换空间(Swap Space
经常使用的文件会优先放在物理内存,不经常使用的文件会放到虚拟内存里面。
9. Linux系统下查看服务器硬件信息
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看 操作系统 版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# -sh <目录名> # 查看指定目录亩陆的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听神耐信端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
用户
# w 游轮 # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录 日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服务
# chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
查看网卡型号
[[email protected]]# lspci | grep Ethernet
00:19.0 Ethernet controller: Intel Corporation 82567V-2 Gigabit Network Connection
查看内存和cpu最直接最常用的命令:
[[email protected]]# free
total used free shared buffers cached
Mem: 3069504 528876 2540628 0 76648 396152
-/+ buffers/cache: 56076 3013428
Swap: 5124692 0 5124692
[[email protected]]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Pentium(R) Dual-Core CPU E6500 @ 2.93GHz
stepping : 10
cpu MHz : 1596.000
cache size : 2048 KB
查看硬盘信息(查看硬盘型号和硬盘序列号):
[[email protected]]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 2.0G 272M 1.6G 15% /
/dev/sda8 199G 188M 189G 1% /home
/dev/sda3 9.7G 1.3G 7.9G 15% /usr
/dev/sda2 9.7G 198M 9.0G 3% /var
/dev/sda1 99M 17M 77M 18% /boot
方法1:
[[email protected]]# hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG HE253GJ , FwRev=1AJ30001, SerialNo= S2B5J90ZC12060
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=?16?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: unknown: ATA/ATAPI-0 ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7
* signifies the current active mode
方法2:
[[email protected]]# dmesg | grep ATA
ata1: SATA max UDMA/133 cmd 0xf190 ctl 0xf180 bmdma 0xf150 irq 185
ata2: SATA max UDMA/133 cmd 0xf170 ctl 0xf160 bmdma 0xf158 irq 185
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ATA-8: SAMSUNG HE253GJ, 1AJ30001, max UDMA/133
ata2: SATA link down (SStatus 0 SControl 300)
Vendor: ATA Model: SAMSUNG HE253GJ Rev: 1AJ3
ata3: SATA max UDMA/133 cmd 0xf130 ctl 0xf120 bmdma 0xf0f0 irq 185
ata4: SATA max UDMA/133 cmd 0xf110 ctl 0xf100 bmdma 0xf0f8 irq 185
ata3: SATA link down (SStatus 0 SControl 300)
ata4: SATA link down (SStatus 0 SControl 300)
ata5: PATA max UDMA/100 cmd 0xe040 ctl 0xe030 bmdma 0xe000 irq 177
[[email protected]]# dmidecode|more
# dmidecode 2.10
SMBIOS 2.4 present.
57 structures occupying 2318 bytes.
Table at 0x000E84B0.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Intel Corp.
Version: GTG4310H.86A.0019.2009.0625.1334
Release Date: 06/25/2009
.....
System Information 服务器品牌
Manufacturer:
Proct Name: (没有信息表示非品牌或未识别)
Version:
Serial Number:
UUID: 889BD67E-8D96-11DE-AC40-0013D4D9C9E8
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information 主板型号/主板信息
Manufacturer: Intel Corporation
Proct Name: DG43GT
Version: AAE62768-300
Serial Number: BTGT9340022N
Processor Information CPU信息/CPU型号/CPU主频
Socket Designation: PROCESSOR
Type: Central Processor
Family: Pentium D
Manufacturer: Intel(R) Corp.
ID: 7A 06 01 00 FF FB EB BF
Signature: Type 0, Family 6, Model 23, Stepping 10
Version: Pentium(R) Dual-Core CPU E6500 @ 2.93GHz
Voltage: 1.2 V
External Clock: 266 MHz
Max Speed: 4000 MHz
Current Speed: 2931 MHz
Status: Populated, Enabled
Upgrade: Socket LGA775
Cache Information 硬件和CPU缓存情况
Socket Designation: L1-Cache
Configuration: Enabled, Not Socketed, Level 1
Operational Mode: Write Back
Location: Internal
Installed Size: 32 kB
Maximum Size: 32 kB
BIOS Language Information BIOS语言
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1
Physical Memory Array 主板最大支持内存
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 16 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x002C, DMI type 19, 15 bytes
Memory Array Mapped Address 目前的内存
Starting Address: 0x00000000000
Ending Address: 0x000FFFFFFFF
Range Size: 4 GB
Physical Array Handle: 0x002B
Partition Width: 0
On Board Device Information 显卡型号
Type: Video
Status: Enabled
Description: Intelr GMA X4500 Video Device
如何确定品牌服务器,不受到忽悠(某日我们买了一台dell品牌服务器,如何确定没有被忽悠呢?):
[[email protected]]# dmidecode|more (如果能看到dell的型号,就可以肯定没错了)
Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Dell Inc.
Proct Name: PowerEdge T110
Version: Not Specified
Serial Number: J47RBP1
UUID: 4C4C4544-0034-3710-8052-CAC04F425031
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified
Handle 0x0200, DMI type 2, 9 bytes
Base Board Information
Manufacturer: Dell Inc.
Proct Name: 0V52N7
Version: A02
Serial Number: ..CN708210CD0166.
Asset Tag: Not Specified
Handle 0x0300, DMI type 3, 21 bytes
Chassis Information
Manufacturer: Dell Inc.
Type: Main Server Chassis
Lock: Present
Version: Not Specified
Serial Number: J47RBP1