利用tmpfs加速gnome-shell overview模式Applications索引

标签: Desktop Linux shell inotify gnome3 tmpfs | 发表时间:2011-07-29 18:01 | 作者:bigeagle jin
出处:http://bigeagle.me

gnome-shell的overview模式着实是个尤物,动态工作区和任务管理丝毫不输于Lion的Mission Control,而Applications与Lion的LaunchPad也是异曲同工。

然而有一点不爽,每次加载Applications都很慢,而且硬盘狂转,搞的这个很美丽的功能几乎不被使用。有必要加速一下。

考虑到速度瓶颈主要是磁盘读取 /* 对MBA的SSD表示羡慕嫉妒恨 */ ,想到如果能预先把Applications里的内容缓存到内存里就好了,Applications里其实是加载了/usr/share/applications里的文件,于是想到了把/usr/share/applications 挂载为 tmpfs 。 //总共不过[0-9]M的文件,这点内存咱还是有的

mkdir -p /tmp/app_temp
cp -aR /usr/share/applications/* /tmp/app_temp #先把文件备份出来
mount -t tmpfs none /usr/share/applications
cp -aR /tmp/app_temp/* /usr/share/applications

现在试试,速度是不是快多了?

神马?有bug?这是奇迹么?你信么?反正我信了!

用tmpfs虽然速度快了,但只要一关机,所有数据就都丢失啦!//就好像车头被掩埋了一样~

解决办法也很简单,在合适的时候把内容拷贝回硬盘,每次开机时再拷贝回去就是。

对于“合适的时候”,笨一点的方法可以是用crond周期同步一下,本人用一种聪明点的办法 —- 利用 inotify .

Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建 移动等操作。

也就是说,利用inotify监控/usr/share/applications目录,一旦发生变化,就想磁盘中同步数据,每次开机时从磁盘中恢复即可。生产环境中常用inotify+rsync实现实时同步,不过这种小hack要用rsync实在让我不爽,直接cp和rm得了。

#!/bin/bash
MEM_DIR="/usr/share/applications"
HD_DIR="/var/lib/app_db"
cp -aR ${HD_DIR}/* ${MEM_DIR}/
inotifywait -mrq --format '%e%%%f' \
   -e modify,delete,move,create ${MEM_DIR} \
  |while read raw_data
do
	DO=`echo $raw_data|cut -d% -f1`
	FILE=`echo $raw_data|cut -d% -f2`
	case "$DO" in
	  CREATE|MOVED_TO|MODIFY)
		cp ${MEM_DIR}/${FILE} ${HD_DIR}/
		;;
	  DELETE|MOVED_FROM)
		rm ${HD_DIR}/${FILE}
		;;
	esac
done

把这段脚本存为 sync_tmpfs.sh ,加入 /etc/rc.loal 中,使之开机自动运行:

(bash /path/to/script/sync_tmpfs.sh ) &

再修改一下fstab

tmpfs /usr/share/applications tmpfs defaults,mode=0755 0 0

重启一下,大功告成~

相关 [利用 tmpfs 加速] 推荐:

利用tmpfs加速gnome-shell overview模式Applications索引

- jin - K.I.S.S
gnome-shell的overview模式着实是个尤物,动态工作区和任务管理丝毫不输于Lion的Mission Control,而Applications与Lion的LaunchPad也是异曲同工. 然而有一点不爽,每次加载Applications都很慢,而且硬盘狂转,搞的这个很美丽的功能几乎不被使用.

nginx cache静态化+tmpfs 高性能cdn方案

- - 开源软件 - ITeye博客
本文档主要分为3部分内容:. (1)       解决不同URL访问不同后端的nginx配置方法. (2)       Nginx cache和内存文件系统的配置方法. (3)       Proxy cache的详细配置内容. 2       匹配不同URL访问不同后端. 如果想通过访问不同类别URL分配到不同的后端通过nginx实现,首先举个例子,将需求场景进行描述:.

nginx cache静态化+tmpfs 高性能cdn方案 原创-胡志广

- - 开源软件 - ITeye博客
nginx cache静态化+tmpfs 高性能cdn方案 原创-胡志广. cachenginxproxy静态化. 本文档主要分为3部分内容:. (1)       解决不同URL访问不同后端的nginx配置方法. (2)       Nginx cache和内存文件系统的配置方法. (3)       Proxy cache的详细配置内容.

NativeTask:利用本地执行引擎加速Hadoop

- - 技术改变世界 创新驱动中国 - 《程序员》官网
NativeTask是Hadoop MapReduce的高效执行引擎实现. 与MapReduce相比,NativeTask获得了不错的性能提升,主要包括更好的排序实现、关键路径避免序列化、避免复杂抽象、更好的利用压缩等. NativeTask是一个高性能MapReduce执行单元,支持C++接口. 顾名思义,NativeTask是一个本地数据处理引擎,专注于数据处理本身,在MapReduce的环境下,它仅替换Task模块功能.

利用jsdoc和idea加速javascript开发(一)

- - JavaScript - Web前端 - ITeye博客
当项目里的js代码到达一定规模后, js的开发会变成一个很头痛的问题, 由于没有静态类型语言的类型支持,很少有IDE能够对js代码提供有效的代码补全,方法和参数错误检查等功能. 想要在几万行js代码弄清楚某一个变量应该是什么类型, 有什么方法, 方法的参数是什么, 返回值是什么是件很令人头痛的事情.

利用一点机器学习来加速你的网站

- - IT瘾-bigdata
在生活中,我有 73% 的时间在考虑 web 性能-在低配手机上达到 60 FPS、 有序加载资源、离线缓存任何能缓存的资源. 最近,我发现自己对 web 性能的定义可能太狭隘了,从用户的角度上来说,这些只是 web 性能中的一些小插曲. 所以我打开了我经常去的网站,尝试了所有的用户可能的操作,并记录操作所花费的时间.

加速膨胀

- ndv - 博客李淼
宇宙学从上世纪六十年代成了现代科学的一部分,既有理论,也有实验(观测). 大爆炸宇宙学说先有理论,后有观测支持,这和很多物理学发现有所不同. 物理学家们最初不仅预言了一些轻元素的丰度(氢、氦、氘、锂等),还预言了微波背景辐射. 后者是无所不在的温度大约为2.7K的黑体辐射,在六十年代为威尔逊和彭齐亚斯所发现.

加速MapReduce2

- - CSDN博客云计算推荐文章
       原文链接: Getting MapReduce 2 Up to Speed        因为文章中采用的改善措施,CDH 5 让MapReduce2中作业的速度和MapReduce1的速度一样(甚至更快).        一旦你知道问题所在,性能改进的地方会很微小、简单,甚至乏味.

加速Linux程序编译

- jin - 李凡希的Blog
  项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情. Research了一下,找到以下可以帮助提高速度的方法,总结一下.   有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话.