Обсуждение: Configuring fdatasync for Solaris2
Attached is a patch to find out fdatasync in libposix4 for Solaris2. The function fdatasync resides in libposix4 on Solaris2. Configure does not try to find the function in libposix4 and then misses fdatasync. Kenji Sugita sugita@sra.co.jp Index: configure.in =================================================================== RCS file: /home/mgr/sugita/jobs/cvs-master/pgsql/src/7.1.3/build/configure.in,v retrieving revision 1.1.1.1 diff -u -3 -p -r1.1.1.1 configure.in --- configure.in 16 Aug 2001 18:36:31 -0000 1.1.1.1 +++ configure.in 10 Sep 2001 14:53:56 -0000 @@ -656,6 +656,10 @@ if test "$PORTNAME" != "aix" -a "$PORTNA then AC_CHECK_LIB(bsd, main) fi +if test "$PORTNAME" = "solaris" +then + AC_CHECK_LIB(posix4, main) +fi AC_CHECK_LIB(util, setproctitle) AC_CHECK_LIB(m, main) AC_CHECK_LIB(dl, main)
Kenji Sugita writes: > Attached is a patch to find out fdatasync in libposix4 for Solaris2. Please use AC_SEARCH_LIBS and do not make the test dependent on solaris. -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
From: Peter Eisentraut <peter_e@gmx.net> Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 Date: Mon, 10 Sep 2001 19:58:55 +0200 (CEST) ;;; Kenji Sugita writes: ;;; ;;; > Attached is a patch to find out fdatasync in libposix4 for Solaris2. ;;; ;;; Please use AC_SEARCH_LIBS and do not make the test dependent on solaris. ;;; ;;; -- ;;; Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter It already dependents on aix and alpha. Why should solaris use AC_SEARCH_LIBS? ... if test "$PORTNAME" != "aix" -a "$PORTNAME" != "alpha" then AC_CHECK_LIB(bsd, main) fi AC_CHECK_LIB(util, setproctitle) ... Kenji Sugita sugita@sra.co.jp
I have installed a patch that should work for you. I used -lrt instead of -lposix4. They should be the same, but the former seems to be preferred. Kenji Sugita writes: > It already dependents on aix and alpha. Why should solaris use AC_SEARCH_LIBS? Better style. It eliminates the chance of picking up libraries that are not really needed. A lot of systems have "compatibility" libraries of all kinds lying around. -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
From: Peter Eisentraut <peter_e@gmx.net> Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 Date: Tue, 11 Sep 2001 16:38:37 +0200 (CEST) ;;; I have installed a patch that should work for you. I used -lrt instead of ;;; -lposix4. They should be the same, but the former seems to be preferred. Did you posted? I would like to try to use it. My understanding is that it should be enabled by configure, since fdatasync is the best method for Solaris2. ;;; Kenji Sugita writes: ;;; ;;; > It already dependents on aix and alpha. Why should solaris use AC_SEARCH_LIBS? ;;; ;;; Better style. It eliminates the chance of picking up libraries that are ;;; not really needed. A lot of systems have "compatibility" libraries of all ;;; kinds lying around. I agree. ;;; -- ;;; Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter Kenji Sugita sugita@sra.co.jp
I assume he applied it to current CVS. > From: Peter Eisentraut <peter_e@gmx.net> > Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 > Date: Tue, 11 Sep 2001 16:38:37 +0200 (CEST) > > ;;; I have installed a patch that should work for you. I used -lrt instead of > ;;; -lposix4. They should be the same, but the former seems to be preferred. > > Did you posted? I would like to try to use it. > > My understanding is that it should be enabled by configure, since fdatasync > is the best method for Solaris2. > > ;;; Kenji Sugita writes: > ;;; > ;;; > It already dependents on aix and alpha. Why should solaris use AC_SEARCH_LIBS? > ;;; > ;;; Better style. It eliminates the chance of picking up libraries that are > ;;; not really needed. A lot of systems have "compatibility" libraries of all > ;;; kinds lying around. > > I agree. > > ;;; -- > ;;; Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter > > > Kenji Sugita > sugita@sra.co.jp > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Kenji Sugita writes: > ;;; I have installed a patch that should work for you. I used -lrt instead of > ;;; -lposix4. They should be the same, but the former seems to be preferred. > > Did you posted? I would like to try to use it. I added AC_SEARCH_LIBS(fdatasync, rt) near the location where your patch went. > My understanding is that it should be enabled by configure, since fdatasync > is the best method for Solaris2. Correct. fdatasync() is (when not simply aliased to fsync) more efficient than fsync(), which is it's reason of existence. I find it interesting that it's associated with "real-time" computing. -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
From: Peter Eisentraut <peter_e@gmx.net> Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 Date: Tue, 11 Sep 2001 21:25:31 +0200 (CEST) ;;; I added ;;; ;;; AC_SEARCH_LIBS(fdatasync, rt) ;;; ;;; near the location where your patch went. I applied your modification in the current to 7.1.3. Configure says as follows: $ uname -a SunOS ext274 5.6 Generic_105181-23 sun4u sparc SUNW,UltraSPARC-IIi-cEngine $ cvs di configure.in Index: configure.in =================================================================== RCS file: /home/mgr/sugita/jobs/cvs-master/pgsql/src/7.1.3/build/configure.in,v retrieving revision 1.1.1.1 diff -u -3 -p -r1.1.1.1 configure.in --- configure.in 16 Aug 2001 18:36:31 -0000 1.1.1.1 +++ configure.in 12 Sep 2001 01:44:13 -0000 @@ -681,6 +681,7 @@ dnl it seems unwise to encourage people AC_EGREP_HEADER(z_streamp, zlib.h, [ AC_CHECK_LIB(z, inflate) ]) => +AC_SEARCH_LIBS(fdatasync, rt) if test "$with_krb4" = yes ; then $ autoconf $ ./configure 2>&1 | tee configure.out ... checking for inflate in -lz... yes => checking for library containing fdatasync... no checking for crypt.h... yes ... $ I also cannot find out the rt library on Solaris2. The library posix4 hits fdatasync. $ make distclean $ cvs di -u configure.in Index: configure.in =================================================================== RCS file: /home/mgr/sugita/jobs/cvs-master/pgsql/src/7.1.3/build/configure.in,v retrieving revision 1.1.1.1 diff -u -3 -p -u -r1.1.1.1 configure.in --- configure.in 16 Aug 2001 18:36:31 -0000 1.1.1.1 +++ configure.in 12 Sep 2001 01:58:39 -0000 @@ -681,6 +681,7 @@ dnl it seems unwise to encourage people AC_EGREP_HEADER(z_streamp, zlib.h, [ AC_CHECK_LIB(z, inflate) ]) => +AC_SEARCH_LIBS(fdatasync, posix4) if test "$with_krb4" = yes ; then $ autoconf $ ./configure 2>&1 | tee configure.out ... checking for inflate in -lz... yes => checking for library containing fdatasync... -lposix4 checking for crypt.h... yes ... $ make install $ initdb $ pg_ctl -o '-c wal_sync_method=fdatasync -S' start postmaster successfully started $ psql template1 Welcome to psql, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit template1=# show wal_sync_method; NOTICE: wal_sync_method is fdatasync SHOW VARIABLE template1=# Kenji Sugita sugita@sra.co.jp
Kenji Sugita writes: > I also cannot find out the rt library on Solaris2. The library posix4 hits > fdatasync. I rechecked the manuals, apparently -lrt was added in a later version (after the POSIX.4 group was renamed?). I've changed the test to check both libraries. Do you have any performance data of the fdatasync method versus the default open_datasync method? -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
> Date: Wed, 12 Sep 2001 14:19:09 +0200 (CEST) > From: Peter Eisentraut <peter_e@gmx.net> > To: Kenji Sugita <sugita@sra.co.jp> > Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 > > > I also cannot find out the rt library on Solaris2. The library posix4 hits > > fdatasync. > > I rechecked the manuals, apparently -lrt was added in a later version > (after the POSIX.4 group was renamed?). I've changed the test to check > both libraries. Thanks a lot. > Do you have any performance data of the fdatasync method versus the > default open_datasync method? I have the data for SPARC 500MHz Solaris2.6 running PostgreSQL 7.1.3. #clients open_datasync fdatasync (TPC-B, TPS) ======== ============= ========= 1 34.867522 47.188265 2 41.457329 57.119142 4 41.854741 62.250403 8 43.103382 63.909396 16 35.890254 62.757908 32 41.421592 52.132258 64 37.325511 51.805046 128 28.906521 37.942672 This table is made by following commands: pgbench -i -s 10 pgbench -c #clients -t 100 > Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter Kenji Sugita sugita@sra.co.jp
Wow! That is a huge difference. I wish we could make fdatasync/datasync use automatic. We can't now because sometimes fdatasync is just a stub for fsync, and in those cases open_fsync may be a better option. I would really like some ideas on automatic configuration. > > Date: Wed, 12 Sep 2001 14:19:09 +0200 (CEST) > > From: Peter Eisentraut <peter_e@gmx.net> > > To: Kenji Sugita <sugita@sra.co.jp> > > Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 > > > > > I also cannot find out the rt library on Solaris2. The library posix4 hits > > > fdatasync. > > > > I rechecked the manuals, apparently -lrt was added in a later version > > (after the POSIX.4 group was renamed?). I've changed the test to check > > both libraries. > > Thanks a lot. > > > Do you have any performance data of the fdatasync method versus the > > default open_datasync method? > > I have the data for SPARC 500MHz Solaris2.6 running PostgreSQL 7.1.3. > > #clients open_datasync fdatasync (TPC-B, TPS) > ======== ============= ========= > 1 34.867522 47.188265 > 2 41.457329 57.119142 > 4 41.854741 62.250403 > 8 43.103382 63.909396 > 16 35.890254 62.757908 > 32 41.421592 52.132258 > 64 37.325511 51.805046 > 128 28.906521 37.942672 > > This table is made by following commands: > > pgbench -i -s 10 > pgbench -c #clients -t 100 > > > Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter > > > Kenji Sugita > sugita@sra.co.jp > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
> Date: Wed, 12 Sep 2001 14:19:09 +0200 (CEST) > From: Peter Eisentraut <peter_e@gmx.net> > To: Kenji Sugita <sugita@sra.co.jp> > Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 > > > I also cannot find out the rt library on Solaris2. The library posix4 hits > > fdatasync. > > I rechecked the manuals, apparently -lrt was added in a later version > (after the POSIX.4 group was renamed?). I've changed the test to check > both libraries. Thanks a lot. > Do you have any performance data of the fdatasync method versus the > default open_datasync method? I have the data for SPARC 500MHz Solaris2.6 running PostgreSQL 7.1.3. #clients open_datasync fdatasync (TPC-B, TPS) ======== ============= ========= 1 34.867522 47.188265 2 41.457329 57.119142 4 41.854741 62.250403 8 43.103382 63.909396 16 35.890254 62.757908 32 41.421592 52.132258 64 37.325511 51.805046 128 28.906521 37.942672 This table is made by following commands: pgbench -i -s 10 pgbench -c #clients -t 100 > Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter Kenji Sugita sugita@sra.co.jp
Date: Thu, 13 Sep 2001 01:37:31 +0900 From: Kenji Sugita <sugita@sranhm.sra.co.jp> > Date: Wed, 12 Sep 2001 14:19:09 +0200 (CEST) > From: Peter Eisentraut <peter_e@gmx.net> > To: Kenji Sugita <sugita@sra.co.jp> > Subject: Re: [PATCHES] Configuring fdatasync for Solaris2 > > > I also cannot find out the rt library on Solaris2. The library posix4 hits > > fdatasync. > > I rechecked the manuals, apparently -lrt was added in a later version > (after the POSIX.4 group was renamed?). I've changed the test to check > both libraries. Thanks a lot. > Do you have any performance data of the fdatasync method versus the > default open_datasync method? I have the data for SPARC 500MHz Solaris2.6 running PostgreSQL 7.1.3. #clients open_datasync fdatasync (TPC-B, TPS) ======== ============= ========= 1 34.867522 47.188265 2 41.457329 57.119142 4 41.854741 62.250403 8 43.103382 63.909396 16 35.890254 62.757908 32 41.421592 52.132258 64 37.325511 51.805046 128 28.906521 37.942672 This table is made by following commands: pgbench -i -s 10 pgbench -c #clients -t 100 > Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter Kenji Sugita sugita@sra.co.jp