LoginSignup
1
0

More than 5 years have passed since last update.

[PostgreSQL] fd.cのデバッグメッセージを表示する

Last updated at Posted at 2018-02-17

起動時とかのファイル関連の処理を把握するために試してみた。
ビルド時の手順。

$ make clean
$ ./configure CFLAGS=-DFDDEBUG
$ make
$ sudo make install

fd.cはデバッグメッセージ出力用にマクロDO_DBが定義されており、FDDEBUGが定義されているときだけログ出力用関数のelogを呼ぶような記述が多くされている。上のconfigureの引数CFLAGSではそれを指定している。

src/backend/storage/file/fd.c
 147 /* Debugging.... */
 148          
 149 #ifdef FDDEBUG
 150 #define DO_DB(A) \                                                                                   
 151     do { \
 152         int         _do_db_save_errno = errno; \
 153         A; \
 154         errno = _do_db_save_errno; \
 155     } while (0)
 156 #else    
 157 #define DO_DB(A) \
 158     ((void) 0)
 159 #endif 

起動時の標準出力はこんな感じ。

$ pg_ctl start
waiting for server to start....LOG:  00000: AllocateDir: Allocated 0 (/usr/local/pgsql/lib)
LOCATION:  AllocateDir, fd.c:2374
LOG:  00000: FreeDir: Allocated 1
LOCATION:  FreeDir, fd.c:2482
2018-02-17 08:09:38.201 GMT [17037] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/postgresql.conf)
2018-02-17 08:09:38.203 GMT [17037] LOG:  FreeFile: Allocated 1
2018-02-17 08:09:38.203 GMT [17037] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/postgresql.conf)
2018-02-17 08:09:38.206 GMT [17037] LOG:  FreeFile: Allocated 1
2018-02-17 08:09:38.206 GMT [17037] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/postgresql.auto.conf)
2018-02-17 08:09:38.206 GMT [17037] LOG:  FreeFile: Allocated 1
2018-02-17 08:09:38.206 GMT [17037] LOG:  AllocateDir: Allocated 0 (/usr/local/pgsql/share/timezone)
2018-02-17 08:09:38.206 GMT [17037] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.207 JST [17037] LOG:  AllocateFile: Allocated 0 (/usr/local/pgsql/share/timezonesets/Default)
2018-02-17 17:09:38.208 JST [17037] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.208 JST [17037] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/PG_VERSION)
2018-02-17 17:09:38.208 JST [17037] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.208 JST [17037] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/global/pg_control)
2018-02-17 17:09:38.208 JST [17037] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.219 JST [17037] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2018-02-17 17:09:38.225 JST [17037] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2018-02-17 17:09:38.228 JST [17037] LOG:  AllocateFile: Allocated 0 (/proc/meminfo)
2018-02-17 17:09:38.229 JST [17037] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.246 JST [17037] LOG:  AllocateDir: Allocated 0 (pg_notify)
2018-02-17 17:09:38.246 JST [17037] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.246 JST [17037] LOG:  OpenTransientFile: Allocated 0 (pg_notify/0000)
2018-02-17 17:09:38.246 JST [17037] LOG:  CloseTransientFile: Allocated 1
2018-02-17 17:09:38.247 JST [17037] LOG:  AllocateDir: Allocated 0 (base/pgsql_tmp)
2018-02-17 17:09:38.247 JST [17037] LOG:  AllocateDir: Allocated 0 (base)
2018-02-17 17:09:38.247 JST [17037] LOG:  AllocateDir: Allocated 1 (base/12362)
2018-02-17 17:09:38.247 JST [17037] LOG:  FreeDir: Allocated 2
2018-02-17 17:09:38.247 JST [17037] LOG:  AllocateDir: Allocated 1 (base/1)
2018-02-17 17:09:38.248 JST [17037] LOG:  FreeDir: Allocated 2
2018-02-17 17:09:38.248 JST [17037] LOG:  AllocateDir: Allocated 1 (base/16384)
2018-02-17 17:09:38.248 JST [17037] LOG:  FreeDir: Allocated 2
2018-02-17 17:09:38.248 JST [17037] LOG:  AllocateDir: Allocated 1 (base/12361)
2018-02-17 17:09:38.248 JST [17037] LOG:  FreeDir: Allocated 2
2018-02-17 17:09:38.248 JST [17037] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.248 JST [17037] LOG:  AllocateDir: Allocated 0 (pg_tblspc)
2018-02-17 17:09:38.248 JST [17037] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.249 JST [17037] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/pg_hba.conf)
2018-02-17 17:09:38.249 JST [17037] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.249 JST [17037] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/pg_ident.conf)
2018-02-17 17:09:38.249 JST [17037] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.255 JST [17037] LOG:  #IK testparam1 is FALSE
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/PG_VERSION)
2018-02-17 17:09:38.255 JST [17038] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  database system was shut down at 2018-02-17 17:07:13 JST
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateFile: Allocated 0 (recovery.conf)
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateFile: Allocated 0 (backup_label)
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateDir: Allocated 0 (base)
2018-02-17 17:09:38.255 JST [17038] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateDir: Allocated 0 (pg_tblspc)
2018-02-17 17:09:38.255 JST [17038] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateDir: Allocated 0 (pg_replslot)
2018-02-17 17:09:38.255 JST [17038] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateDir: Allocated 0 (pg_replslot)
2018-02-17 17:09:38.255 JST [17038] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  OpenTransientFile: Allocated 0 (pg_logical/replorigin_checkpoint)
2018-02-17 17:09:38.255 JST [17038] LOG:  CloseTransientFile: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  AllocateDir: Allocated 0 (pg_twophase)
2018-02-17 17:09:38.255 JST [17038] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  OpenTransientFile: Allocated 0 (pg_xact/0000)
2018-02-17 17:09:38.255 JST [17038] LOG:  CloseTransientFile: Allocated 1
2018-02-17 17:09:38.255 JST [17038] LOG:  OpenTransientFile: Allocated 0 (pg_multixact/offsets/0000)
2018-02-17 17:09:38.256 JST [17038] LOG:  CloseTransientFile: Allocated 1
2018-02-17 17:09:38.256 JST [17038] LOG:  AllocateDir: Allocated 0 (pg_commit_ts)
2018-02-17 17:09:38.256 JST [17038] LOG:  FreeDir: Allocated 1
2018-02-17 17:09:38.259 JST [17039] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/PG_VERSION)
2018-02-17 17:09:38.259 JST [17040] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/PG_VERSION)
2018-02-17 17:09:38.259 JST [17041] LOG:  AllocateFile: Allocated 0 (/home/matsu/pgsql/PG_VERSION)
2018-02-17 17:09:38.259 JST [17039] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.259 JST [17037] LOG:  database system is ready to accept connections
2018-02-17 17:09:38.259 JST [17040] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.259 JST [17041] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.259 JST [17043] LOG:  AllocateFile: Allocated 0 (pg_stat/global.stat)
2018-02-17 17:09:38.259 JST [17043] LOG:  AllocateFile: Allocated 1 (pg_stat/db_16384.stat)
2018-02-17 17:09:38.259 JST [17044] LOG:  OpenTransientFile: Allocated 0 (global/pg_filenode.map)
2018-02-17 17:09:38.259 JST [17043] LOG:  FreeFile: Allocated 2
2018-02-17 17:09:38.259 JST [17044] LOG:  CloseTransientFile: Allocated 1
2018-02-17 17:09:38.259 JST [17044] LOG:  AllocateFile: Allocated 0 (global/pg_internal.init)
2018-02-17 17:09:38.259 JST [17042] LOG:  OpenTransientFile: Allocated 0 (global/pg_filenode.map)
2018-02-17 17:09:38.259 JST [17042] LOG:  CloseTransientFile: Allocated 1
2018-02-17 17:09:38.259 JST [17042] LOG:  AllocateFile: Allocated 0 (global/pg_internal.init)
2018-02-17 17:09:38.259 JST [17043] LOG:  AllocateFile: Allocated 1 (pg_stat/db_0.stat)
2018-02-17 17:09:38.259 JST [17043] LOG:  FreeFile: Allocated 2
2018-02-17 17:09:38.260 JST [17044] LOG:  PathNameOpenFilePerm: global/24654 2 600
2018-02-17 17:09:38.260 JST [17044] LOG:  AllocateVfd. Size 1
2018-02-17 17:09:38.260 JST [17043] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.260 JST [17042] LOG:  PathNameOpenFilePerm: global/24815 2 600
2018-02-17 17:09:38.260 JST [17044] LOG:  PathNameOpenFile: success 3
2018-02-17 17:09:38.260 JST [17042] LOG:  AllocateVfd. Size 1
2018-02-17 17:09:38.260 JST [17044] LOG:  Insert 1 ((null))
2018-02-17 17:09:38.260 JST [17042] LOG:  PathNameOpenFile: success 3
2018-02-17 17:09:38.260 JST [17044] LOG:  LRU: MOST 0 LEAST
2018-02-17 17:09:38.260 JST [17042] LOG:  Insert 1 ((null))
2018-02-17 17:09:38.260 JST [17044] LOG:  LRU: MOST 1 0 LEAST
2018-02-17 17:09:38.260 JST [17042] LOG:  LRU: MOST 0 LEAST
2018-02-17 17:09:38.260 JST [17042] LOG:  LRU: MOST 1 0 LEAST
2018-02-17 17:09:38.260 JST [17044] LOG:  FileSeek: 1 (global/24654) 0 0 2
2018-02-17 17:09:38.260 JST [17042] LOG:  FileSeek: 1 (global/24815) 0 0 2
2018-02-17 17:09:38.260 JST [17042] LOG:  FileSeek: 1 (global/24815) 8192 0 0
2018-02-17 17:09:38.260 JST [17044] LOG:  FileSeek: 1 (global/24654) 0 0 2
2018-02-17 17:09:38.260 JST [17042] LOG:  FileRead: 1 (global/24815) 0 8192 0x7ff776178080
2018-02-17 17:09:38.260 JST [17042] LOG:  FileAccess 1 (global/24815)
2018-02-17 17:09:38.260 JST [17042] LOG:  AllocateFile: Allocated 0 (pg_stat_tmp/global.stat)
2018-02-17 17:09:38.260 JST [17043] LOG:  AllocateFile: Allocated 0 (pg_stat_tmp/global.tmp)
2018-02-17 17:09:38.260 JST [17043] LOG:  AllocateFile: Allocated 1 (pg_stat_tmp/db_0.tmp)
2018-02-17 17:09:38.260 JST [17043] LOG:  FreeFile: Allocated 2
2018-02-17 17:09:38.260 JST [17043] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.270 JST [17042] LOG:  AllocateFile: Allocated 0 (pg_stat_tmp/global.stat)
2018-02-17 17:09:38.270 JST [17042] LOG:  FreeFile: Allocated 1
2018-02-17 17:09:38.270 JST [17042] LOG:  AllocateFile: Allocated 0 (pg_stat_tmp/global.stat)
2018-02-17 17:09:38.270 JST [17042] LOG:  FreeFile: Allocated 1
 done
server started

ちょっと量が多いので、まずは単純にファイルオープン・クローズだけ出力するようにした方が理解はすすみそう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0