首页 > 编程知识 正文

虚拟机echo命令,linux unzip命令

时间:2023-05-06 08:59:12 阅读:135733 作者:3779

介绍

vmstat命令是虚拟内存统计信息的缩写。 最常见的是监视系统的整体情况(虚拟内存、进程、CPU ),并监视进程

首先,让我谈谈什么是虚拟内存,以及虚拟内存和物理内存的区别。

物理内存是系统硬件,是真正的内存,数据读写非常快,但内存容量非常小而且有限,它引出了虚拟内存。 虚拟内存是为了满足物理内存不足而利用磁盘空间进行虚拟化的逻辑存储器。 此磁盘空间称为交换分区(swap space )。

虚拟内存用作物理内存的扩展,如果物理内存不足,linux将使用交换空间虚拟内存。 linux内核将暂时不使用的内存块信息写入交换空间。 这将释放物理内存,该内存可用于其他用途,但如果需要使用原始内容,这些信息将从交换空间重新读取到物理内存中。

linux的内存管理采用寻呼访问机制,为了充分利用物理内存,内核根据需要自动将物理内存中不常用的数据块交换为虚拟内存,并将常用信息保存在物理内存中。

linux系统有时会执行页面交换操作,以维护尽可能多的可用物理内存。 即使不需要任何内存,linux也会显示暂时不用于交换的内存页面,从而避免交换等待时间。

Linux进行页面交换也有一个条件,即不是所有页面都在不使用时被交换为虚拟内存。 Linux内核基于“最近最常用”算法,只将不活动的页面文件交换到虚拟内存中。 虽然Linux的物理内存还很多,但有时会出现交换空间也使用较多的现象。 其实,这并不奇怪。 例如,当运行占用大量内存的进程时,需要占用大量内存资源。 此时,不活动的页面文件被交换到虚拟内存中。 但是,此后,当占用大量内存资源的进程结束并释放大量内存时,刚才交换的页面文件不会自动交换到物理内存中。 除非有此需要,否则系统当前有相当多的物理内存可用,而且还使用了交换空间。 该现象就是如上所述的现象

交换区域中的页面在使用时首先交换到物理内存中。 此时,如果没有足够的物理内存来存储这些页面,将立即交换。 因此,如果虚拟内存中没有足够的空间来存储交换页,最终可能会导致linux死机和服务器异常等问题。 linux可以在一段时间内自我恢复,但恢复后的系统几乎不再可用。

虚拟内存原理

在系统上运行的所有进程都必须用于内存,但并不是所有进程都必须始终使用系统分配的内存空间。 当执行系统所需的内存超过实际物理内存时,内核会释放部分进程使用但未使用的部分或全部物理内存,并将部分数据保存到磁盘中,直到下一次调用进程,然后释放的内存可供所需进程使用

在Linux的存储器管理中,主要通过“翻页”和“交换”进行上述的存储器调度。 分页算法将内存中最近不常用的页替换为磁盘,并将活动页保留在内存中以供进程使用。 交换技术是将整个过程而不是页面的一部分交换到磁盘中。

将页面写入磁盘的过程称为页面输出,页面从磁盘返回到内存的过程称为页面插入。 如果内核需要分页,但发现该分页不在物理内存中(因为它已经分页输出),则会发生分页错误(Page Fault )。

当系统内核发现可执行的内存越来越少时,Page-Out会释放部分物理内存。 Page-Out并不频繁发生,但是如果内核管理分页的时间超过了程序运行的时间,频繁发生Page-Out会导致系统性能急剧下降。 这时的系统已经运行非常缓慢或进入暂停状态,这种状态也叫thrashing。

命令

典型的vmstat工具由两个数值参数完成。 第一个参数是采样间隔数,单位为秒,第二个参数是采样次数。

root@ubuntu:~# vmstat 21p rocs-------memory-------swap-----io---- system-----swap ----------------------------------- - 6381954000120100#2表示每2秒采集一次服务器状态,1表示仅采集一次。参数说明

procs (进程)- r运行队列中的进程数)实际分配给cpu的进程数; 一般来说,负荷超过3时高,超过5时高,超过10时异常。 如果运行队列太大,表示CPU忙(通常CPU使用率较高-等待bio的进程(阻止的进程)数内存) -如果- swps大于使用虚拟内存的大小0,则表示计算机物理内存不足如果不是导致程序内存泄漏的原因,则必须升级内存或将占用内存的任务转移到其他计算机。 - free可用内存大小-用作缓冲区的内存大小; - cac

he 用作缓存的内存大小swap - si 每秒从交换区写到内存的大小;如果大于0,表示物理内存不够用或者内存泄漏,需要查找耗内存进程kill掉。 - so 每秒写入交换区的内存大小;如果大于0,同上。IO - bi 每秒读取块设备的块数;这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。 - bo每秒写入块设备的块数;例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。system - in 每秒CPU的中断数,包括时钟中断 - cs 每秒上下文切换数;例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。CPU - us用户进程执行时间;用户CPU时间 - sy系统进程执行时间;系统CPU时间 - id空闲时间(包括IO等待时间),中央处理器的空闲时间。以百分比表示。空闲CPU使用率;一般来说,id+us+sy=100 - wa 等待IO时间

举例

vmstat -a 2 2#-a 显示活跃和非活跃内存

vmstat -f#-f 显示从系统启动到现在的fork数量

vmstat -s# -s 显示内存相关统计信息及多种系统活动数量

vmstat -d#-d 查看磁盘读写

vmstat -p /dev/sda1#-p /dev/sda1 显示指定磁盘分区统计信息

vmstat -m#-m 查看系统的slab信息#slab:由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理#在同一个页框中如何分配小存储区,而slab可以对小对象进行分配,这样就不用为每一个对象分配页框,从而节省了空间,内核对一些小对象创建析构很频繁,slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。