linux 内存盘的使用方式与验证
linux 内存盘的使用方式与验证
背景
某些情况下, 硬盘的写入是一个很大的瓶颈
使用 内存文件系统的方式应该能够极大的提高IO的速度.
内存盘的优点是比较快, 缺点就是数据不是持久化的.
其实还是有很多可以持续优化的方式与方法的.
可以最大化的 磁盘的IO速度等.
内存盘的多种模式与区别
ramfs tmpfs ramdisk 等
需要说明集中模式多少有一些区别.
ramfs 因为追求高效和简单,去掉了容量计数;所以当使用的值超过分配的值的时候,将会继续使用;
tmpfs 使用了虚拟内存,其会使用swap和内存, 其会将一些不必要的文件内容写入到swap当中;
并且会使用计数,来统计当前使用的容量,并进行容量限制;使用df -h 操作可以显示其具体使用的容量和可用容量信息;
现在系统中,大多使用 tmpfs 作为内存文件系统;
ramdisk 是块设备,ramfs 是文件系统;
ramdisk 的内存空间大小是固定的,一经设定就不能改变大小了;
tmpfs 带来了一定的管理机制,但是也是意味着 相对于 ramfs,tmpfs 性能较差一点;不过使用方式上基本相同;
来源:https://www.cnblogs.com/xuyaowen/p/ramfs-tmpfs-ramdisk.html
挂载使用-ramfs
mkdir /testRam
mount -t ramfs none /testRAM
缺省情况下,Ramfs被限制最多可使用内存大小的一半。可以通过maxsize(以kbyte为单位)选项来改变。
mount -t ramfs none /testRAM -o maxsize=2000
挂载使用-tmpfs
mkdir -p /mnt/tmpfs
mount tmpfs /mnt/tmpfs -t tmpfs
mount tmpfs /mnt/tmpfs -t tmpfs -o size=32m
性能验证
1. nvme SSD
dd if=/dev/zero of=/nvme03/zhaobsh.test bs=8k count=102400
记录了102400+0 的读入
记录了102400+0 的写出
838860800字节(839 MB,800 MiB)已复制,0.826526 s,1.0 GB/s
2. sata SSD
dd if=/dev/zero of=/root/zhaobsh.test bs=8k count=102400
记录了102400+0 的读入
记录了102400+0 的写出
838860800字节(839 MB,800 MiB)已复制,2.15439 s,389 MB/s
3. tmpfs 文件系统
dd if=/dev/zero of=/tmp/zhaobsh.test bs=8k count=102400
记录了102400+0 的读入
记录了102400+0 的写出
838860800字节(839 MB,800 MiB)已复制,0.260812 s,3.2 GB/s
4. ramfs文件系统
dd if=/dev/zero of=/testRAM/zhaobsh.test bs=8k count=102400
记录了102400+0 的读入
记录了102400+0 的写出
838860800字节(839 MB,800 MiB)已复制,0.252449 s,3.3 GB/s
结论
ramfs 的性能最好.
tmpfs 的性能次之.
nvme 的磁盘性能再次之
sata SSD的性能最差.
需要说明:
[root@clickhouse1 ~]# dd if=/dev/zero of=/nvme03/zhaobsh.test bs=8k count=102400 oflag=dsync
记录了102400+0 的读入
记录了102400+0 的写出
838860800字节(839 MB,800 MiB)已复制,8.66098 s,96.9 MB/s
如果采用 dsync 的oflag 模式 下 sata和nvme的 ssd 都会有明显的降速. 但是tmpfs和ramfs 资源基本上一致.
[root@clickhouse1 ~]# dd if=/dev/zero of=/testRAM/zhaobsh.test bs=8k count=102400 oflag=dsync
记录了102400+0 的读入
记录了102400+0 的写出
838860800字节(839 MB,800 MiB)已复制,0.259044 s,3.2 GB/s
[root@clickhouse1 ~]# dd if=/dev/zero of=/tmp/zhaobsh.test bs=8k count=102400 oflag=dsync
记录了102400+0 的读入
记录了102400+0 的写出
838860800字节(839 MB,800 MiB)已复制,0.329865 s,2.5 GB/s
linux 内存盘的使用方式与验证的更多相关文章
- 关于linux建立u盘legacy启动方式引导
前言 我一直在用linux,但是我在linux制作pe启动盘无法实现,windows有很多制作pe启动盘的软件,如大白菜,u深度什么的,但是linux没有对应的软件,所以我想写一个类似的工具,那么就有 ...
- Linux进程分配内存的两种方式--brk() 和mmap()
如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...
- linux内存分配机制
这几天在观察apache使用内存情况,所以特意了解了下linux的内存机制,发现一篇写得还不错.转来看看. 一般来说在ps aux中看到的rss就是进程所占用的物理内存.但是如果将所有程序的rss加起 ...
- linux 内存管理——内核的shmall 和shmmax 参数
内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好. SHMMIN= 最小的内存seg ...
- 《嵌入式Linux内存使用与性能优化》笔记
这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...
- 伙伴系统之伙伴系统概述--Linux内存管理(十五)
在内核初始化完成之后, 内存管理的责任就由伙伴系统来承担. 伙伴系统基于一种相对简单然而令人吃惊的强大算法. Linux内核使用二进制伙伴算法来管理和分配物理内存页面, 该算法由Knowlton设计, ...
- Linux内存管理 (9)mmap(补充)
之前写过一篇简单的介绍mmap()/munmap()的文章<Linux内存管理 (9)mmap>,比较单薄,这里详细的梳理一下. 从常用的使用者角度介绍两个函数的使用:然后重点是分析内核的 ...
- [转帖]linux 内存管理——内核的shmall 和shmmax 参数
(转)linux 内存管理——内核的shmall 和shmmax 参数 内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个 ...
- (转)linux 内存管理——内核的shmall 和shmmax 参数
内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好. SHMMIN= 最小的内存seg ...
- Linux内存 性能调优
内存是影响Linux性能的主要因素之一,内存资源的充足与否直接影响应用系统的使用性能. free命令:监控Linux内存使用状况. 由上图可知,空闲内存是free+buffers+cached=155 ...
随机推荐
- 一个Tomcat 如何部署多个项目?附多种解决方案及详细步骤!
此文源自一次多年前面试的面试题,民工哥将它总结出来分享给大家,希望对大家有所帮助,或者今后的面试中说不定会用的上. 首先,我们了解一下常见的Java Web服务器. Tomcat:由Apache组织提 ...
- Linux 多路复用(多路转接)
出现原因 如果需要从一个文件描述符中读取数据,然后将数据写入到另一个文件描述符时,可以按照如下的阻塞 IO : while ((n = read(STDIN_FILENO, buf, BUFFER_S ...
- git blame 用法小记
1.概述 git管理的代码仓库,在协作开发中不可避免地会出现代码冲突,或者有新手错误地提交代码.出现问题不可怕,可怕的是找不到问题出在哪里.有时候找到出问题的代码,却不知道是谁提交的.git提供了一个 ...
- PostgreSQL常用运维SQL
一.数据库连接 1.获取数据库实例连接数 select count(*) from pg_stat_activity; 2.获取数据库最大连接数 show max_connections 3.查询当前 ...
- Mysql开发实践:error while loading shared libraries: libaio解决方案
摘要:Mysql出现问题:error while loading shared libraries: libaio解决方案. 本文分享自华为云社区<Mysql出现问题:error while l ...
- Scrum Master们,难道每天都在摸鱼?
摘要:众所周知,Scrum Master是服务型领导--其本身不参与日常的研发工作,写代码.改Bug的工作都让团队干了,Scrum Master到底干了啥?Scrum Master工作的好坏应该如何衡 ...
- JS遍历循环方法性能对比:for/while/for in/for of/map/foreach/every
这周codeReview例会,又遇到map与foreach到底谁问题.单独图方便,我会选择用map一个函数搞定一切.但是从语义的角度来讲,如果只是单纯遍历,还是推荐选择foreach.其实formap ...
- 火山引擎DataTester:无需研发人力,即刻开启企业A/B实验
近日,火山引擎A/B测试平台-- DataTester 对产品内A/B实验的"可视化编辑器"进行了新的升级,对交互.预览.Xpath的层次结构视图等能力均做了优化. 据介绍,火 ...
- 数据丢失不用怕,火山引擎 DataLeap 提供排查解决方案
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当一家公司的日均处理的数据流量在 PB 级别时,巨大的任务量和数据量会对消息队列(MQ)dump 的稳定性和准确定 ...
- SQL Server 还原 备份集中的数据库备份与现有的 'XXX' 数据库不同
1. 介质集有 2 个介质簇,但只提供了 1 个.必须提供所有成员. 因为在备份时有两个路径,所以备份文件会放在两个文件里面,所以在还原的时候只要把两个都添加了就可以还原了. 2. 备份集中的数据库备 ...