阿弥陀佛
发布时间:2013-01-11 16:55:22
在对zfs的介绍当中,会提到他会对读写请求排序,然后再合并相邻的请求。这也是可以理解的。通过阅读代码发现,实际上对请求的排序工作都是在avl树当中进行的。 点击(此处)折叠或打开struct vdev_queue {????avl_tree_t????vq_deadline_tree;????avl_tree_t????vq_read_tree;????avl_tree_t??......【阅读全文】
发布时间:2013-01-08 19:32:51
zfs的写性能很差,zfs on linux 上的写性能个人感觉更差。 而且这种差很难修改,原因是由于在linux内核当中,在zfs当中,对于一个4k块大小的块设备,如果你要重写一个2k的块,你可以发现大量的读操作从内核的上层发起。操作如下$dd if=/dev/zero of=/dev/zd0 bs=2k count=10000造成大量的读的原因很简单 由于你要2k,2k的写,而真正的zfs 的块设备块大小为4k,所以他会发起一个读取整个块的操作,从磁盘上读一个4k上来,然后将2k的数据写入这个块上,然后将这个新的4k,封装好bio,以request的形式往底层传递......【阅读全文】
发布时间:2012-12-25 19:17:14
当写buffer的操作完成之后,在dbuf_dirty函数当中,会创建一个dr,dr所属的txg 为 open txg 的 txg id。然后 他会插入到dnode的dn_dirty_records当中。为了以后同步的时候使用,所以 根据txgoff=txg & TXG_MASK,算出相应的txgoff,然后插入进去。当open txg 变成 sync txg的时候,sync thread会调用函数spa_sync ,大范围内的进行同步操作。spa_sync(spa,txg)点击(此处)折叠或打开list_insert_tail(&dn->dn_dirty_records......【阅读全文】
发布时间:2012-12-25 18:31:24
不多说,见如下文件。 点击(此处)折叠或打开 backtrace.c: #include <execinfo.h> #include <stdio.h> #include <stdlib.h> #define BT_MAX_TRACE 100 void print_trace (void) { void *array[BT_MAX_TRACE]; size_t size; &......【阅读全文】
发布时间:2012-12-21 22:55:56
在virtualbox中,我们可以模拟在工作中常用的“多屏幕显示”功能,virtualbox最多支持8台虚拟显示器。一般情况下,我们的工作环境都是一台主机箱配合一台显示器工作,可是一些做股票经济或者图形设计的朋友同时关注的信息会比较多,所以一般都会采用在一台主机箱的主板内插入两块显卡控制至多4块显示器且同时显示不同的内容。此功能类似于AMD公司的Eyefinity技术。 【实验四】虚拟机也玩多屏显示 第一步:我们打开“virtualbox manager”,在虚拟机列表框中选择win7这台VM,然后点击工具栏的【setting】按钮,选择【display】......【阅读全文】