Build rpm example:zram
rpmbuild
#ll zram-1.0.0
total 32
-rw-r--r-- 1 root root 948 Aug 21 16:44 Makefile
-rw-r--r-- 1 root root 221 Aug 21 16:44 mkzram.service
-rw-r--r-- 1 root root 2633 Aug 21 16:44 README.md
-rw-r--r-- 1 root root 395 Aug 23 11:29 zram
-rw-r--r-- 1 root root 1780 Aug 21 16:44 zram.spec
-rwxr-xr-x 1 root root 988 Aug 22 11:17 zramstart
-rwxr-xr-x 1 root root 931 Aug 22 12:32 zramstat
-rwxr-xr-x 1 root root 162 Aug 21 16:44 zramstop
#ls
zram-1.0.0
#tar -czf zram-1.0.0.tar.gz zram-1.0.0
#cp zram-1.0.0.tar.gz /root/rpmbuild/SOURCES/
#cp zram-1.0.0/zram.spec /root/rpmbuild/SPECS/zram.spec
#rpmbuild -ba /root/rpmbuild/SPECS/zram.spec
文件准备
/usr/lib/systemd/system/mkzram.service
[Unit]
Description=Enable compressed swap in memory using zram
After=multi-user.target
[Service]
RemainAfterExit=yes
ExecStart=/usr/sbin/zramstart
ExecStop=/usr/sbin/zramstop
Type=oneshot
[Install]
WantedBy=swap.target
#cat /usr/sbin/zramstart
#!/bin/sh
#$(nproc) get cpu core number
num_cpus=$(nproc)
[ "$num_cpus" != 0 ] || num_cpus=1
#memory percentage,If have mem:100G cpu:24, default value per disksize=33G/24
MEM_FACTOR_PERCENT=33
num_device=$num_cpus
if [[ -f /etc/sysconfig/zram ]];then
source /etc/sysconfig/zram
if [[ -n $MEM_FACTOR_PERCENT ]];then
mem_percentage=$MEM_FACTOR_PERCENT # memory percentage
fi
if [[ -n $DEVICE_NUM ]];then
num_device=$DEVICE_NUM #device number
fi
fi
memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ')
mem_per_device=$(($memtotal/${num_device}*${mem_percentage}/100*1024))
modprobe -q zram num_devices=${num_device}
last_num=$(($num_device - 1))
for i in $(seq 0 $last_num); do
#enable lz4 if that supported
if [[ -e "/sys/block/zram$i/comp_algorithm" ]];then
grep -q lz4 /sys/block/zram$i/comp_algorithm && echo lz4 > /sys/block/zram$i/comp_algorithm
fi
echo $mem_per_device > /sys/block/zram$i/disksize
mkswap /dev/zram$i
swapon -p 100 /dev/zram$i
done
#cat /usr/sbin/zramstat
#!/bin/sh
ls /sys/block/zram* > /dev/null 2>&1 || exit 0
for i in /sys/block/zram*; do
each_zram=`echo ${i##*/}`
compr=$(< $i/compr_data_size)
orig=$(< $i/orig_data_size)
ratio=0
if [ $compr -gt 0 ]; then
ratio=$(echo "scale=2; $orig/$compr" | bc -q)
#ratio=$(echo "scale=2; $compr/$orig*100" | bc -q)
fi
orig_human_MB=`scale=2;echo "$orig/1024/1024" | bc`
compr_human_MB=`scale=2;echo "$compr/1024/1024" | bc`
swap_size=`cat /proc/swaps | grep -w "${each_zram}" | awk '{print $3}'`
swap_used=`cat /proc/swaps | grep -w "${each_zram}" | awk '{print $4}'`
swap_ratio=$(printf "%.2f" `echo "scale=2;${swap_used}/${swap_size}*100"|bc`)
#echo -e "/dev/${i/*\/}:\t${ratio}% (${orig} bytes (${orig_human_MB} MB) -> ${compr} bytes (${compr_human_MB} MB))"
echo -e "/dev/${i/*\/}:\tswap_used:${swap_ratio}% compress_ratio:${ratio}:1 (${orig} bytes (${orig_human_MB} MB) -> ${compr} bytes (${compr_human_MB} MB))"
done
#cat /usr/sbin/zramstop
#!/bin/sh
for i in $(grep '^/dev/zram' /proc/swaps | awk '{ print $1 }'); do
swapoff "$i"
done
if grep -q "^zram " /proc/modules; then
sleep 1
rmmod zram
fi
#cat /etc/sysconfig/zram
# The factor is how much (from 0 to 100, percentage)
# of system RAM to allocate to ZRAM block devices
# Too big, and your system will start killing off processes
# If total_mem=100G, MEM_FACTOR_PERCENT=33, /dev/zram0+/dev/zram1+... = 33G ,default value is 33%
MEM_FACTOR_PERCENT=33
#Define /dev/zramxx number,if you do not define , default DEVICE_NUM value equal cpu core number
#DEVICE_NUM=1
spec文件准备
#cat zram.spec
Summary: Enable compressed swap in memory
Name: zram
Version: 1.0.0
Release: 2%{?dist}
License: GPLv2
Group: System Environment/Daemons
Source0: %{name}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: systemd-units
Requires(post): systemd-sysv
Requires(post): systemd-units
Requires(preun): systemd-units
Requires(postun): systemd-units
Requires: filesystem >= 2.0.1, initscripts, bc > 1.0
# No debug info for bare scripts, right?
%define debug_package %{nil}
# http://fedoraproject.org/wiki/Changes/UnversionedDocdirs
%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
%global _docdir_fmt %{name}
%description
zram compresses swap partitions into RAM for performance.
You need Linux kernel version 2.6.37.1 or better to use zram.
%prep
%setup -q
%build
%install
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
mkdir -p $RPM_BUILD_ROOT%{_unitdir}
ln -s $RPM_BUILD_ROOT/usr/lib $RPM_BUILD_ROOT/lib
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
%makeinstall DESTDIR=$RPM_BUILD_ROOT
%post
%systemd_post mkzram.service
%preun
%systemd_preun mkzram.service
%postun
%systemd_postun_with_restart mkzram.service
%files
%doc README.md
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%{_unitdir}/mkzram.service
%{_sbindir}/zramstart
%{_sbindir}/zramstop
%{_sbindir}/zramstat
%exclude /lib
%changelog
* Tue Nov 25 2014 Juan Orti <jorti@fedoraproject.org> - 1.0.0-1
- Spec file cleanup
* Mon Nov 25 2013 Doncho Gunchev <dgunchev@gmail.com> - 0:1.0.0-2
- http://fedoraproject.org/wiki/Changes/UnversionedDocdirs
- Added kmod-staging dependency
- Test on Fedora 19
* Mon Sep 02 2013 Doncho Gunchev <dgunchev@gmail.com> - 0:1.0.0-1
- Add Darren Steven's build fix for fedora 18
* Tue Mar 19 2013 Doncho Gunchev <dgunchev@gmail.com> - 0:1.0.0-0
- Initial package
Build rpm example:zram的更多相关文章
- Build RPM package from source code
# yum install rpm-build# wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz# vim rsync.specNam ...
- Hadoop build error java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter
When running the command: + mvn site site:stage -DskipTests -DskipTest -DskipITs you get an error: ...
- 制作nginx的rpm包出现问题
在学习打包rpm,找到了个不错的参考站点 https://src.fedoraproject.org/cgit/rpms/ 过程: git clone -b el6 git://pkgs.fedor ...
- gbs build使用说明
注:本文从:https://source.tizen.org/documentation/articles/gbs-build 翻译而来. 1 前言 通过使用gbs build指令,开发者可以在本地编 ...
- ceph 生成rpm包
概述 从ceph的源码build出rpm包: #git clone --recursive https://github.com/ceph/ceph.git #./instal-dep.sh 以上两点 ...
- 制定RPM包和加入YUM源
##################################################### ##如有转载,请务必保留本文链接及版权信息 ##欢迎广大运维同仁一起交流linux/unix ...
- CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25
所需源码包: /usr/local/src/Apache-2.2.25/httpd-2.2.25.tar.gz 编译安装 Apache2.2.25 #切换到源码目录 cd /usr/local/src ...
- CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6
Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...
- RHEL6.4编译安装企业级LAMMP平台
一.LAMMP简介 二.使用软件及服务器架构说明 三.配置及安装过程 1.安装arp与httpd 2.安装mysql 3.安装php(php-fpm) 4.安装Xcache ...
随机推荐
- Day 13迭代器生成器
迭代器 1.迭代器就是迭代的工具,迭代也可以说成是重复,并且每一次重复都是基于上一次的结果而来的,在python中一切皆对象. 2.可迭代对象:只要拥有__iter__方法的对象都是可迭代对象. 3. ...
- 原生node写一个静态资源服务器
myanywhere 用原生node做一个简易阉割版的anywhere静态资源服务器,以提升对node与http的理解. 相关知识 es6及es7语法 http的相关网络知识 响应头 缓存相关 压缩相 ...
- 一、简介 ELO商户类别推荐有助于了解客户忠诚度
Elo Merchant Category Recommendation Help understand customer loyalty (ELO商户类别推荐有助于了解客户忠诚度) 竞赛描述: 想象 ...
- [caffe] caffe训练tricks
Tags: Caffe Categories: Tools/Wheels --- 1. 将caffe训练时将屏幕输出定向到文本文件 caffe中自带可以画图的工具,在caffe路径下: ./tools ...
- 谈谈python里面关于任务队列
谈谈python里面关于任务队列 为什么要做任务队列 要回答这个问题我们首先看看在流水线上的案列,如果人的速度很慢,机器的速度比人的速度快很多,就会造成,机器生产的东西没有及时处理,越积越多,造成阻塞 ...
- SQLSERVER数据库还原的时候,报 WITH MOVE 子句可用于重新定位一个或多个文件 的错误,求解决
http://www.flybi.net/question/4070 梁勇 - 天善智能微软BI首席讲师 数据库备份文件还原产生这个错误的原因是:还原目录下存在多个同名文件, 如图所示,只需要将第2个 ...
- BA--空调系统一次泵和二次泵区别
通常来说,空调系统是按照满负荷设计的,但实际运行中,满负荷运行的 时间不足 3% ,空调设备绝大部分时间内在远低于额定负荷的情况下运转.在 部分负荷下,虽然冷水机组可以根据实际负荷调节相应的冷量输出, ...
- [GraphQL] Fetch Server Data and Client-side State in One Query using React Apollo + GraphQL
In this lesson we look at how the Apollo @client directive can be used to fetch client-side state al ...
- Impala ODBC 安装笔记
Impala在线文档介绍了 Impala ODBC接口安装和配置 http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5 ...
- SSM框架——具体整合教程(Spring+SpringMVC+MyBatis)
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了.项目在技术上已经没有什么难点了,基于现有的技术就能够实现想要的功能.当然肯定有非常多能够改进的地方.之前没有记录SSM整 ...