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 ...
随机推荐
- DVWA Command Injection(命令注入)全等级
Command Injection(命令注入) 目录: Command Injection(命令注入) 1. Low 利用 1.nc反弹shell 2.msf上马 2.Medium 3. High 4 ...
- java实现一个录像大师
java实现一个录像大师 javacv从入门到入土系列,发现了个好玩的东西,视频处理,于是我想搞了个屏幕录屏大师,这里我使用javafx进行页面显示. 依赖 <!-- 需要注意,javacv主要 ...
- vue模板的首次渲染,和重新渲染,有哪些区别?
搞明白这个,能帮助我们理解开发中出现的很多问题. 一.我们先来回顾一下vue模板的渲染过程: (1)执行render函数,生成虚拟DOM. render函数是根据render.templete.el这 ...
- Vue 2 和 Vue 3 中 toRefs的区别
摘要:本文将介绍 Vue 2 和 Vue 3 中 toRefs 函数的不同用法和行为,并解释其在各个版本中的作用. 正文: Vue 是一款流行的 JavaScript 框架,用于构建用户界面.在 Vu ...
- 实时入库不用愁,HStore帮分忧
本文分享自华为云社区<直播回顾 | 实时入库不用愁,HStore帮分忧>,作者:汀丶. 海量数据时代,如何实现数据实时入库与实时查询?GaussDB(DWS) HStore表为数据高效存储 ...
- MySQL数据库技术与应用:数据查询
摘要:数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求. 数据查询 数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求.数据查询可以根据用 ...
- 划重点丨详解Java流程控制语句知识点
摘要:流程控制语句就是用来控制程序中各语句执行的顺序,下面将详细介绍java流程控制语句. 流程控制语句就是用来控制程序中各语句执行的顺序,下面将详细介绍java流程控制语句. Q: break后面加 ...
- java并发编程(1):Java多线程-基本线程类-基础知识复习笔记
复习资料:<同步与异步:并发/并行/进程/线程/多cpu/多核/超线程/管程 > 基本线程类 基本线程类 基本线程类指的是Thread类,Runnable接口,Callable接口 继承T ...
- 开心档之MySQL 创建数据库
MySQL 创建数据库 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 ...
- Axure 公告通知
1.一个浅黄色的底图 (710X30) ; 2.一个喇叭小图标(Volume up) ; 3.一个动态面板. 动态面板中设置statel.state2和state3三种面板状态,这三种状态中分别放三个 ...