Обсуждение: Re: [HACKERS] include/config.h FOLLOWUP

Поиск
Список
Период
Сортировка

Re: [HACKERS] include/config.h FOLLOWUP

От
Bruce Momjian
Дата:
>
> On Sat, 3 Jan 1998, Bruce Momjian wrote:
>
> > I believe it is 8k to match the base size for the filesystem block size,
> > for performance.
>
>     Hrmmm...how does one find out what the file system block size is?  I know
> there is an option to newfs for changing this, and at least under FreeBSD, the
> default is set to:
>
> sys/param.h:#define DFLTBSIZE   4096
>
>     So maybe a multiple of block size should be considered more appropriate?
> Maybe have it so that you can stipulate # of blocks that equal max tuple size?
> Then, if I wanted, I could format a drive with a block size of 16k that is only
> going to be used for databases, and have a tuple size up to that level?
>

Yes, you certainly could do that.  The comment says:

    /*
     * the maximum size of a disk block for any possible installation.
     *
     * in theory this could be anything, but in practice this is actually
     * limited to 2^13 bytes because we have limited ItemIdData.lp_off and
     * ItemIdData.lp_len to 13 bits (see itemid.h).
     */
    #define MAXBLCKSZ       8192

You can now specify the actual file system block size at the time of
newfs.  We actually could query the file system at time of compile, but
that would be strange becuase the database location is set at time of
postmaster startup, and I don't think we can make this a run-time
parameter, but I may be wrong.

Of course, you have to change the structures the mention.

--
Bruce Momjian
maillist@candle.pha.pa.us

Re: [HACKERS] include/config.h FOLLOWUP

От
The Hermit Hacker
Дата:
On Sun, 4 Jan 1998, Bruce Momjian wrote:

> Yes, you certainly could do that.  The comment says:
>
>     /*
>      * the maximum size of a disk block for any possible installation.
>      *
>      * in theory this could be anything, but in practice this is actually
>      * limited to 2^13 bytes because we have limited ItemIdData.lp_off and
>      * ItemIdData.lp_len to 13 bits (see itemid.h).
>      */
>     #define MAXBLCKSZ       8192
>
> You can now specify the actual file system block size at the time of
> newfs.  We actually could query the file system at time of compile, but
> that would be strange becuase the database location is set at time of
> postmaster startup, and I don't think we can make this a run-time
> parameter, but I may be wrong.

    No, don't make it a run-time or auto-detect thing, just a compile time
option.  By default, leave it at 8192, since "that's the way its always been"...
but if we are justifying it based on disk block size, its 2x the disk block
size that my system is setup for. What's the difference between that and making
it 3x or 4x?  Or, hell, would I get a performance increase if I brought it
down to 4096, which is what my actually disk block size is?

    So, what we would really be doing is setting the default to 8192, but give
the installer the opportunity (with a caveat that this value should be a multiple
of default file system block size for optimal performance) to increase it as they
see fit.

Marc G. Fournier
Systems Administrator @ hub.org
primary: scrappy@hub.org           secondary: scrappy@{freebsd|postgresql}.org


Re: [HACKERS] include/config.h FOLLOWUP

От
Bruce Momjian
Дата:
>     No, don't make it a run-time or auto-detect thing, just a compile time
> option.  By default, leave it at 8192, since "that's the way its always been"...
> but if we are justifying it based on disk block size, its 2x the disk block
> size that my system is setup for. What's the difference between that and making
> it 3x or 4x?  Or, hell, would I get a performance increase if I brought it
> down to 4096, which is what my actually disk block size is?
>
>     So, what we would really be doing is setting the default to 8192, but give
> the installer the opportunity (with a caveat that this value should be a multiple
> of default file system block size for optimal performance) to increase it as they
> see fit.

I assume you changed the default, becuase the BSD44 default is 8k
blocks, with 1k fragments.

I don't think there is any 'performance' improvement with making it
greater than the file system block size.

--
Bruce Momjian
maillist@candle.pha.pa.us

Re: [HACKERS] include/config.h FOLLOWUP

От
The Hermit Hacker
Дата:
On Sun, 4 Jan 1998, Bruce Momjian wrote:

> >     No, don't make it a run-time or auto-detect thing, just a compile time
> > option.  By default, leave it at 8192, since "that's the way its always been"...
> > but if we are justifying it based on disk block size, its 2x the disk block
> > size that my system is setup for. What's the difference between that and making
> > it 3x or 4x?  Or, hell, would I get a performance increase if I brought it
> > down to 4096, which is what my actually disk block size is?
> >
> >     So, what we would really be doing is setting the default to 8192, but give
> > the installer the opportunity (with a caveat that this value should be a multiple
> > of default file system block size for optimal performance) to increase it as they
> > see fit.
>
> I assume you changed the default, becuase the BSD44 default is 8k
> blocks, with 1k fragments.

    Good question, I don't know.  What does BSDi have it set at?  Linux? NetBSD?

    I just checked our sys/param.h file under Solaris 2.5.1, and it doesn't
seem to define a DEFAULT, but a MAXSIZE of 8192...oops, newfs defines the default
there for 8192 also

> I don't think there is any 'performance' improvement with making it
> greater than the file system block size.

    No no...you missed the point.  If we are saying that max tuple size is 8k
because of block size of the file system, under FreeBSD, the tuple size is 2x
the block size of the file system.  So, if there a performance decrease because
of that...on modern OSs, how much does that even matter anymore?  The 8192 that
we have current set, that's probably still from the original Postgres4.2 system
that was written in which decade? :)


Marc G. Fournier
Systems Administrator @ hub.org
primary: scrappy@hub.org           secondary: scrappy@{freebsd|postgresql}.org


Re: [HACKERS] include/config.h FOLLOWUP

От
Bruce Momjian
Дата:
>
> On Sun, 4 Jan 1998, Bruce Momjian wrote:
>
> > >     No, don't make it a run-time or auto-detect thing, just a compile time
> > > option.  By default, leave it at 8192, since "that's the way its always been"...
> > > but if we are justifying it based on disk block size, its 2x the disk block
> > > size that my system is setup for. What's the difference between that and making
> > > it 3x or 4x?  Or, hell, would I get a performance increase if I brought it
> > > down to 4096, which is what my actually disk block size is?
> > >
> > >     So, what we would really be doing is setting the default to 8192, but give
> > > the installer the opportunity (with a caveat that this value should be a multiple
> > > of default file system block size for optimal performance) to increase it as they
> > > see fit.
> >
> > I assume you changed the default, becuase the BSD44 default is 8k
> > blocks, with 1k fragments.
>
>     Good question, I don't know.  What does BSDi have it set at?  Linux? NetBSD?
>
>     I just checked our sys/param.h file under Solaris 2.5.1, and it doesn't
> seem to define a DEFAULT, but a MAXSIZE of 8192...oops, newfs defines the default
> there for 8192 also
>
> > I don't think there is any 'performance' improvement with making it
> > greater than the file system block size.
>
>     No no...you missed the point.  If we are saying that max tuple size is 8k
> because of block size of the file system, under FreeBSD, the tuple size is 2x
> the block size of the file system.  So, if there a performance decrease because
> of that...on modern OSs, how much does that even matter anymore?  The 8192 that
> we have current set, that's probably still from the original Postgres4.2 system
> that was written in which decade? :)

I see, we could increase it and it probably would not matter much.

--
Bruce Momjian
maillist@candle.pha.pa.us