前一段时间在看多核架构下如何提高程序性能,TOP会议自从08年后发了不多的几篇论文,并不是大家不再关注多核架构的性能问题,而是操作系统层面的东西确实不大好动,需要很多系统经验,对于实验室现有的环境,没有传承基础上做直接做OS方面,门槛太高。
废话少说:最近重新开始关注datagrid方面的内容,先从redis入手。
redis: 自己的浅层次理解 就是把数据放在内存中处理,并支持永久性存储。
redis是个单线程程序,最多可以运行在一个核上。
1. 在官网下载redis源码包
2.在linux环境下(ubuntu)解压
3.进入解压后文件夹 输入make 自动安装, 为确保安装成功 可再 make test 测试
4.安装完毕 在src文件夹下会生成 可执行文件 redis-server redis-cli 等
可以在网上找一些redis操作相关的资料
http://fanlb.blogbus.com/logs/128714439.html
来熟悉一下基本操作,熟悉后大体对redis的功能有些了解
我想实现的是在多核系统上每个核绑定运行一个redis实例,这就要求 实现redis多实例+绑定单个核
一、首先 实现redis多实例(一种可执行方案,并不一定是最优方案)
再解压源码包,重新安装一个新的redis文件,和刚才提到的方法相同,为便于管理可以把不同的redis文件分别命名为redis-1,redis-2
需要更改的是 新文件里的redis.conf , 将 port 6379 改为port 6380
具体的配置文件条目解释可参考 http://blog.csdn.net/Java2King/article/details/5754476
如何开启不同的端口服务呢?
进入新的src 目录, 输入 ./redis-server XXX/redis.conf (修改过端口后的配置文件,如果不指定,就会执行默认配置文件,端口号仍然是6379)
连接新端口有两种方式
1. telnet 127.0.0.1 6380 在里面执行操作
2. 在src文件夹下 ./redis-cli -p 6380
显示 “redis 127.0.0.1:6380> ” 再执行redis命令
二、绑定单个核
Linux系统自带程序绑定核命令 taskset
这种情况下需要的参数 -pc
具体使用 taskset -pc CPUID PID
CPUID 就是核编号 PID是taskset 进程号
在多实例情况下,逐条命令实行可能比较麻烦,在实际应用时可以写shell脚本 简化操作。