寻觅生命中的那一片浅草......

每月存档 十二月, 2015

ZZ:Let’s Encrypt,免费好用的 HTTPS 证书

很早之前我就在关注 Let’s Encrypt 这个免费、自动化、开放的证书签发服务。它由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ISRG 是来自于美国加利福尼亚州的一个公益组织。Let’s Encrypt 得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多大公司的支持,发展十分迅猛。

全文见:Let’s Encrypt,免费好用的 HTTPS 证书

CPU拓扑查看工具:hwloc

如果要看CPU拓扑,lscpu,numastat都可以看,今天发现hwloc,会更直观些,下面摘抄官网介绍,简单点说,hwloc可以显示CPU拓扑,比较方面地查看CPU各级缓存以及各个核、物理CPU之间,可以共享哪一级别的CPU cache

The Portable Hardware Locality (hwloc) software package provides a portable abstraction (across OS, versions, architectures, …) of the hierarchical topology of modern architectures, including NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading.

简单使用

hwloc-ls

如果是文本界面,则会输出文字,如果是桌面环境,则会弹窗一个窗口

引用一张官方的图:

 

ZZ:rlwrap解决sqlplus上下键找历史命令

在Linux下面使用sqlplus默认不可以使用上下键查找历史命令,使用起来很不方便,影响效率。不过,可以通过第三方工具rlwrap来解决这个问题。

rlwrap下载:http://utopia.knoware.nl/~hlub/uck/rlwrap/

转载自:rlwrap解决sqlplus上下键找历史命令

当然也适用于Erlang的命令,为其添加历史命令记录

新潮的CentOS源:ELRepo

喜欢CentOS的大众化,又不喜欢它对新东西支持不好?没有关系,我们来试试ELRepo这个源

官方介绍

The ELRepo Project focuses on hardware related packages to enhance your experience with Enterprise Linux. This includes filesystem drivers, graphics drivers, network drivers, sound drivers, webcam and video drivers.

简单配置

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
# 主线stable版本,较新
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel
# 长期支持,相对ml较旧
yum --enablerepo=elrepo-kernel install kernel-lt kernel-lt-devel

在cgroup下进行zram性能测试

注意到zram有几个月时间了,据资料显示,最早使用内存压缩作为swap的,应该是苹果,从10.9开始支持,而Linux,有几种内存压缩的方法,分别是:

  • zram,CentOS 6支持,但默认没有开启,Android方面,华为P8也支持并默认启用
  • zswap
  • zcache

网上鲜有性能测试的文章,这也是本人一块心病,上周日抽空测试了下,本文测试的是zram

测试目的

  • 对比磁盘swap设备和内存swap设备的性能差异
  • 学习cgroup的使用
  • 学习ArchLinux
  • 学习systemd
  • 使用CubieTruck进行装逼

测试难点

如何让程序产生swap操作

测试环境

硬件

  • CubieTruck(多谢老婆的圣诞礼物)
  • A20,双核
  • 2G内存
  • 64G的tf卡

系统环境

  • ArchLinuxARM-armv7-latest
  • 内核版本:4.3.0-2-ARCH
  • 系统装在一张64G的tf卡上,用以下代码测试得到读写速度如下,比较差,会影响磁盘swap设备的数据
sudo dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 87.9956 s, 12.2 MB/s

测试方法

  • mbw,这个不详细说了,可以参考Linux内存带宽的一些测试笔记,如果系统是2G内存,则复制1G的数据,会导致程序使用swap
  • cgroup限制内存大小 + 网络搜索的一个程序,本文使用这个进行测试,在分配内存超过cgroup限制时,系统会把数据交换到swap

内存分配代码

代码来自:cgroup–内存 限制内存测试,做了一点点修改,加入了开始和结束时间,请原谅我不懂C

源码

#include <stdio.h>
#include <stdlib.h>

#define MEGABYTE (1024*1024)

int main(int argc, char *argv[])
{
    system("date");
    void *myblock = NULL;
        int count = 0;
    int i,n=300;  /// 分配300M
        while (n--)
        {
                myblock = (void *) malloc(MEGABYTE);
                if (!myblock) 
                break;
            for(i = 0;i < MEGABYTE / 4;i ++)    /// 由于操作系统的某些机制,申请的内存只有在用到的时候才
        {           /// 真正申请内存,所以这里需要写内存操作。
            ((unsigned int*)myblock)[i] = i;
        }
                count++;
            printf("%d \n",count);
        }
        system("date");
        exit(0);
}

编译

gcc malloc_zram.c -o malloc_zram

cgroup设置

安装服务运行方式软件

如果单纯用这个,需要修改cgroup.config,比较麻烦一点

sudo pacman -Sy cgmanager

安装命令行方式软件

安装libcgroup,提供了cgcreate、cgexec等命令,针对单次执行,测试会比较方便

sudo pacman -Sy --noconfirm  byacc flex
cd /dist/dist
wget http://downloads.sourceforge.net/libcg/libcgroup-0.41.tar.bz2
cd ../src
tar xf ../dist/libcgroup-0.41.tar.bz2
cd libcgroup-0.41
./configure
make
sudo make install

命令行设置cgroup

# 新增一个mysql的内存组
sudo cgcreate -g memory:mysql
# 切换到root,设置内存限制大小为50M
sudo su -
echo 50M > memory.limit_in_bytes

设置磁盘swap

sudo fallocate -l 512M /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

设置zram

sudo su -
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 500M > /sys/block/zram0/disksize
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0

测试指令和结果

先测试磁盘swap,然后关闭磁盘swap,启用zram,再测试zram,忙活了一天,本来是要测试MySQL的,后来发现设置后,MySQL的内存并没有受限制,所以转战简单的内存测试程序,时间限制,只测试了一次

# 从源码看出,是分配300M内存
# 使用memory:mysql这个内存组
cgexec -g memory:mysql /dist/src/malloc_mem
  • 测试的时候,可以用top或者htop观察swap的使用情况
  • 可以看到swap是每50M,50M地增加

磁盘swap的数据

共耗时80s

# 开始
Sun Dec 13 17:06:16 CST 2015
# 结束
Sun Dec 13 17:07:36 CST 2015

zram的数据

共耗时8s

# 开始
Sun Dec 13 17:12:28 CST 2015
# 结束
Sun Dec 13 17:12:36 CST 2015

结论

性能提升了90%

本测试存在问题

  • 未测试zram下MySQL的性能,MySQL测试感觉更接地气
  • TF卡比较影响性能,要在服务器上测试
  • 只测了一次数据,没有多次测试进行取平均值
  • 未监控CPU的变化

参考资料

2015年十二月
« 11月   1月 »
 123456
78910111213
14151617181920
21222324252627
28293031