编译安装
1 基础知识
1.1 RCU的概念
– RCU即英文read-copy-update的简写
– RCU是2002年10月添加到Linux内核的同步机制
– RCU允许对内核进行同时的读取与更新(相对于传统互斥锁机制的改进)
– RCU实现可伸缩的机制
– RCU通过维护对象的多个版本来确保读取的一致性(确保所有预先存在的读取关键部分完成之前不会被释放)
– RCU定义并使用高效且可扩展的机制来发布和读取对象的新版本和推迟收集旧版本
1.2 liburcu的简介
– 基于LGPLv2.1的用户空间RCU库
– 此库数据同步库提供可随内核数量伸缩的读取端访问
2 最佳实践
2.1 准备编译环境
yum -y install gcc gcc-c++ make expat-devel yum -y install autoconf automake libtool
2.2 编译前的准备
2.2.1 下载软件包
cd ~ wget https://github.com/urcu/userspace-rcu/archive/v0.7.16.tar.gz -O userspace-rcu-0.7.16.tar.gz
如果需要其他版本,请从以下链接下载,
https://github.com/urcu/userspace-rcu/releases
2.2.2 解压软件包
cd ~ tar -xf userspace-rcu-0.7.16.tar.gz
2.3 编译并安装
2.3.1 准备编译环境
cd ~/userspace-rcu-0.7.16/ ./bootstrap
2.3.2 预编译安装包
cd ~/userspace-rcu-0.7.16/ ./configure
2.3.3 编译并安装
cd ~/userspace-rcu-0.7.16/ make make install
2.4 注册库文件
2.4.1 确定所有库文件的路径
find /usr/ -name \*liburcu-bp.so\*
可见如下提示,
/usr/lib64/liburcu-bp.so.6 /usr/lib64/liburcu-bp.so.6.0.0 /usr/local/lib/liburcu-bp.so.1.0.0 /usr/local/lib/liburcu-bp.so.1 /usr/local/lib/liburcu-bp.so
2.4.2 确认库文件是否已经注册
ldconfig -v | grep liburcu-bp.so
命令显示如下,
liburcu-bp.so.6 -> liburcu-bp.so.6.0.0
由以上命令可知“/usr/local/lib/”目录下的lib文件尚未注册
2.4.3 注册该库文件,
echo '/usr/local/lib' > /etc/ld.so.conf.d/userspace-rcu.conf
再次运行命令确定当前已经注册的lib文件版本,
ldconfig -v | grep liburcu-bp.so
命令显示如下,
liburcu-bp.so.1 -> liburcu-bp.so.1.0.0 liburcu-bp.so.6 -> liburcu-bp.so.6.0.0
参阅文档
===================
rcu的介绍
————
https://lwn.net/Articles/262464/
rcu库的软件介绍
———-
https://liburcu.org/
没有评论