`
newslxw
  • 浏览: 213972 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一篇很好的linux下内存,IO解析文章

 
阅读更多

http://note.sdo.com/u/seeeyou/n/y8Wvx~jT5gpywE00Q000iR

 

 

内存

1.2.1 内存基础

通常包含物理内存和虚拟内存(virtual Memory ),好处是通过物理内存(RAM) 和部分硬盘空间(SWAP )组合增大了总体的内存空间,坏处是由于硬盘部分的虚拟内存的性能有限,并且RAMSWAP 之间交换增加了系统的负担。 

1.  [phoenix.lif@aliadmin036158 ~]$ free  

2.               total       used       free     shared    buffers     cached  

3.  Mem:        7680000      7504764       175236            0       490772      3193856   

4.  -/+ buffers/cache:     3820136      3859864   

5.  Swap:       2096472           88      2096384   

其中,Mem  

(1) Total 为总的物理内存;

(2) Used 表示总计分配给缓存使用的数量(即bufferscache ,但可能部分还未实际使用);

(3)Free 表示未被分配的内存;

(4)share 表示共享内存,一般不会使用;

(5)buffers :表示系统分配但未被使用的buffers 数量;

(6)Cached :表示系统分配但未被使用的cache 数量。后面详细说明buffercache 的区别。

-/+ buffers/cache:

(1)Used 表示实际使用的bufferscache 总量,即实际使用内存总量;

(2)Free 未被使用的buffercache 及未被分配的内存之和,即系统可用内存。

Swap:  虚拟内存。如果系统物理内存用完了,但是仍有虚拟内存系统仍然可以运行虽然运行很慢;但是如果Swap 也用完了,系统就会发生错误,通常会出现"application is out of memory" 的错误,严重时造成系统死锁。通常Swap 空间分配为物理内存的2-2.5 倍,但也不用完全按照这个标准,如确定内存完全够用也没必要分配太多,我们线上的服务器就没有分配太多的Swap 空间。

tips:

实际可用内存:Free(-/+ buffers/cache) = Free(Mem)+buffers(Mem)+Cached(Mem);

已分配内存:Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)

物理内存总大小:totalMem = used(-/+ buffers/cache) + free(-/+ buffers/cache)

1.2.2 Buffers & Cache

Linux 的实现中,文件 Cache 分为两个层面,一是 Page Cache ,另一个 Buffer Cache ,每一个 Page Cache 包含若干 Buffer Cache 。内存管理系统和 VFS 只与 Page Cache 交互,内存管理系统负责维护每项 Page Cache 的分配和回收。buffer cache 是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk 的缓冲区。

磁盘操作有逻辑级(文件系统)和物理级(磁盘块),这两种缓存分别是缓存逻辑和物理级数据的。如我们进行的是文件系统操作,那么文件被缓存到Page Cache ,如需要刷新文件的时候,Page Cache 将交给Buffer Cache 去完成,因为Buffer Cache 是缓存磁盘块的。即直接去操作文件就是使用Page Cache ,用dd 等命令直接操作磁盘块,就是buffer cache 缓存。

分享到:
评论

相关推荐

    Linux内存IO

    ### Linux内存IO培训知识点概述 #### 一、Linux内存管理基础 ##### 1.1 Linux的内核空间&用户空间 - **概念介绍**:在Linux操作系统中,进程的4GB地址空间被划分为两大部分——用户空间和内核空间。这种划分的主要...

    linux下IO口驱动

    总之,Linux下的IO口驱动涉及硬件接口抽象、内存映射、权限管理等多个方面。通过理解这些机制,开发者可以有效地控制硬件设备,实现各种功能。在实际项目中,正确、安全地操作IO口是确保系统稳定运行的关键。

    linux 系统cpu、内存、IO等监控脚本

    linux系统cpu、内存、IO等监控脚本 可以用作定时任务执行监控

    实例解析linux的IO编程

    ### 实例解析Linux的IO编程 #### Linux标准IO与文件IO概述 在深入探讨Linux的IO编程之前,我们需要先理解Linux中的两种基本IO概念:标准IO(Standard I/O)和文件IO(File I/O)。这两种IO机制在Linux系统中扮演着...

    Linux下RapidIO子系统的分析与实现.pdf

    综上所述,Linux下的RapidIO子系统分析与实现是一个涉及硬件抽象、协议解析、设备驱动开发等多个方面的复杂过程。理解和掌握这些知识对于开发高效、可靠的嵌入式系统至关重要,特别是在需要高速通信和低延迟的场景下...

    linux内核访问外设IO内存方法

    在Linux操作系统中,内核与硬件设备交互是通过设备驱动程序实现的,而访问外设的输入/输出(I/O)内存...通过理解这些概念和技术,开发者可以更好地编写设备驱动,优化系统性能,确保硬件设备在Linux环境下的稳定运行。

    linux中查看io的相关命令

    Linux 中查看 IO 相关命令 Linux 操作系统中,查看 IO 状态的命令非常重要,特别是在服务器出现异常情况时。以下是查看 Linux 服务器硬盘 IO 访问负荷的方法: 1. 使用 Top 命令 Top 命令可以显示当前系统的实时...

    Linux下IO读写工具abu-1.0

    `abu-1.0`是一个专为Linux设计的I/O读写工具,旨在提供类似`ru`和`adu`的功能,以辅助程序员进行更便捷的调试和性能分析。 `ru`(run time)和`adu`(average disk utilization)是经典的Linux系统监控工具。`ru`...

    Linux IO数据通道我理解

    在Linux系统中,输入/输出(IO)数据通道的处理是一个复杂的过程,涉及到多个层次的协作与交互。了解这些层次及其工作原理对于深入理解Linux系统的IO机制至关重要。 1. **用户空间层**:应用程序通过标准的系统调用...

    linux IO 字符形操作

    嵌入式开发板通常运行的是Linux操作系统,而且很多嵌入式系统都会有存储介质(如SD卡、eMMC等),因此可以使用标准的Linux IO函数进行操作。当把编译好的程序下载到嵌入式开发板上时,同样可以执行标准的字符型操作...

    漫谈linux文件IO

    本文旨在全面、深入地探讨 Linux 文件 I/O 的各个方面,并尝试用通俗易懂的方式阐述这些概念,以帮助读者更好地理解如何优化和提高文件 I/O 性能。 #### 二、文件 I/O 的层次结构 Linux 文件 I/O 设计采用了分层...

    IO端口和IO内存详解

    几乎每一种外设都是通过读写设备上的寄存器来进行...CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。

    linux 标准IO——学生信息管理

    在Linux操作系统中,标准输入/输出(Standard Input/Output,简称标准IO)是系统提供的一种基本I/O模型,用于程序与外部设备之间的数据传输。在这个案例中,我们关注的是如何利用标准IO进行学生信息的管理。`ls_stu....

    linux下IO口驱动(2)

    本文将深入探讨"Linux下IO口驱动(2)"的主题,主要关注如何实现对IO口的控制,使其能自由地输出任意电平。 一、Linux I/O模型 在Linux系统中,I/O操作有多种模型,包括同步I/O、异步I/O(AIO)、中断驱动I/O、DMA...

    基于Linux的RapidIO技术.pdf

    【基于Linux的RapidIO技术】深入解析 RapidIO是一种高速互连技术,最初由摩托罗拉(现飞思卡尔半导体)开发,主要用于嵌入式系统,特别是电信级设备,如4G LTE的eNodeB设备。RapidIO提供了一个基于消息的接口,能够...

    Linux系统设计-linux 系统资源监控库,监控进程占用的CPU、内存、磁盘IO、网络IO

    Linux系统是一个免费使用和自由传播的类Unix操作系统,基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统,Linux是许多企业...

    Linux文件IO操作

    ### Linux文件IO操作详解 #### 基本概念 Linux 文件 I/O 操作是学习 Linux 应用开发的基础,尤其对于初学者来说至关重要。本文旨在详细介绍 Linux 下的文件 I/O 操作及其相关概念。 #### 文件 在 Linux 系统中,...

    draw.io画图工具 for linux(12.6.5)

    draw.io是跨平台、轻量级的画图工具。软件虽小功能强大。ubuntu、debian、linux mint 可用。visio能做的都能做,支持从visio导入。虽是开源软件,但github下载基本是不可能了,好不容易拿到,补充上传吧。

    GPIO.rar_GPIO_GPIO linux _Linux IO_io_linux gpio

    标题中的"GPIO.rar_GPIO_GPIO linux_Linux IO_io_linux gpio"表明这是一个关于Linux GPIO驱动程序的资源包,主要涉及Linux系统下的GPIO读写操作。 在Linux中,GPIO的操作通常需要通过内核驱动来实现。Linux提供了...

Global site tag (gtag.js) - Google Analytics