发布时间:2014-09-05 13:30:45作者:知识屋
root@utumno:~# fio ~/rw4krandwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64fio 1.59Starting 1 processJobs: 1 (f=1): [w] [100.0% done] [0K/49885K /s] [0 /12.2K iops] [eta 00m:00s]randwrite: (groupid=0, jobs=1): err= 0: pid=1770 write: io=8192.3MB, bw=47666KB/s, iops=11916 , runt=175991msec cpu : usr=4.33%, sys=14.28%, ctx=2071968, majf=0, minf=19 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0% issued r/w/d: total=0/2097215/0, short=0/0/0Run status group 0 (all jobs): WRITE: io=8192.3MB, aggrb=47666KB/s, minb=48810KB/s, maxb=48810KB/s, mint=175991msec, maxt=175991msecDisk stats (read/write): sdb: ios=69/2097888, merge=0/3569, ticks=0/11243992, in_queue=11245600, util=99.99%添加了bcache:
root@utumno:~# fio ~/rw4krandwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64fio 1.59Starting 1 processJobs: 1 (f=1): [w] [100.0% done] [0K/75776K /s] [0 /18.5K iops] [eta 00m:00s]randwrite: (groupid=0, jobs=1): err= 0: pid=1914 write: io=8192.3MB, bw=83069KB/s, iops=20767 , runt=100987msec cpu : usr=3.17%, sys=13.27%, ctx=456026, majf=0, minf=19 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0% issued r/w/d: total=0/2097215/0, short=0/0/0Run status group 0 (all jobs): WRITE: io=8192.3MB, aggrb=83068KB/s, minb=85062KB/s, maxb=85062KB/s, mint=100987msec, maxt=100987msecDisk stats (read/write): bcache0: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%添加了bcache之后IOPS为18.5K,裸SSD设备为12.2K。bcache表现更佳是因为bcache按顺序将写请求发送到SSD,但额外加入了更新索引的开销。bcache对随机写做了优化,bcache还从高IO深度(64)获益,因为在高IO深度的情况下就可以将多次下标更新合并为一次写请求。高IO深度就代表着高系统负载,当IO深度下调时IOPS也出现变化:
IO depth of 32: bcache 20.3k iops, raw ssd 19.8k iops
IO depth of 16: bcache 16.7k iops, raw ssd 23.5k iops
IO depth of 8: bcache 8.7k iops, raw ssd 14.9k iops
IO depth of 4: bcache 8.9k iops, raw ssd 19.7k iops
SSD性能在不同IO深度时出现了波动。对于不同的写模型会有不同的结果,我们只关注两者的相对数值。IO depth of 64: bcache 29.5k iops, raw ssd 25.4k iops
IO depth of 16: bcache 28.2k iops, raw ssd 27.6k iops
bcache略胜一筹,可能跟要读的数据相关。这里的结论是随机读时bcache与裸SSD读性能是相同的。这里要注意的是,读4K随机写下去的数据,这样的测试模型对于bcache是不好的。这意味btree都是4K大小,btree将比通常时候大得多。在实际应用中,平均大小是100K。btree变大就意味着索引占用更大的内存空间,并且有一部分是在二级索引。根据个人经验这些开销在大型机器IOPS超过500K时才会有实际影响。如果大家有其他的测试方法或者我的测试方法中有什么问题请通知邮件告诉我。# cat /usr/lib/udev/rules.d/61-bcache.rules....# Backing devices: scan, symlink, registerIMPORT{program}="/sbin/blkid -o udev $tempnode"# blkid and probe-bcache can disagree, in which case don't registerENV{ID_FS_TYPE}=="?*", ENV{ID_FS_TYPE}!="bcache", GOTO="bcache_backing_end"...# lsblk -o NAME,MAJ:MIN,RM,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID,PARTUUIDNAME MAJ:MIN RM SIZE TYPE FSTYPE MOUNTPOINT UUID PARTUUIDsda 8:0 0 111.8G disk├─sda1 8:1 0 3G part vfat /esp 7E67-C0BB d39828e8-4880-4c85-9ec0-4255777aa35b└─sda2 8:2 0 108.8G part ext2 93d22899-cd86-4815-b6d0-d72006201e75 baf812f4-9b80-42c4-b7ac-5ed0ed19be65sdb 8:16 0 931.5G disk└─sdb1 8:17 0 931.5G part ntfs FAD2B75FD2B71EB7 90c80e9d-f31a-41b4-9d4d-9b02029402b2sdc 8:32 0 2.7T disk bcache 4bd63488-e1d7-4858-8c70-a35a5ba2c452└─bcache1 254:1 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1sdd 8:48 0 2.7T disk bcache ce6de517-7538-45d6-b8c4-8546f13f76c1└─bcache0 254:0 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1sde 8:64 1 14.9G disk└─sde1 8:65 1 14.9G part ext4 / d07321b2-b67d-4daf-8022-f3307b605430 5d0a4d76-115f-4081-91ed-fb09aa2318d在上面的例子中有一个分区之前是ext2文件系统。bcache将通过以下指令自动构建:
# make-bcache -B /dev/sdc /dev/sdd -C /dev/sda2因为设备/dev/sdc和/dev/sdd标识了bcache文件系统,因此会在系统启动时自动添加,而/dev/sda2则需要手动添加。在/dev/sda2偏移1024处仍残留有之前文件系统的超级块信息,而bcache信息是从4096偏移开始记录,修复的方法是:
# dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda2在系统重启之后所有磁盘被正确识别:
# lsblk -o NAME,MAJ:MIN,RM,SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID,PARTUUIDNAME MAJ:MIN RM SIZE TYPE FSTYPE MOUNTPOINT UUID PARTUUIDsda 8:0 0 111.8G disk├─sda1 8:1 0 3G part vfat /esp 7E67-C0BB d39828e8-4880-4c85-9ec0-4255777aa35b└─sda2 8:2 0 108.8G part bcache 93d22899-cd86-4815-b6d0-d72006201e75 baf812f4-9b80-42c4-b7ac-5ed0ed19be65 ├─bcache0 254:0 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1 └─bcache1 254:1 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1sdb 8:16 0 931.5G disk└─sdb1 8:17 0 931.5G part ntfs FAD2B75FD2B71EB7 90c80e9d-f31a-41b4-9d4d-9b02029402b2sdc 8:32 0 2.7T disk bcache 4bd63488-e1d7-4858-8c70-a35a5ba2c452└─bcache1 254:1 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1sdd 8:48 0 2.7T disk bcache ce6de517-7538-45d6-b8c4-8546f13f76c1└─bcache0 254:0 0 2.7T disk btrfs 2ff19aaf-852e-4c58-9eee-3daecbc6a5a1sde 8:64 1 14.9G disk└─sde1 8:65 1 14.9G part ext4 / d07321b2-b67d-4daf-8022-f3307b605430 5d0a4d76-115f-4081-91ed-fb09aa2318dd同样地,残留超级块还会引起类似的其他错误。
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能