使用pg9.1工具测试fsync性能

来源:互联网 发布:网络列头柜布线 编辑:程序博客网 时间:2024/06/05 18:00


在postgreSQL9.1(目前为测试版本)中,增加了一个新的工具:postgresql-9.1beta3/contrib/pg_test_fsync,可以用来测试fsync的性能


1. 官网下载pg(注意,9.1之前的版本不包含这个工具)

2. configure && make  (不得不承认,比mysql的配置要简单好多好多好多啊……)

3.cd 到postgresql-9.1beta3/contrib/pg_test_fsync目录下面,可以看到已经生成了一个可执行文件pg_test_fsync

4.  直接 ./pg_test_fsync

$./pg_test_fsync 2000 operations per testO_DIRECT supported on this platform for open_datasync and open_sync.Compare file sync methods using one 8kB write:(in wal_sync_method preference order, except fdatasyncis Linux's default)        open_datasync                                 n/a        fdatasync                       12749.248 ops/sec        fsync                           12751.280 ops/sec        fsync_writethrough                            n/a        open_sync                       13565.668 ops/secCompare file sync methods using two 8kB writes:(in wal_sync_method preference order, except fdatasyncis Linux's default)        open_datasync                                 n/a        fdatasync                        8146.540 ops/sec        fsync                            8314.176 ops/sec        fsync_writethrough                            n/a        open_sync                        7222.146 ops/secCompare open_sync with different write sizes:(This is designed to compare the cost of writing 16kBin different write open_sync sizes.)        16kB open_sync write            11368.029 ops/sec         8kB open_sync writes            7019.194 ops/sec         4kB open_sync writes            4662.276 ops/sec         2kB open_sync writes            2564.139 ops/sec         1kB open_sync writes            1315.830 ops/secTest if fsync on non-write file descriptor is honored:(If the times are similar, fsync() can sync data writtenon a different descriptor.)        write, fsync, close             10936.611 ops/sec        write, close, fsync             11123.223 ops/secNon-Sync'ed 8kB writes:        write                           161173.342 ops/sec

默认情况下,pg_test_fsync会做2000次操作来进行统计,由于代码量比较小,也很简单,我们也可以根据需要修改程序:

1.static int  ops_per_test = 2000;   //执行操作的次数

2. #define XLOG_BLCKSZ_K   (XLOG_BLCKSZ / 1024)   其中XLOG_BLOCKSZ代表一个文件块的大小,在PostgreSQL中一般默认为8KB,

我们可以对其简单的修改来满足自己的需求:

 22 #define XLOG_BLCKSZ 16384  23 #define XLOG_BLCKSZ_K   (XLOG_BLCKSZ / 1024)



原创粉丝点击