Обсуждение: pgsql: Use pg_pread() and pg_pwrite() for data files and WAL.
Use pg_pread() and pg_pwrite() for data files and WAL. Cut down on system calls by doing random I/O using offset-based OS routines where available. Remove the code for tracking the 'virtual' seek position. The only reason left to call FileSeek() was to get the file's size, so provide a new function FileSize() instead. Author: Oskari Saarenmaa, Thomas Munro Reviewed-by: Thomas Munro, Jesper Pedersen, Tom Lane, Alvaro Herrera Discussion: https://postgr.es/m/CAEepm=02rapCpPR3ZGF2vW=SBHSdFYO_bz_f-wwWJonmA3APgw@mail.gmail.com Discussion: https://postgr.es/m/b8748d39-0b19-0514-a1b9-4e5a28e6a208%40gmail.com Discussion: https://postgr.es/m/a86bd200-ebbe-d829-e3ca-0c4474b2fcb7%40ohmu.fi Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/c24dcd0cfd949bdf245814c4c2b3df828ee7db36 Modified Files -------------- src/backend/access/heap/rewriteheap.c | 2 +- src/backend/access/transam/xlog.c | 30 +---- src/backend/storage/file/buffile.c | 46 +------- src/backend/storage/file/fd.c | 205 +++++----------------------------- src/backend/storage/smgr/md.c | 35 +----- src/include/storage/fd.h | 12 +- 6 files changed, 42 insertions(+), 288 deletions(-)
On 11/6/18 4:01 PM, Thomas Munro wrote: > Use pg_pread() and pg_pwrite() for data files and WAL. > > Cut down on system calls by doing random I/O using offset-based OS > routines where available. Remove the code for tracking the 'virtual' > seek position. The only reason left to call FileSeek() was to get > the file's size, so provide a new function FileSize() instead. Getting this warning (gcc 8.2.1 Fedora 29): Nov 06 17:18:55 /home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c: In function ‘FileSize’: Nov 06 17:18:55 /home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c:2007:11: warning: variable ‘vfdP’ set but not used [-Wunused-but-set-variable] Nov 06 17:18:55 Vfd *vfdP; Nov 06 17:18:55 ^~~~ cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On Wed, Nov 7, 2018 at 11:32 AM Andrew Dunstan <andrew.dunstan@2ndquadrant.com> wrote: > On 11/6/18 4:01 PM, Thomas Munro wrote: > > Use pg_pread() and pg_pwrite() for data files and WAL. > > > > Cut down on system calls by doing random I/O using offset-based OS > > routines where available. Remove the code for tracking the 'virtual' > > seek position. The only reason left to call FileSeek() was to get > > the file's size, so provide a new function FileSize() instead. > > Getting this warning (gcc 8.2.1 Fedora 29): > > Nov 06 17:18:55 > /home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c: > In function ‘FileSize’: > Nov 06 17:18:55 > /home/bf/bfr/root/HEAD/pgsql.build/../pgsql/src/backend/storage/file/fd.c:2007:11: > warning: variable ‘vfdP’ set but not used [-Wunused-but-set-variable] > Nov 06 17:18:55 Vfd *vfdP; > Nov 06 17:18:55 ^~~~ Thanks, will fix. -- Thomas Munro http://www.enterprisedb.com