linux 内存盘的使用方式与验证

linux,内存,使用,方式,验证 · 浏览次数 : 34

小编点评

**linux 内存盘的使用方式与验证背景某些情况下,硬盘的写入是一个很大的瓶颈使用 内存文件系统的方式应该能够极大的提高IO的速度。** **内存盘的优点:** * 非常快:数据读取和写入速度比硬盘更快。 * 非持久化:数据不会被写入硬盘,所以即使系统崩溃,数据也不会丢失。 **内存盘的缺点:** * 存储空间有限:内存盘只能存储应用程序使用的内存,这意味着即使应用程序占用大量内存,内存盘也会处于空闲状态。 * 可用性有限:内存盘的可用空间取决于应用程序使用的内存大小。 **一些可以最大化的内存文件系统模式:** * **ramfs**:基于 RAM 的内存文件系统,完全利用系统内存,提供非常快的读写性能。 * **tmpfs**:基于虚拟内存的内存文件系统,使用 swapping 和内存来提供动态内存分配。 * **ramdisk**:一种基于 RAM 的文件系统,但使用的是内存文件系统。 * **tmpfs**:另一种基于虚拟内存的内存文件系统,使用计数来限制存储空间。 **其他优化方法:** * **调整 mountオプション:**使用 `size` 参数设置内存文件系统的大小,使其与实际可用空间一致。 * **使用 dsync 模式:**使用 `dsync` 选项提高读写性能。 * **监控内存使用:**使用监控工具来实时监测内存使用情况,并调整应用程序运行参数以降低使用。 **结论:** 虽然内存盘有其独特的功能,但对于大多数应用程序来说,硬盘的写入性能仍是关键性能指标。通过选择适当的内存文件系统模式和优化参数,可以最大限度地提升内存盘的性能。

正文

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 内存盘的使用方式与验证

linux 内存盘的使用方式与验证 背景 某些情况下, 硬盘的写入是一个很大的瓶颈 使用 内存文件系统的方式应该能够极大的提高IO的速度. 内存盘的优点是比较快, 缺点就是数据不是持久化的. 其实还是有很多可以持续优化的方式与方法的. 可以最大化的 磁盘的IO速度等. 内存盘的多种模式与区别 ram

系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理

虚拟内存的主要作用是提供更大的地址空间,使得每个进程都可以拥有大量的虚拟内存,而不受物理内存大小的限制。此外,虚拟内存还可以提供内存保护和共享的机制,保护每个进程的内存空间不被其他进程非法访问,并允许多个进程共享同一份物理内存数据,提高了系统的资源利用率。虚拟内存的实现方式有分段和分页两种,其中分页机制更为常用和灵活。分页机制将虚拟内存划分为固定大小的页,将每个进程的虚拟地址空间映射到物理内存的页

[转帖]JAVA 应用提速之 Large pages「译」

https://zhuanlan.zhihu.com/p/533305428 一、前言 我最近花了很多时间在 JVM 的内存预留代码上。它开始是因为我们得到了外部贡献,以支持在 Linux 上使用多个大小的 large page。为了以一种好的方式做到这一点,必须首先重构一些其他的东西。在沿着 内存

[转帖]JAVA 应用提速之 Large pages「译」

原文链接:https://mp.weixin.qq.com/s/HxT-DXNWkPCyDB6qAgKmXA 一、前言 我最近花了很多时间在 JVM 的内存预留代码上。它开始是因为我们得到了外部贡献,以支持在 Linux 上使用多个大小的 large page。为了以一种好的方式做到这一点,必须首先

Linux 查看内存使用情况的几种方法

在运行 Linux 系统的过程中为了让电脑或者服务器以最佳水平运行,常常需要监控内存统计信息。今天我们就来看看都有那些方法可以查看内存信息。

[转帖]linux 调优各项监控指标小记

https://z.itpub.net/article/detail/8A4E4E96522BD59D45AB5A4CA442EDB3 自开始负责生产环境部署,中间遇到了若干线上环境内存以及CPU的问题。由于微服务以及容器的流行,现在已经可以很方便的使用 K8s + prometheus + gra

Linux无头模式使用mat分析dump的方法

摘要 mat可以很好的进行jvm的内存dump的分析. 但是大部分服务器是没有GUI界面的. 而且就算是有GUI界面也很难直接使用. 但是随着jvm堆区越来越大. WindowsPC机器已经很难进行分析. 所以基于此. 想着能够使用Linux进行简要分析 然后使用Windows进行打开. 根据网上查

[转帖]解析Linux gcore: 揭示程序内存捕获的秘密(linuxgcore)

https://www.dbs724.com/133618.html Linux gcore 是一种在Linux系统中使用命令行工具捕获进程内存内容的方法。它允许程序员制定程序的一个内存快照,从而帮助他们了解在特定时刻,程序的内部状态是什么状态。 通过生成一个进程的Core文件(也称为“内存快照”或

[转帖]D. Memlock限制

https://www.intel.cn/content/www/cn/zh/docs/programmable/683633/1-2-1/memlock-limit.html 根据应用程序的要求,您可能还想增加用户进程可以锁定的最大内存量。确切的方法可能随Linux发行版的不同而不同。 使用uli

.NET微服务系统迁移至.NET6.0的故事

本次迁移涉及的是公司内部一个业务子系统,该系统是一个多样化的应用,支撑着公司的多个业务方向。目前,该系统由40多个基于.NET的微服务应用构成,使用数千个CPU核心和数TB内存,在数百个Linux容器中运行。每天,该系统需要处理数十亿次请求。 该系统其中大部分服务是在2018-2019年左右由老旧.