物理内存

linux vmstat命令详解

北城以北 提交于 2019-12-02 03:41:47
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。在学习vmstat命令前,我们先了解一下Linux系统中关于物理内存和虚拟内存相关信息。 物理内存和虚拟内存区别: 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。 物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在 linux 下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间( Swap Space )。 作为物理内存的扩展, linux 会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时

Linux vmstat命令实战详解

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

Linux vmstat命令实战详解

不羁的心 提交于 2019-12-02 03:41:20
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---------- --

oracle11g安装客户端检查先决条件失败

白昼怎懂夜的黑 提交于 2019-12-02 02:44:34
在64bit的WIN7上安装64bit的oracle11gR2客户端,执行检查先决条件失败 一、错误信息    1、物理内存信息     预期值:?N/A     实际值:?N/A    2、可用物理内存信息(实际的物理内存是够用的)     预期值:?N/A     实际值:?N/A    3、环境变量PATH信息     预期值:?N/A     实际值:?N/A 二、错误原因   可能是操作系统未开启默认共享,导致oracle无法检查环境的可用性 三、解决办法   打开系统注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters选中Parameters,修改右边的AutoShareWks值,将0改为1,然后重启电脑,安装完成后再将值改为0    查找到一些文章说只要将C盘的默认共享设置为共享就可以了,但是实际安装还是出现一样的问题。 四、Dos设置默认共享    1、打开C盘默认共享     net share c$=c:    2、删除C盘默认共享     net share c$ /del 参考: https://jingyan.baidu.com/article/b0b63dbf058bdb4a483070f7.html 来源: https://www.cnblogs

DPDK 简介

蹲街弑〆低调 提交于 2019-12-02 00:46:06
DPDK(Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。 DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间。 Why need DPDK Where are the bottlenecks? => System calls 系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理结果返回给应用程序 => interrupt processing => switching between user space and kernel space => data copy 用户平面到内核平面数据复制 => Scheduling and content switch of user processes 用户进程的调度和内容切换 => Inefficient read/write of memory, cache miss 不够有效的内存读写,很多cache miss, Cache是用来对内存数据的缓存

一次由缺页中断引发的旅程

匆匆过客 提交于 2019-12-01 18:38:28
综述 首先,啥是页,这是针对内存来说的,现代操作系统将内存分成许许多多的 页 (逻辑上),一页的大小默认是4KB(Linux)。操作系统在运行程序时,不会一次性将程序所需的页都加载到内存中(没有这个必要)。 所以当操作系统运行程序所要用到页没有加载到 物理内存 时,就会触发一个来自CPU的 缺页 错误,操作系统捕捉到这个错误,然后将对应的页加载到物理内存中。 上面的概述涉及到几个概念:页、物理内存、中断。 页和段 除了将内存划分成页之外,其实还可以划分成段,一段内存就存放程序所需要的全部数据和指令。这种情况下是不会产生缺少数据或者指令的情况的。不过却会引发一个新的问题:内存碎片和内存不足。如下图所示: 当然也有办法解决,就是 内存交换 ,将python程序占用的256M先写到硬盘上,再从硬盘上读回内存,不过是从接着已占用的512M写。这样我们就可以空间连续的256M来加载新的程序X了。看来很完美,不需要页的 出场了,实际上大家都知道,硬盘的访问速度相比内存来说,慢了可是几个数量级。频繁的读写磁盘,性能肯定上不去的,所以才有页的出现。 异常和中断 程序不仅简单的执行指令,更多的还需要和外部的输入输出打交道。另一方面,程序在运行过程中,还会遇到各种上异常情况,比如除0,位溢出,甚至我们自己也可以让程序招聘异常 异常,其实是一个硬件和软件组合在一起的处理过程,异常的前半生:发生和捕捉

新手玩Linux ---- 从Linux From Scratch开始学习linux(二)

邮差的信 提交于 2019-12-01 18:18:43
好多新手朋友不明白Linux的分区是怎么回事,看书有时候看的一头雾水,新手么现在了解的那么复杂了反而会打击大家的学习积极性,所以大家先简单了解下就可以了,复杂的后边会慢慢在应用的时候了解到。 Linux分区这里我给大家通俗的讲一下 ---- Linux的分区结构就和WINDOWS里的目录结构基本一样,只不过WINDOWS里一个分区包含很多目录,而LINUX里一个目录就有可能就是一个分区。 上次讲到准备工作大家都做好了,那么现在我们开始学习后边的步骤,大家也知道,往硬盘上安装东西,就需要硬盘分区,因为我们是初学么,所以我们开始也不要分区分的太复杂了,就分俩个好了,一个是安装系统的主分区,一个是LINUX里必须有的swap分区(交换分区)。 这里提到SWAP分区了,就介绍下,新手一定要了解这个,这里引用百度百科内容: Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap

tmpfs详解

北城余情 提交于 2019-12-01 16:43:24
一,tmpfs介绍 1. tmpfs是一种虚拟内存文件系统,正如这个定义它最大的特点就是它的存储空间在VM里面( 什么是VM?后面介绍 ) 2. VM是由linux内核里面的vm子系统管理的东西,现在大多数操作系统都采用了虚拟内存管理机制 VM介绍 1.linux下面VM(virtual memory)的大小由 RM(Real Memory) 和 swap 组成 2.RM的大小就是物理内存的大小,而Swap的大小是由你自己决定的。Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,我们为什么需要Swap呢?当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。 如果你有足够大的物理内存,根本不需要划分Swap分区。 通过上面的说明,你该知道tmpfs使用的存储空间VM是什么了吧? 前面说过VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size ofSwap)。但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。 二,怎样使用tmpfs呢? #mount -t tmpfs -o size=20m

Android OutOfMemoryError异常解决方法

人走茶凉 提交于 2019-12-01 16:30:37
java.lang.OutOfMemoryError异常解决方法 原因: 常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过多重复的对象实体; 4.使用的第三方软件中的BUG; 5.启动参数内存值设定的过小; 常见错误提示: 1.tomcat:java.lang.OutOfMemoryError: PermGen space 2.tomcat:java.lang.OutOfMemoryError: Java heap space 3.weblogic:Root cause of ServletException java.lang.OutOfMemoryError 4.resin:java.lang.OutOfMemoryError 5.java:java.lang.OutOfMemoryError 解决; 1.应用服务器提示错误的解决: 把启动参数内存值设置足够大。 2.Java代码导致错误的解决: 重点排查以下几点: 1)检查代码中是否有死循环或递归调用。 2)检查是否有大循环重复产生新对象实体。 3)检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前

内存管理

本小妞迷上赌 提交于 2019-12-01 13:20:26
内存 内存使用: 将程序放到内存中,PC指向开始地址,然后取指执行。 物理内存: 实际内存。 虚拟内存: 1. 每一个运行的进程,都会获得一个内存地址空间,这就是所谓的虚拟内存。 2. 这里面的所有地址都是虚拟的,和物理内存并不直接挂钩。 3. 这些虚拟地址所映射到的实际地址,可以是物理内存地址,也可以是页面文件的地址。 4. 如果物理内存小于这个虚拟地址的范围, 使用的时候可以将内存数据写入页面文件,通过清空内存数据,以提高物理内存的利用效率。 页面文件: 硬盘上的一块空间,在Windows下表现为一个文件。 这个页面文件存在的意义就是在物理内存被占用满以后, 将物理内存中的东西移动到硬盘上,腾出物理内存给需要的应用程序来使用。 内存管理 内存管理和虚拟内存管理: 内存管理包括: 程序装入等概念、 交换技术、 连续分配管理方式、 非连续分配管理方式(分页、分段、段页式)。 虚拟内存管理包括: 虚拟内存概念、 请求分页管理方式、 页面置换算法、页 面分配策略、 工作集、 抖动。 程序装入和链接 编译: 由编译程序将用户源代码编译成若干个目标模块。 链接: 由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块。 装入: 由装入程序将装入模块装入内存运行。 重定向(修改程序中的相对地址): 1. 编译时重定位的程序只能放在内存固定位置 2.