Rootop 服务器运维与web架构

使用tmpfs提高性能

tmpfs介绍

tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化。
它最大的特点就是它的存储空间在内存中(虚拟为硬盘),VM(虚拟内存)是由linux内核里面的vm子系统管理的。
linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。
Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,当一个进程申请一定数量的内存时。
如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面。
如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果有足够大的物理内存,可以不划分Swap分区。

VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(物理内存+swap交换内存)。
但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。
tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M。
一般情况下,是配置的小于物理内存大小的。
tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节
如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收重新划分的。
当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源。

Oracle 中的Automatic Memory Management特性就使用了/dev/shm。
LINUX中可以把一些程序的临时文件放置在tmpfs中比如session文件,提升性能。

实验环境:
云主机:centos7.1 x86_64 2 Core 8G MEM

实现方式1 直接创建:

[root@a ~]# uname -a
Linux a.novalocal 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@a ~]# mkdir /mnt/tmp //创建虚拟硬盘挂载点
[root@a ~]# mount -t tmpfs -o size=500m tmpfs /mnt/tmp/ //创建一个tmpfs文件系统,大小为500m,挂载到/mnt/tmp
[root@a ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.2G 18G 7% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.3M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 500M 0 500M 0% /mnt/tmp

如果不想用了,直接umount掉/mnt/tmp

实现方式2 配置fstab:

[root@a ~]# vi /etc/fstab 添加一行
tmpfs /mnt/tmp2 tmpfs defaults,size=4000M 0 0
 挂载点 大小

[root@a ~]# mount -a //挂载fstab中所有定义的选项
[root@a ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.2G 18G 7% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 8.3M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 4.0G 0 4.0G 0% /mnt/tmp2

测试:

[root@a ~]# time dd if=/dev/zero bs=1024 count=3000000 of=/mnt/tmp2/3Gb.file
3000000+0 records in
3000000+0 records out
3072000000 bytes (3.1 GB) copied, 4.24275 s, 724 MB/s

real 0m4.244s
user 0m0.248s
sys 0m3.994s

这是用的云主机测试,速度大约比物理硬盘快10倍,如果不是云主机,物理机的话,性能还会高。

注意:系统重启后,数据丢失!这不是保存到物理硬盘。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3456.html

作者:Venus

服务器运维与性能优化

评论已关闭。