技术标签: oracle数据库 tmpfs devshm linux系统
df –Th查看磁盘容量,/dev/shm的作用到底是什么?
[[email protected] ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext3 244G 35G 197G 15% /
/dev/sda1 ext3 190M 12M 169M 7% /boot
tmpfs tmpfs 3.9G 2.1G 1.9G 54% /dev/shm
tmpfs介绍
tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化
它最大的特点就是它的存储空间在VM(virtual memory),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最大的存储空间可达(The size of RM + The size of Swap)。 但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。
tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M
一般情况下,是配置的小于物理内存大小的。
tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收重新划分的。
当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源。
/dev/shm在内存中,而不是在磁盘上。由于/dev/shm存在于内存中,所以速度肯定大大优于磁盘。
/dev/shm不是立即占用内存,而是采用需要才占用内存的方法。在上面的例子中,/dev/shm设置的值是20G,我们看到已用写入了9.5G的数据,也就是占用了9.5G的内存。
/dev/shm采用tmpfs文件系统,它具有以下优点:
1. 速度飞快。
2. 动态分配:写入更多的数据,/dev/shm占用更多的内存;删除/dev/shm中的数据,那么就减少占用内存。不用这样利于内存的充分使用。
tmpfs的用途
例如:
Oracle 中的Automatic Memory Management特性就使用了/dev/shm。
LINUX中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点提升系统性能。
如果 tmpfs 小于 MEMORY_TARGET 的大小,数据库启动会报错:
ORA-00845: MEMORY_TARGET not supported onthis system
/dev/shm另一个特点:系统重启后、重新挂载/dev/shm后,/dev/shm中的数据都会消失。
/dev/shm默认值是内存的一半,有时根据需要会增大/dev/shm,如oracle中设置memory_target中的值超过了/dev/shm的大小。
修改/dev/shm大小:
1.Vim /etc/fstab
原来是这样:
tmpfs /dev/shm tmpfs defaults 0 0
修改成如下,也就是20G
tmpfs /dev/shm tmpfs defaults,size=20000M 0 0
2.重新mount /dev/shm后生效
# mount -o remount /dev/shm
或者umount /dev/shm
mount /dev/shm
通过df –Th查看是否生效
也可以用下面的方式
# mkdir /mnt/tmp
# mount -t tmpfs -o size=256m,mode=1777 tmpfs /mnt/tmp
问题解决:
有时会遇到/dev/shm 卸载不掉的情况
# umount /dev/shm
umount: /dev/shm: device is busy.
用fuser处理
# fuser -km /dev/shm
# umount /dev/shm
# mount /dev/shm
fuser命令
-k:kill processes accessing the named file(杀死所有正在访问指定文件的进程
)
-m 表示指定文件所在的文件系统或者块设备(处于 mount 状态)。所有访问该文件系统的进程都被列出。
此文参考:
http://blog.chinaunix.net/uid-23284114-id-3232508.html
http://blog.csdn.net/tianlesoftware/article/details/7256984
http://www.linuxidc.com/Linux/2013-12/93747.htm
中文网:https://www.bootstrapselect.cn/index.htmgithub:https://github.com/snapappointments/bootstrap-select需要用到的js和css(按顺序引用):bootstrap.min.cssbootstrap-select.cssjquery.min.jsbootstrap.min.jsbootstrap-select.jsdefaults-zh_CN.js 显示错误时所用的语言选项选项可以
微信公众号:javafirst自 JDK5 推出以来,注解已成为Java生态系统不可缺少的一部分。虽然开发者为Java框架(例如Spring的@Autowired)开发了无数的自定义注解,但编译器认可的一些注解非常重要。在本文中,我们将看到5个Java编译器支持的注解,并了解其期望用途。顺便,我们将探索其创建背后的基本原理,围绕其用途的一些特质,以及正确应用的一些例子。虽然其中有些注解比其他注解更...
<br />模拟光照进窗户后射在尘埃上的一种雾气感觉<br /> <br /><使用方法/建立一个聚光灯.在灯的属性里把emit specular勾掉.在light effects下light fog后的各自图标处点一下.之后shadow里的depth map shadow attributes勾选.至此结束><br /> <br /> <br />相关参数/light effects下fog spread延伸度(中心向周围的扩散) fog intensity(灯光雾的亮度) decay ra
直奔主题,在Eclipse中使用git clone别人(比如网上的公开课)分享在Github上的代码: 1.在eclipse中安装git: 我使用的是ADT Bundle 的 eclipse
业界对程序员的分级大体有初级,中级,高级,资深等等,但并没有什么统一的标准,不同的公司要求不一样,不同的面试官不同的岗位要求也不一样,所以下面的描述仅是我个人的看法,仅供大家参考。最简的知识范围上面这张图中的知识点最一个最简的知识范围,做为工作三年的程序员需要百分百的了解,其中JAVA基础、开源框架、常用工具、linux命令需要熟练掌握,中间件毕竟不是我们写的,只要知道
GeoServer 是一个功能强大的开源的GIS服务器,其性能相当优越,支持包含wms、wfs、tms在内的多种服务类型,简单服务性能优于ArcGIS Server(仅测10.2版本)。tms(矢量切片服务),是当下热门的服务器技术,其将矢量数据切片传送到前端,可以提高系统响应速度,并减轻服务器压力。目前十分热门的MapBox地图即采用这种技术,这也必是地图商技术发展的趋势。GeoServ...
具体配置如图,就不备注文字啦 唯一要注意的是需要把iso镜像文件解压后,把里面的I386文件夹拷贝到windows2003里本文永久更新地址:http://liuyanzhao.com/2985.html 转载请注明
这个现象是因为,在BootAnimation开始绘图之前,会先做一次clear screen的动作,避免出现前面的图干扰到BootAnimation的显示。这是Google default design,虽然不可避免,但是可以优化。
2. 集成开发环境 JetBrains PyCharm Community Edition 2018.3.4 x643. python 连接SQLServer数据库(两种方法)# -*- coding:utf-8 -*-#方法一import pymssql# server = "192.168.1.76" # 连接服务器地址# user = "sa" # 连...
问题: MAC (Catalina)安装完snipast后,按快捷键F1可以截屏,但是每次都是回到主屏幕截屏。就是截屏不了当前的页面。解决方法: 给snipast软件添加屏幕录制的权限,具体操作:系统偏好设置->安全性与隐私,屏幕录制,将snipast添加到列表中。排查过程: 怀疑是快捷键冲突问题。首先查看snipast的快捷键设置:...
//--进入对应路径cd /data/servers/cd rabbitmq/cd sbin///--重启服务rabbitmq-server restart
Mysql日期转换1.mysql常用的日期函数://获取当前日期(yyyy-MM-dd hh:mm:ss)SELECT NOW() FROM DUAL #2021-06-01 17:42:30//获取当前日期(yyyy-MM-dd)SELECT CURDATE() FROM DUAL #2021-06-01//获取当前日期(hh:mm:ss)SELECT CURTIME() FROM DUAL #17:42:30//获取当前日期的时间戳SELECT UNIX_TIMESTAMP(NO