当前位置: 首页 > 编程日记 > 正文

linux ramdisk与tmpfs的深入分析

一)ramdisk

1)概念

ramdisk就是指使用一部分内存空间来模拟硬盘分区,也就是说ramdisk是一个块设备,要用mkfs格式化,才能真正使用它.

.ramdisk在内核2.0/2.2版本就已经支持.
.ramdisk设备是它不允许重新声明它的内存空间,所以ramdisk块通常会一直占用空间的内存直到系统重启.
.ramdisk的一个缺点是在它上面创建一个文件系统,它同时会消耗缓冲区高速缓存和文件系统缓存,理论上,它可以消耗一个磁盘文件的两倍随机内存.
.ramdisk的另一个缺点是它大小固定,之后不能改变
.现在大多数需要RAM临时存储的应用程序会使用tmpfs文件系统而不是ramdisk设备.


2)ramdisk的应用

2.1)查看当前系统的ramdisk

[root@test1 ~]# ls -l /dev/ram*
lrwxrwxrwx 1 root root     4 Feb  6 13:51 /dev/ram -> ram1
brw-r----- 1 root disk 1,  0 Feb  6 13:50 /dev/ram0
brw-r----- 1 root disk 1,  1 Feb  6 13:50 /dev/ram1
brw-r----- 1 root disk 1, 10 Feb  6 13:50 /dev/ram10
brw-r----- 1 root disk 1, 11 Feb  6 13:50 /dev/ram11
brw-r----- 1 root disk 1, 12 Feb  6 13:50 /dev/ram12
brw-r----- 1 root disk 1, 13 Feb  6 13:50 /dev/ram13
brw-r----- 1 root disk 1, 14 Feb  6 13:50 /dev/ram14
brw-r----- 1 root disk 1, 15 Feb  6 13:50 /dev/ram15
brw-r----- 1 root disk 1,  2 Feb  6 13:50 /dev/ram2
brw-r----- 1 root disk 1,  3 Feb  6 13:50 /dev/ram3
brw-r----- 1 root disk 1,  4 Feb  6 13:50 /dev/ram4
brw-r----- 1 root disk 1,  5 Feb  6 13:50 /dev/ram5
brw-r----- 1 root disk 1,  6 Feb  6 13:50 /dev/ram6
brw-r----- 1 root disk 1,  7 Feb  6 13:50 /dev/ram7
brw-r----- 1 root disk 1,  8 Feb  6 13:50 /dev/ram8
brw-r----- 1 root disk 1,  9 Feb  6 13:50 /dev/ram9
lrwxrwxrwx 1 root root     4 Feb  6 13:51 /dev/ramdisk -> ram0


2.2)ramdisk的应用实例

2.2.1)格式化/dev/ram0
mkfs -t ext2 /dev/ram0

2.2.2)挂载/dev/ram0 到 /tmp/ramdisk0
mkdir /tmp/ramdisk0
mount /dev/ram0 /tmp/ramdisk0

2.2.3)查看当前挂载的情况
df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 252M     0  252M   0% /dev/shm
/dev/ram0              16M   24K   15M   1% /tmp/ramdisk0

二)tmpfs

1)概念:

tmpfs是一种基于内存的文件系统,也可以使用swap分区来存储.tmpfs是一个文件系统,并不是块设备,只要安装它,就可以使用了.

.tmpfs在存储时不需要块设备.
.tmpfs文件系统的数据完全存放在文件系统的缓存中.也可以是交换存储.
.可以在得到高速RAM硬盘优势的同时还享有虚拟内存的灵活性.
.tmpfs基本上是所有版本中共享内存设备/dev/shm的默认文件系统.
.在Linux内核中,虚拟内存资源由物理内存和交换分区组成,tmpfs向虚拟内存子系统请求页来存储文件,它同其它请求页的部分一样,不知道分配给自己的是物理内存还是交换分区存储.


2)tmpfs的应用

2.1)/dev/shm

/dev/shm类型是tmpfs,也就是用shm_open,shm_unlink请求共享内存时,系统会通过/dev/shm来响应请求,tmpfs本身也用的是文件系统缓存.

2.1.1)/dev/shm默认是物理内存的一半.

[root@test1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           503        190        313          0         14        140
-/+ buffers/cache:         35        467
Swap:         1027          0       1027


[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 252M     0  252M   0% /dev/shm

2.1.2)更改/dev/shm的大小

现在的/dev/shm是252M
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 252M     0  252M   0% /dev/shm

修改tmpfs挂载项的size为512M
[root@test1 ~]# vi /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
tmpfs                   /dev/shm                tmpfs   defaults,size=512M        0 0
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
LABEL=SWAP-sda2         swap                    swap    defaults        0 0
/dev/loop0              /mnt/acltest            ext3    defaults,acl    0 0

卸载/dev/shm,再挂载/dev/shm,最后查看/dev/shm的大小

[root@test1 ~]# umount /dev/shm
[root@test1 ~]# mount /dev/shm
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M     0  512M   0% /dev/shm


2.1.3)利用/dev/shm来存取文件,并查看cache的利用情况

现在/dev/shm的利用率为0
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M     0  512M   0% /dev/shm

内存中文件系统缓存的cached为141M
[root@test1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           503        190        312          0         14        141
-/+ buffers/cache:         35        468
Swap:         1027          0       1027

在/dev/shm/下新建一个文件test,大小为10M
[root@test1 ~]# dd if=/dev/zero f=/dev/shm/test bs=10M count=1
1+0 records in
1+0 records out
10485760 bytes (10 MB) copied, 0.0511599 seconds, 205 MB/s

现在的cached已经是151M
[root@test1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           503        200        302          0         14        151
-/+ buffers/cache:         35        468
Swap:         1027          0       1027

/dev/shm已经被占用了10M
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M   11M  502M   2% /dev/shm

2.2)利用tmpfs来提高磁盘的读写

新建/mnt/disktest目录,并通过tmpfs挂载到/mnt/disktest目录.

mkdir /mnt/disktest
[root@test1 ~]# mount tmpfs /mnt/disktest -t tmpfs -o size=128M
[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.1G   15G  18% /
tmpfs                 512M   11M  502M   2% /dev/shm
tmpfs                 128M     0  128M   0% /mnt/disktest

在/mnt/disktest下新建100MB的文件,共消耗了0.317秒,传输速度为315 MB/s
[root@test1 ~]# time dd if=/dev/zero f=/mnt/disktest/testfile bs=1MB count=100
100+0 records in
100+0 records out
100000000 bytes (100 MB) copied, 0.317704 seconds, 315 MB/s

real    0m0.346s
user    0m0.000s
sys     0m0.343s

在/tmp下新建100MB的文件,共消耗了0.815秒,传输速度为128MB/s
[root@test1 ~]# time dd if=/dev/zero f=/tmp/testfile bs=1MB count=100
100+0 records in
100+0 records out
100000000 bytes (100 MB) copied, 0.815914 seconds, 123 MB/s

real    0m0.865s
user    0m0.004s
sys     0m0.687s

以上的测试说明了tmpfs能明显的提高速度.


2.3)释放tmpfs的测试

查看占用cached的文件
[root@test1 ~]# ls -lh /mnt/disktest/testfile
-rw-r--r-- 1 root root 96M Feb 22 12:05 /mnt/disktest/testfile

[root@test1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              19G  3.2G   15G  18% /
tmpfs                 512M     0  512M   0% /dev/shm
tmpfs                 128M   96M   33M  75% /mnt/disktest

删除/mnt/disktest/testfile,查看是否释放掉cached

没删除之前:
[root@test1 ~]# free
total       used       free     shared    buffers     cached
Mem:        515600     393448     122152          0      15528     339768
-/+ buffers/cache:      38152     477448
Swap:      1052248          0    1052248

删除文件testfile:
[root@test1 ~]# rm /mnt/disktest/testfile
rm: remove regular file `/mnt/disktest/testfile'? y

查看是否释放掉了cached:
[root@test1 ~]# free
total       used       free     shared    buffers     cached
Mem:        515600     295736     219864          0      15536     242108
-/+ buffers/cache:      38092     477508
Swap:      1052248          0    1052248

这里cached变成了242108KB,之前是339768KB,说明cached被释放掉了.

转载于:https://www.cnblogs.com/zeping/archive/2011/03/05/1971717.html

相关文章:

Unique Paths II

注意一个容易犯的错误&#xff1a;判断obstacleGrid是否为1时&#xff0c;else那部分不能少。因为如果不加&#xff0c;就会默认把那些值设置为0。 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int height ob…

零基础java培训如何规划学习路线

学习java的同学越来越多&#xff0c;很多小伙伴都想知道零基础如何学习java?如何安排学习路线&#xff0c;零基础java培训如何规划学习路线?那么针对以上问题&#xff0c;今天小编特意分享这篇Java学习指南&#xff0c;希望对那些想学Java&#xff0c;想零基础快速入门Java有…

CCIE-MPLS基础篇-实验手册

又一部前期JUSTECH&#xff08;南京捷式泰&#xff09;工程师职业发展系列丛书完整拷贝。 MPLS&#xff08;Multi-Protocol Label Switching&#xff09; 目录 1&#xff1a;MPLS 基础实验.... 3 1.1实验拓扑... 3 1.2实验需求&#xff1a;... 3 1.3实验步骤... 3 1.4校验…

[转载]Oracle 11g新特征之形式料理(2)

不可见的索引 您经常感应利诱&#xff0c;索引能否真的有利于用户的盘考&#xff1f;它也许有利于一个盘考&#xff0c;但会影响 10 个其他盘考。索引肯定会对 INSERT 语句形成负面影响&#xff0c;也会执行潜伏的删除和更新操纵&#xff0c;这取决于 WHERE 条件能否在索引中包…

技术图文:进一步完善自动化交易系统 - 03

背景 在 进一步完善自动化交易系统 - 02 这篇图文中&#xff0c;向大家详细介绍了&#xff0c;满足以下两个条件下&#xff1a; 拥有数字资产&#xff1a;BTC、EOS、USDT、ONEBigOne 提供交易对&#xff1a;ONE-USDT、ONE-EOS、ONE-BTC、EOS-BTC、EOS-USDT、BTC-USDT 我们可…

HTML5培训后好就业吗

HTML5技术在移动互联网行业的发展前景是非常可观的&#xff0c;以至于很多人都非常看好HTML5行业&#xff0c;想要学习HTML5技术的人越来越多&#xff0c;但大家都比较关心HTML5培训后好就业吗?就这个问题我们来看看下面的详细介绍吧。 HTML5培训后好就业吗?首先&#xff0c;…

股市复盘:本周交易数据分析

特别说明&#xff1a; 每周我会统计「股票市场」的数据为大家的投资提供辅助支持&#xff0c;每个人站的角度不同&#xff0c;面对同一份数据得到的观点亦或不同&#xff0c;我只提供数据&#xff0c;不提供观点&#xff0c;欢迎大家在图文下方留言&#xff0c;我们理性探讨。 …

Strategy Analytics:物联网安全令人担忧,成本节约效益也不确定

Strategy Analytics物联网战略研究报告《2016年物联网部署趋势及使用调查》发现&#xff0c;物联网安全问题令人担忧&#xff0c;同时&#xff0c;超过半数企业对物联网带来的成本节约效益也不太确定。56%的受访公司认为&#xff0c;大数据分析是推动物联网部署的首要驱动力。 …

SQLServer中设置XML索引

XML索引分为主XML索引和次XML索引&#xff1b;1.主XML索引&#xff1a;为了完整、一致的表示XML的值&#xff0c;格式&#xff1a;Create PRIMARY XML INDEX indexName ON tableName(columName);2.次XML索引&#xff1a;对于XPath和XQuery表达式&#xff0c;可以使用XML次索引&…

零基础能学好UI设计吗

UI设计在最近几年的发展前景是有目共睹的&#xff0c;越来越多的企业注重用户体验&#xff0c;而UI设计在这一方面是起着非常重要位置的&#xff0c;如今很多人都想要学习UI设计&#xff0c;那么零基础能学好UI设计吗?我们来看看下面的详细介绍。 零基础能学好UI设计吗?如果美…

技术图文:进一步完善自动化交易系统 - 04

背景 我们在 数字资产量化中的三角套利策略 这篇图文中详细的介绍了三角套利的原理以及代码实现。 在 进一步完善自动化交易系统 - 02 和 进一步完善自动化交易系统 - 03 中利用配置文件的方法&#xff0c;扩充至七个三角套利模型。 现在的问题是需要把应用程序和配置文件分别…

如何成为Android开发高手

(copy来的) 计划按这个步骤去学习很多Android开发者已经度过了初级、中级&#xff0c;如何成为一个Android高手呢? Android123就各个级别的程序员应该掌握哪些内容作为下面分类。 一、初级 1. 拥有娴熟的Java基础&#xff0c;理解设计模式&#xff0c;比如OOP语言的工厂模式要…

哪些物联网应用最适合采用雾计算?

有时在做出判断时真的是要靠自己&#xff0c;让别人为你指出方向是不可行的。 许多物联网系统所面临的情景与此相同。集中处理大量传感器数据会减慢决策&#xff0c;并增加带宽需求。而做出明智的决策最好靠近源头。 哪些决策应该靠近网络边缘&#xff0c;哪些应该靠近中心&…

学习web前端你必须要了解的主流框架!

如今的前端已经不再像以前一样就是简单的写写页面和调调样式而已&#xff0c;现在的前端越来越复杂&#xff0c;知识点越来越丰富。 要做WEB前端&#xff0c;就需要知道前端到底是什么&#xff0c;需要学习那些知识;前端至少要懂的三个部分&#xff1a;HTML&#xff0c;CSS&…

技术图文:如何实现汉诺塔问题?

背景 最近在辅导小孩们学习编程&#xff0c;在介绍函数递归时&#xff0c;最典型的就是汉诺塔问题了。 我在这里总结一下&#xff0c;以方便大家的学习。 汉诺塔问题源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上…

Unity----Scene加载问题

Unity官方提供了4种加载场景&#xff08;scene&#xff09;的方法&#xff0c;分别是&#xff1a; 1. Application.LoadLevel()&#xff1a;同步加载 2. Application.LoadLevelAsync():异步加载 3. Application.LoadLevelAddictive():同步附加式加载 4. Application.LoadLevelA…

基于Google Reader的个人知识管理方案

来源月光博客:http://www.williamlong.info/archives/2172.html. 先前我写的《基于Dropbox的个人知识管理平台》讲述了使用Dropbox在个人知识管理的保存知识方面的技巧&#xff0c;而个人知识管理的另一个重要环节是获取知识&#xff0c;今天月光博客就介绍一下如何通过Google …

学习java一定会用到的应用软件

想要成为一名合格的java程序猿&#xff0c;基础知识一定是要非常牢固的&#xff0c;扎实的基本功不仅可以快速的吸收新的知识&#xff0c;也会避开一些基本的语法错误&#xff0c;为了帮助程序员们减少一点工作压力&#xff0c;小编在此汇总了一些各大网络平台上推荐的程序员必…

LeetCode实战:两数之和

题目英文 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Example: Given nums [2, 7, 1…

忘记mysql 密码的取回方法

如果 MySQL 正在运行&#xff0c;首先杀之&#xff1a; killall -TERM mysqld(如果是windows,直接调出进程管理器,结束之) 以安全模式启动 MySQL &#xff1a;/usr/bin/safe_mysqld --skip-grant-tables & (windows 下 mysql安装所以盘/mysql/bin/safe_mysqld --skip-grant…

《社交网站界面设计(原书第2版)》——2.13 不要中断电子邮件

2.13 不要中断电子邮件 如果你将电子邮件作为广播媒介&#xff08;例如&#xff0c;发送提醒或通知&#xff09;却不让用户回复他们收到的消息&#xff0c;就比较差劲了。你也没理由不处理这些回复&#xff0c;你可以把这些回复当作通知转发给正确的收件人。这需要你在方便沟通…

学习Python遇到的热门问题整理

什么是Python?它可以做什么用?学习Python还是java?哪个比较好?Python适用于哪些场景?关于python&#xff0c;你是不是还有很多问题?那今天小编就来给大家答疑解惑了&#xff0c;给大家整理了学习Python遇到的热门问题&#xff0c;看完这篇文章&#xff0c;你会对Python有…

WinRM设置信任主机

启动https需要证书&#xff0c;所以只能用信任主机的方式。适应没有域的环境。 enable-psremoting winrm s winrm/config/client {TrustedHosts"XXX.XXX.XXX.XXX"} 转载于:https://www.cnblogs.com/flysoft/archive/2011/03/12/1982494.html

LeetCode实战:快乐数

题目英文 Write an algorithm to determine if a number is “happy”. A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until t…

idea的优秀博客推荐

2019独角兽企业重金招聘Python工程师标准>>> http://blog.csdn.net/qq_27093465/article/details/63683873 http://www.cnblogs.com/whc321/p/5669804.html 转载于:https://my.oschina.net/u/3621360/blog/1528716

花钱参加UI设计培训值得吗?

最近有很多人都想要学习UI设计&#xff0c;大家都比较看好UI设计行业的好前景&#xff0c;高薪资&#xff0c;那么花钱参加UI设计培训值得吗?这是目前很多人都比较关心的问题&#xff0c;下面小编就为大家做下详细的介绍。 ​花钱参加UI设计培训值得吗?对于零基础或者转行的人…

零基础自学用Python 3开发网络爬虫(一)

原文出处&#xff1a; Jecvay Notes &#xff08;Jecvay&#xff09; 由于本学期好多神都选了Cisco网络课, 而我这等弱渣没选, 去蹭了一节发现讲的内容虽然我不懂但是还是无爱. 我想既然都本科就出来工作还是按照自己爱好来点技能吧, 于是我就不去了. 一个人在宿舍没有点计划…

用什么心态对待水平糟糕的程序员[不靠谱的程序员、思路紊乱的程序员]?

这些年遇到了很多糟糕的程序员&#xff0c;其实真正是写程序料的人&#xff0c;普通IT公司大概只占1/3左右吧&#xff0c;其实有2/3的人都太适合当程序员&#xff0c;还不如早点儿改行该干啥就干啥了&#xff0c;其中有1/10的人往往是相对比较糟糕的。 01&#xff1a;招聘时&am…

LeetCode实战:三数之和

题目英文 Given an array nums of n integers, are there elements a, b, c in nums such that a b c 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. Example: Given array n…

女生做软件测试需要学习什么技术?

软件测试在近几年的发展前景是非常好的&#xff0c;加上软件测试对于想要零转型的学员来说是在合适不过的&#xff0c;有很多女性也开始学习软件测试&#xff0c;目前大家都比较关心女生做软件测试需要学习什么技术呢?下面我们就来看看详细的介绍。 女生做软件测试需要学习什么…