在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 test O_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 fdatasync is 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/sec Compare file sync methods using two 8kB writes: (in wal_sync_method preference order, except fdatasync is 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/sec Compare open_sync with different write sizes: (This is designed to compare the cost of writing 16kB in 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/sec Test if fsync on non-write file descriptor is honored: (If the times are similar, fsync() can sync data written on a different descriptor.) write, fsync, close 10936.611 ops/sec write, close, fsync 11123.223 ops/sec Non-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)
使用pg9.1工具测试fsync性能
最新推荐文章于 2024-07-16 14:27:50 发布