测试了一下zram的并行效果,貌似几乎不需要同时设置多个zram作为swap?

最大的社区版本,Ubuntu的发源地
回复
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

测试了一下zram的并行效果,貌似几乎不需要同时设置多个zram作为swap?

#1

帖子 科学之子 » 2017-05-02 10:07

测试了一下zram的并行效果,貌似几乎不需要同时设置多个zram作为swap?
测试了多次,均没有什么明显的速度变化
不知是否是心理作用,感觉符合硬件核心数量的效果(直觉上)平均来说最好
但只有一个也没差多少(不知是否是硬件太烂无法充分体现多核效果)
测试环境是E5500(双核双线程的CPU),G41主板
测试方法是用mdadm把多个zram组RAID0来模拟多个swap被均衡使用的情况

代码: 全选

$sudo ./zram 16
16zram

/dev/md0:
 Timing buffered disk reads: 1676 MB in  3.00 seconds = 558.06 MB/sec
$sudo ./zram 8
8zram

/dev/md0:
 Timing buffered disk reads: 1668 MB in  3.00 seconds = 555.79 MB/sec
$sudo ./zram 4
4zram

/dev/md0:
 Timing buffered disk reads: 1666 MB in  3.00 seconds = 554.80 MB/sec
$sudo ./zram 2
2zram

/dev/md0:
 Timing buffered disk reads: 1676 MB in  3.00 seconds = 558.41 MB/sec
$sudo ./zram 1
1zram

/dev/md0:
 Timing buffered disk reads: 1670 MB in  3.00 seconds = 556.34 MB/sec
$
zram脚本内容(改写自Debian Wiki的ZRam页面):

代码: 全选

#!/bin/sh

FRACTION=200

MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo`
CPUS="$1"
str=''
SIZE=$(( MEMORY * FRACTION / 100 / CPUS ))

    param=`modinfo zram|grep num_devices|cut -f2 -d:|tr -d ' '`
    modprobe zram $param=$CPUS
    for n in `seq $CPUS`; do
      i=$((n - 1))
      echo $SIZE > /sys/block/zram$i/disksize
      str=${str}" /dev/zram$i "
    done
    mdadm --zero-superblock ${str} 1>/dev/null 2>/dev/null
    mdadm --create --force /dev/md0 --level=0 --raid-devices=${CPUS} ${str} 1>/dev/null 2>/dev/null
    echo ${CPUS}'zram'
    sudo hdparm -t /dev/md0
	sudo mdadm --stop /dev/md0 1>/dev/null 2>/dev/null
    for n in `seq $CPUS`; do
      i=$((n - 1))
    done
    wait
    sleep .5
    modprobe -r zram
另外直接测试zram:

代码: 全选

$sudo hdparm -t /dev/zram0
/dev/zram0:
 Timing buffered disk reads: 1988 MB in  2.82 seconds = 705.28 MB/sec
速度相比用mdadm组的RAID0快不少,不知为什么
Tue Sep 12 15:15:29 CST 2017补充:
貌似是因为zram是空的,所以根本没有实际解压操作?
回复