免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2972 | 回复: 0
打印 上一主题 下一主题

把文件永久cache到内存的工具filecache [复制链接]

论坛徽章:
3
数据库技术版块每日发帖之星
日期:2015-06-18 22:20:00数据库技术版块每日发帖之星
日期:2015-06-21 22:20:00数据库技术版块每日发帖之星
日期:2015-08-27 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-18 20:55 |只看该作者 |倒序浏览
程序解决的问题:
  我们知道在PostgreSQL数据库下,可以使用pgfincore工具把数据文件cache到文件系统内存中,但如果有其它文件被频繁访问,被cache的数据文件还是有可能被挤出内存,导致cache失效。我写的这个工具可以保证文件永久被cache到内存中,不被交换出去。

程序的原理说明:
   此程序通过打开一个文件,把文件的内容映射到内存中,然后把这些内存lock住。只要这个程序不退出,这个文件就被永久的cache住了。其它程序访问这个文件时,也一样不会在从物理磁盘上读了,而是直接从这块共享内存中读取了。

程序参数说明:

  -f <cfgfile>
     指定一个配置文件,在配置文件中需要cache的文件占一行,这样filecache就可以同时cache很多个文件。

  -c  <百分比>
     指定cache文件的百分比,一般可以取110,意思是110%。cache文件时,如果这个值设置为100%时,
     当文件变大时,变大的部分并不会被永远cache在内存中,于是增加了这个参数,设置为110%时,
     当文件增加大小到原先的110%时,后面增大的10%的空间仍然会被cache中内存中。

  -p  <pid file>
     指定一个pid文件,会把自己的进程号写到这个文件中,如果不指定,会生成filecache.pid的文件。
     
  -M <最大的文件尺寸>
     大于这值的文件,就不会被cache,防止太大的文件把内存给撑爆。

使用说明:
    1. 在Linux下使用时,需要设置max locked memory大于本程序cache文件所需要的内存大小。使用之前使用通过ulimit -a检查:
    postgres@mydb:/home/postgres/filecache>ulimit -a
    .....
    max locked memory       (kbytes, -l) unlimited
    .....
    .....

    2. 在solaris下使用,请使用下面的命令设置可以cache住内存的最大大小:
    projadd -n -U postgres -G postgres -K "project.max-locked-memory=(priv,4096MB,deny)" user.postgres
    使用下面命令对用户postgres用户加权限,让postgres可以锁定内存:
    usermod -K defaultpriv=basic,priv_proc_lock_memory postgres

    3. 此工具后指定一个存有需要cache文件的列表文件,这个列表可以自行写一个脚本来生成。cachedict.sh脚本就是一个这样的脚本,
    此脚本把所有的数据字典表的文件和索引的文件都生成到cachedict.lst文件就,然后运行filecache,这样就把PostgreSQL的所有
    字典表都永久的cache到内存中的,如果你需要cache其它表,可以改一改这个脚本,就可以实现你的功能,当然你也可以写一个全新的脚
    本来实现你的功能。

  有兴趣的可以到我的blog中下载此工具: 
filecache下载
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP