Alfred,
do you have any numbers with and without your patch ?
I mean performance. You may use pg_check utility.
Oleg
On Tue, 5 Dec 2000, Alfred Perlstein wrote:
> Date: Tue, 5 Dec 2000 13:04:45 -0800
> From: Alfred Perlstein <bright@wintelcom.net>
> To: Tom Lane <tgl@sss.pgh.pa.us>
> Cc: pgsql-hackers@postgresql.org
> Subject: Re: [HACKERS] Need help with phys backed shm segments (Postgresql+FreeBSD).
>
> * Alfred Perlstein <bright@wintelcom.net> [001205 12:30] wrote:
> > * Tom Lane <tgl@sss.pgh.pa.us> [001205 08:37] wrote:
> > > BTW, I just remembered that in 7.0.*, the SLocks that are managed by
> > > SpinAcquire() all live in their own little shm segment. On a machine
> > > where slock_t is char, it'd likely only amount to 128 bytes or so.
> > > Maybe you are seeing some bug in FreeBSD's handling of tiny shm
> > > segments?
> >
> > Good call, i think I found it! :)
>
> Here's the patch I'm using on FreeBSD, it seems to work, if any
> other FreeBSD'ers want to try it out, just apply the patch:
> cd /usr/src/sys/vm ; patch < patchfile
>
> and recompile and boot with a new kernel, then do this:
>
> sysctl -w kern.ipc.shm_use_phys=1
>
> or add:
> kern.ipc.shm_use_phys=1
> to /etc/sysctl.conf
>
> Let me know if it works.
>
> thanks,
> -Alfred
>
> Index: phys_pager.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/vm/phys_pager.c,v
> retrieving revision 1.3.2.1
> diff -u -u -r1.3.2.1 phys_pager.c
> --- phys_pager.c 2000/08/04 22:31:11 1.3.2.1
> +++ phys_pager.c 2000/12/05 20:13:25
> @@ -83,7 +83,7 @@
> * Allocate object and associate it with the pager.
> */
> object = vm_object_allocate(OBJT_PHYS,
> - OFF_TO_IDX(foff + size));
> + OFF_TO_IDX(foff + PAGE_MASK + size));
> object->handle = handle;
> TAILQ_INSERT_TAIL(&phys_pager_object_list, object,
> pager_object_list);
>
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83