使用内存文件系统后系统内存统计方法

【问题描述】

在Linux系统中,内存可以分出一部分空间作为磁盘来使用,称为Ramdisk。这部分内存空间具有高速读写  www.ahlinux.com

特性,可以存储那些对磁盘IO要求较高的数据,显著的提升系统的服务性能。

Ramdisk分为两种,一种是固定空间大小的空间,跟硬盘分区完全一样,可以格式化并挂载使用;一种是以

内存文件系统tmpfs的形式出现,可以根据需要扩充和缩小。这两种使用方式在kernel 2.4之后都得到了支

持。

在使用tmpfs时,因为不是一次分配,且对内存分配的形式比较模糊,使得怎样计算系统整体内存使用情况

成为一个问题。

【观察和解决】

在使用ubuntu系统时,对使用Ramdisk的形式做了简单测试,发现在使用和不使用Ramdisk的时候有奇怪

的问题发生。具体如下:

内存分区无数据时的情况如下,

[email protected]:~# free -m

total       used       free     shared    buffers     cached

Mem:          3851       2222       1629          0         63        847

-/+ buffers/cache:       1310       2540

Swap:         1925          0       1925

[email protected]:~# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       125G  4.9G  114G   5% /

udev            1.9G  4.0K  1.9G   1% /dev

tmpfs           771M  888K  770M   1% /run

none            5.0M     0  5.0M   0% /run/lock

none            1.9G  7.4M  1.9G   1% /run/shm

向内存分区写入1G数据时的情况如下,

[email protected]:/run/shm# dd if=/dev/zero ibs=1M count=1024 of=./test.img

1024+0 records in

2097152+0 records out

1073741824 bytes (1.1 GB) copied, 2.22898 s, 482 MB/s

[email protected]:/run/shm# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       125G  4.9G  114G   5% /

udev            1.9G  4.0K  1.9G   1% /dev

tmpfs           771M  888K  770M   1% /run

none            5.0M     0  5.0M   0% /run/lock

none            1.9G  1.1G  895M  54% /run/shm

[email protected]:/run/shm# free -m

total       used       free     shared    buffers     cached

Mem:          3851       3245        605          0         64       1871

-/+ buffers/cache:       1309       2541

Swap:         1925          0       1925

前后数据对比发现主要增加的是cached数据的统计量,而实际使用的内存1309几乎和之前没有变化。可以

大概认为向内存分区中写入的数据实际是增大了cached的统计量。为了进一步说明这个情况,可以释放掉系统

的cached数据

[email protected]:/run/shm# sync; echo "3" > /proc/sys/vm/drop_caches

[email protected]:/run/shm# free -m

total       used       free     shared    buffers     cached

Mem:          3851       2694       1156          0          0       1401

-/+ buffers/cache:       1292       2558

Swap:         1925          0       1925

由于/run/shm分区中实际存储了1.1G的数据,cached并没有被完全使用,可以说明存放到内存分区的

数据实际是在cached的统计数据中。

最后释放掉内存分区的数据并清理系统缓存后的情况如下

[email protected]:/run/shm# rm -fr test.img

[email protected]:/run/shm# free -m

total       used       free     shared    buffers     cached

Mem:          3851       1676       2174          0          7        370

-/+ buffers/cache:       1297       2553

Swap:         1925          0       1925

[email protected]:/run/shm# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       125G  4.9G  114G   5% /

udev            1.9G  4.0K  1.9G   1% /dev

tmpfs           771M  888K  770M   1% /run

none            5.0M     0  5.0M   0% /run/lock

none            1.9G  7.4M  1.9G   1% /run/shm

至此,可以发现,在使用内存分区的系统中,实际使用的内存数据,应该是free -m获得使用内存情况加

上内存区中的数据量,这才是系统真正使用的内存量。

【总结】

在使用内存文件系统存储数据的系统中,分析内存时要充分的考虑内存文件系统的数据用量,进而准确的

给出系统所使用内存的情况,整体把握系统的资源情况,为进一步的系统分析做准备。

时间: 2024-11-11 03:09:46

使用内存文件系统后系统内存统计方法的相关文章

平坦内存模式、分段内存模式、实地址模式

IA-32处理器平台允许3种不同的访问系统内存的方法: (1)平坦内存模式 (2)分段内存模式 (3)实地址模式 平坦内存模式把全部系统内存表示为连续的地址空间.所有指令.数据和堆栈都包含在相同的地址空间中.通过称为线性地址(linear address)的特定地址访问每个内存位置. 分段内存模式把系统内存划分为独立段的组,通过位于段寄存器中的指针进行引用.每个段用于包含特定类型的数据.一个段用于包含指令码,另一个段用于包含数据元素,第三个段用于包含程序堆栈. 段中的内存位置是通过逻辑地址定义的

C# WinForm应用程序降低系统内存占用方法总结

这篇文章主要介绍了C# WinForm应用程序降低系统内存占用方法总结,本文总结了9个方法,同时给出了一个定期清理执行垃圾回收代码,需要的朋友可以参考下 背景: 微软的 .NET FRAMEWORK 现在可谓如火如荼了.但是,.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,其主要原因是因为.NET程序在启动时,是需要由JIT动态编译并加载的,这个加载会把所有需要的资源都加载进来,很多资

Python - 统计系统内存练习

统计系统内存,然后查看到占用了多少百分比. 字符串的方法: a.startswith()   返回的是一个bool(布尔)值. a.split()  切分空格和制表符,然后返回的是一个列表. #!/usr/bin/python #coding:utf8 with open('/proc/meminfo') as fd:     for line in fd:         if line.startswith('MemTotal'):             total = int(line.

linux 下查看系统内存使用情况的方法

在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux 下查看内存使用情况的free命令: [[email protected] tmp]# free total used free shared buffers cached Mem: 3266180 3250004 16176 0 110652 2668236 -/+ buffers/cache: 471116 2795064 Swap: 2048276

C# WinForm应用程序降低系统内存占用方法总结【转】

WinForm程序点用一直是个大问题,时间运行长了,越来越大,最近在网上发现个贴,试了上面方法,从进程来看,内存确实降下去了,效果还不错. 这里整理了一些网上关于Winform如何降低系统内存占用的资料,供参考: 1.使用性能测试工具dotTrace 3.0,它能够计算出你程序中那些代码占用内存较多2.强制垃圾回收3.多dispose,close4.用timer,每几秒钟调用:SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle,

使用Python统计Linux系统内存

写得比较简单,支持-m -g -k选项 #!/usr/bin/python #*-*coding:utf8*-* """适用于在/proc/meminfo中提供了可用内存MemAvailable的系统使用""" from optparse import OptionParser import sys parser = OptionParser() parser.add_option("-k",                 

spark中使用的内存文件系统-Tachyon FS 简介

转自:http://blog.csdn.net/u014252240/article/details/41810849 发布人:南京大学PASA大数据实验室顾荣 1. Tachyon是什么 Tachyon(/'t?ki:??n/ 意为超光速粒子)是以内存为中心的分布式文件系统,拥有高性能和容错能力,能够为集群框架(如Spark.MapReduce)提供可靠的内存级速度的文件共享服务.Tachyon诞生于UC Berkeley的AMPLab,由该实验室的李浩源童鞋初创.2012年12月,Tachy

Spark入门实战系列--10.分布式内存文件系统Tachyon介绍及安装部署

1 Tachyon介绍 1.1 Tachyon简介 随着实时计算的需求日益增多,分布式内存计算也持续升温,怎样将海量数据近乎实时地处理,或者说怎样把离线批处理的速度再提升到一个新的高度是当前研究的重点.近年来,内存的吞吐量成指数倍增长,而磁盘的吞吐量增长缓慢,那么将原有计算框架中文件落地磁盘替换为文件落地内存,也是提高效率的优化点. 目前已经使用基于内存计算的分布式计算框架有:Spark.Impala及SAP的HANA等.但是其中不乏一些还是有文件落地磁盘的操作,如果能让这些落地磁盘的操作全部落

摘:Windows系统内存计数器理解解析_备忘录_51Testing软件测试网...

[原创]Windows系统内存计数器理解解析 2008-05-13 11:42:23 / 个人分类:性能测试 说明:本文的计数器以Windows2003为准. 序言;F9n)\%V1a6Z C)?ZV0内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统的性能.本文主要是描述内存的一些概念.计数器含义,以及可能存在的性能瓶颈.4Cd%l3r(T&z y051Testing软件测试网xi[8VP?r?Q?a一些概念f2c(qDw-y&{l01Vu7t|%D} r5e