pg.ddx.io pgsql-performance@postgresql.org mailing list archive
help / color / mirror / Atom feedMaking the most of memory?
21+ messages / 15 participants
[nested] [flat]
* Making the most of memory?
@ 2008-01-23 04:11 Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 14:59 ` Re: Making the most of memory? Bill Moran <wmoran@collaborativefusion.com>
2008-01-23 19:06 ` Re: Making the most of memory? Rich <rhdyes@gmail.com>
2008-01-24 09:19 ` Re: Making the most of memory? Heikki Linnakangas <heikki@enterprisedb.com>
2008-01-24 18:01 ` Re: Making the most of memory? Merlin Moncure <mmoncure@gmail.com>
0 siblings, 5 replies; 21+ messages in thread
From: Joshua Fielek @ 2008-01-23 04:11 UTC (permalink / raw)
To: pgsql-performance
Hey folks --
For starters, I am fairly new to database tuning and I'm still learning
the ropes. I understand the concepts but I'm still learning the real
world impact of some of the configuration options for postgres.
We have an application that has been having some issues with performance
within postgres 8.1.9 and later 8.2.5. The upgrade to 8.2.5 gained us a
nice little performance increase just off the improved query
optimization, but we are still having other performance issues.
The database itself is not that large -- a db_dump of the sql file as
text is only about 110MB. I haven't checked the exact size of the actual
data base, but the entire data directory is smaller than the available
memory at about 385MB including logs and config files. This is a single
database with a relatively small number of client connections (50 or so)
making a fair number of smaller queries. This is not a massive data
effort by any means at this time, but it will be growing.
We have available currently ~4GB (8GB total) for Postgres. We will be
moving to a server that will have about 24GB (32GB total) available for
the database, with the current server becoming a hot backup, probably
with slony or something similar to keep the databases in sync.
I've been monitoring the memory usage of postgres on the current system
and it seems like none of the threads ever allocate more than about
400MB total and about 80-90MB shared memory. It seems to me that since
we have a very large chunk of memory relative to the database size we
should be loading the entire database into memory. How can we be sure
we're getting the most out of the memory we're allocating to postgres?
What can we do to improve the memory usage, looking for performance
first and foremost, on both the larger and smaller systems?
Here's the salient config items for the 8GB system:
max_connections = 200 # realistically we expect 50-150 open
shared_buffers = 38000
sort_mem = 1048576
work_mem = 32000
maintenance_work_mem = 32000
max_fsm_pages = 480001 # probably too large for the max_fsm_*
max_fsm_relations = 20000 # items; one Db with ~400 tables.
effective_cache_size = 212016 # ~2GB, could probably double this
Thanks,
J
--
Joshua J. Fielek
Sr. Software Engineer
Concursive Corporation
223 East City Hall Ave., Suite 212
Norfolk, VA 23510
Phone : (757) 627-3002x6656
Mobile : (757) 754-4462
Fax : (757) 627-8773
Email : jfielek@concursive.com
http://www.concursive.com
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
@ 2008-01-23 05:20 ` Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
4 siblings, 1 reply; 21+ messages in thread
From: Scott Marlowe @ 2008-01-23 05:20 UTC (permalink / raw)
To: Joshua Fielek <jfielek@centriccrm.com>; +Cc: pgsql-performance
On Jan 22, 2008 10:11 PM, Joshua Fielek <jfielek@centriccrm.com> wrote:
>
> Hey folks --
>
> For starters, I am fairly new to database tuning and I'm still learning
> the ropes. I understand the concepts but I'm still learning the real
> world impact of some of the configuration options for postgres.
>
> We have an application that has been having some issues with performance
> within postgres 8.1.9 and later 8.2.5. The upgrade to 8.2.5 gained us a
> nice little performance increase just off the improved query
> optimization, but we are still having other performance issues.
>
> The database itself is not that large -- a db_dump of the sql file as
> text is only about 110MB. I haven't checked the exact size of the actual
> data base, but the entire data directory is smaller than the available
> memory at about 385MB including logs and config files. This is a single
> database with a relatively small number of client connections (50 or so)
> making a fair number of smaller queries. This is not a massive data
> effort by any means at this time, but it will be growing.
>
> We have available currently ~4GB (8GB total) for Postgres.
How are you "allocating" this memory to postgresql? VM, ulimit? Or
are you just saying that you want to tune pgsql to use about 4Gig of
ram?
> We will be
> moving to a server that will have about 24GB (32GB total) available for
> the database, with the current server becoming a hot backup, probably
> with slony or something similar to keep the databases in sync.
>
> I've been monitoring the memory usage of postgres on the current system
> and it seems like none of the threads ever allocate more than about
> 400MB total and about 80-90MB shared memory. It seems to me that since
> we have a very large chunk of memory relative to the database size we
> should be loading the entire database into memory.
You'd think so. But you might be wrong. The OS itself will naturally
cache all of the data in memory anyway. Having PostgreSQL cache it
might as well might make things faster, might make them slower,
depending on your usage patterns.
However, it's far more important that PostgreSQL be able to allocate
memory for individual backends for things like sorts and maintenance
than to use it all to hold mostly static data that may or may not be
accessed all that often.
> How can we be sure
> we're getting the most out of the memory we're allocating to postgres?
I'd suggest not worrying too much about it. Using 100% of your memory
is much more dangerous than not. Since when you run out the machine
will start swapping and slow to a crawl.
> What can we do to improve the memory usage, looking for performance
> first and foremost, on both the larger and smaller systems?
>
> Here's the salient config items for the 8GB system:
>
> max_connections = 200 # realistically we expect 50-150 open
> shared_buffers = 38000
That's a good number for the size database you're currently running.
Having shared_buffers be larger than your data set doesn't really
help. Depending on your workload, having it be smaller can help (i.e.
lots of small transactions).
> sort_mem = 1048576
This setting doesn't exist in 8.1 and 8.2 anymore, it was replaced
with this one:
> work_mem = 32000
Which, by the way, is a pretty reasonable number, except if you're
commonly handling 200 actual connections in which case you could be
allocating 32M*200 = 6.4Gig max if each connection is running a sort
at the same time. If most won't be using that much, you might be
safe.
> maintenance_work_mem = 32000
> max_fsm_pages = 480001 # probably too large for the max_fsm_*
That's ok. it's better to allocate a few hundred thousand extra fsm
pages than not. Since you have to restart to change it, it's better
to be prepared.
> max_fsm_relations = 20000 # items; one Db with ~400 tables.
> effective_cache_size = 212016 # ~2GB, could probably double this
Since effective cache size doesn't allocate anything, but rather acts
as a big round knob telling pgsql about how much memory the OS is
caching postgresql stuff in, you can approximate it.
I'd worry more about what kind of drive subsystem you have in this
system. In a database server the I/O subsystem is often the most
important part of planning for good performance.
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
@ 2008-01-23 18:44 ` Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
0 siblings, 1 reply; 21+ messages in thread
From: Scott Marlowe @ 2008-01-23 18:44 UTC (permalink / raw)
To: mike long <mlong@concursive.com>; +Cc: Joshua Fielek <jfielek@centriccrm.com>; pgsql-performance
On Jan 23, 2008 8:01 AM, mike long <mlong@concursive.com> wrote:
> Scott,
>
> What are your thoughts on using one of those big RAM appliances for
> storing a Postgres database?
I assume you're talking about solid state drives? They have their
uses, but for most use cases, having plenty of RAM in your server will
be a better way to spend your money. For certain high throughput,
relatively small databases (i.e. transactional work) the SSD can be
quite useful. For large reporting databases running into the terabyte
range they're prohibitively expensive.
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
@ 2008-01-23 19:57 ` Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-23 20:40 ` Re: Making the most of memory? A.M. <agentm@themactionfaction.com>
2008-01-23 20:50 ` Re: Making the most of memory? Brian Hurt <bhurt@janestcapital.com>
2008-01-23 21:06 ` Re: Making the most of memory? Craig James <craig_james@emolecules.com>
2008-01-24 00:54 ` Re: Making the most of memory? Greg Smith <gsmith@gregsmith.com>
2008-01-24 01:45 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-24 14:01 ` Re: Making the most of memory? Merlin Moncure <mmoncure@gmail.com>
0 siblings, 6 replies; 21+ messages in thread
From: Guy Rouillier @ 2008-01-23 19:57 UTC (permalink / raw)
To: pgsql-performance
Scott Marlowe wrote:
> I assume you're talking about solid state drives? They have their
> uses, but for most use cases, having plenty of RAM in your server will
> be a better way to spend your money. For certain high throughput,
> relatively small databases (i.e. transactional work) the SSD can be
> quite useful.
Unless somebody has changes some physics recently, I'm not understanding
the recent discussions of SSD in the general press. Flash has a limited
number of writes before it becomes unreliable. On good quality consumer
grade, that's about 300,000 writes, while on industrial grade it's about
10 times that. That's fine for mp3 players and cameras; even
professional photographers probably won't rewrite the same spot on a
flash card that many times in a lifetime. But for database
applications, 300,000 writes is trivial. 3 million will go a lot longer,
but in non-archival applications, I imagine even that mark won't take
but a year or two to surpass.
--
Guy Rouillier
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
@ 2008-01-23 20:40 ` A.M. <agentm@themactionfaction.com>
5 siblings, 0 replies; 21+ messages in thread
From: A.M. @ 2008-01-23 20:40 UTC (permalink / raw)
To: pgsql-performance
On Jan 23, 2008, at 2:57 PM, Guy Rouillier wrote:
> Scott Marlowe wrote:
>> I assume you're talking about solid state drives? They have their
>> uses, but for most use cases, having plenty of RAM in your server
>> will
>> be a better way to spend your money. For certain high throughput,
>> relatively small databases (i.e. transactional work) the SSD can be
>> quite useful.
>
> Unless somebody has changes some physics recently, I'm not
> understanding the recent discussions of SSD in the general press.
> Flash has a limited number of writes before it becomes unreliable.
> On good quality consumer grade, that's about 300,000 writes, while
> on industrial grade it's about 10 times that. That's fine for mp3
> players and cameras; even professional photographers probably won't
> rewrite the same spot on a flash card that many times in a
> lifetime. But for database applications, 300,000 writes is
> trivial. 3 million will go a lot longer, but in non-archival
> applications, I imagine even that mark won't take but a year or two
> to surpass.
Please let outdated numbers rest in peace.
http://www.storagesearch.com/ssdmyths-endurance.html
Conclusion:
"With current technologies write endurance is not a factor you should
be worrying about when deploying flash SSDs for server acceleration
applications - even in a university or other analytics intensive
environment. "
That said, postgresql is likely making assumptions about non-volatile
storage that will need to be shattered once SSDs become more widely
deployed. Perhaps SSDs will replace RAID BBUs and then the HDs
themselves?
Cheers,
M
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
@ 2008-01-23 20:50 ` Brian Hurt <bhurt@janestcapital.com>
2008-01-24 14:15 ` Re: Making the most of memory? Matthew <matthew@flymine.org>
5 siblings, 1 reply; 21+ messages in thread
From: Brian Hurt @ 2008-01-23 20:50 UTC (permalink / raw)
To: Guy Rouillier <guyr-ml1@burntmail.com>; +Cc: pgsql-performance
Guy Rouillier wrote:
> Scott Marlowe wrote:
>
>> I assume you're talking about solid state drives? They have their
>> uses, but for most use cases, having plenty of RAM in your server will
>> be a better way to spend your money. For certain high throughput,
>> relatively small databases (i.e. transactional work) the SSD can be
>> quite useful.
>
>
> Unless somebody has changes some physics recently, I'm not
> understanding the recent discussions of SSD in the general press.
> Flash has a limited number of writes before it becomes unreliable. On
> good quality consumer grade, that's about 300,000 writes, while on
> industrial grade it's about 10 times that. That's fine for mp3
> players and cameras; even professional photographers probably won't
> rewrite the same spot on a flash card that many times in a lifetime.
> But for database applications, 300,000 writes is trivial. 3 million
> will go a lot longer, but in non-archival applications, I imagine even
> that mark won't take but a year or two to surpass.
>
I think the original poster was talking about drives like these:
http://www.texmemsys.com/
Basically, they're not using Flash, they're just big ol' hunks of
battery-backed RAM. Not unlike a 10GB battery backed buffer for your
raid, except there is no raid.
Brian
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-23 20:50 ` Re: Making the most of memory? Brian Hurt <bhurt@janestcapital.com>
@ 2008-01-24 14:15 ` Matthew <matthew@flymine.org>
2008-01-24 14:26 ` Re: Making the most of memory? Florian Weimer <fweimer@bfk.de>
0 siblings, 1 reply; 21+ messages in thread
From: Matthew @ 2008-01-24 14:15 UTC (permalink / raw)
To: pgsql-performance
On Wed, 23 Jan 2008, Brian Hurt wrote:
> I think the original poster was talking about drives like these:
> http://www.texmemsys.com/
>
> Basically, they're not using Flash, they're just big ol' hunks of
> battery-backed RAM. Not unlike a 10GB battery backed buffer for your raid,
> except there is no raid.
So, that web site seems to list products starting at about 32GB in a
separate rack-mounted box with redundant everything. I'd be more
interested in just putting the WAL on an SSD device, so 500MB or 1GB would
be quite sufficient. Can anyone point me towards such a device?
It'd preferably have a form-factor of a normal 3.5" hard drive, with a
normal SATA or SAS connection, a gigabyte of RAM, a battery, and a
gigabyte of flash. When the power cuts, the device would copy the RAM over
to the flash and then power down. The device would therefore get the write
performance of normal RAM, without wasting space, and could
(theoretically) be pretty cheap, and would improve the transaction speed
of Postgres significantly.
If someone doesn't already make one, they should!
Matthew
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-23 20:50 ` Re: Making the most of memory? Brian Hurt <bhurt@janestcapital.com>
2008-01-24 14:15 ` Re: Making the most of memory? Matthew <matthew@flymine.org>
@ 2008-01-24 14:26 ` Florian Weimer <fweimer@bfk.de>
2008-01-24 16:23 ` Re: Making the most of memory? Chris Browne <cbbrowne@acm.org>
0 siblings, 1 reply; 21+ messages in thread
From: Florian Weimer @ 2008-01-24 14:26 UTC (permalink / raw)
To: Matthew <matthew@flymine.org>; +Cc: pgsql-performance
> So, that web site seems to list products starting at about 32GB in a
> separate rack-mounted box with redundant everything. I'd be more
> interested in just putting the WAL on an SSD device, so 500MB or 1GB
> would be quite sufficient. Can anyone point me towards such a device?
A dedicated RAID controller with battery-backed cache of ssuficient
size and two mirrored disks should not perform that bad, and has the
advantage of easy availability.
--
Florian Weimer <fweimer@bfk.de>
BFK edv-consulting GmbH http://www.bfk.de/
Kriegsstraße 100 tel: +49-721-96201-1
D-76133 Karlsruhe fax: +49-721-96201-99
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-23 20:50 ` Re: Making the most of memory? Brian Hurt <bhurt@janestcapital.com>
2008-01-24 14:15 ` Re: Making the most of memory? Matthew <matthew@flymine.org>
2008-01-24 14:26 ` Re: Making the most of memory? Florian Weimer <fweimer@bfk.de>
@ 2008-01-24 16:23 ` Chris Browne <cbbrowne@acm.org>
2008-01-25 08:18 ` Re: Making the most of memory? Florian Weimer <fweimer@bfk.de>
0 siblings, 1 reply; 21+ messages in thread
From: Chris Browne @ 2008-01-24 16:23 UTC (permalink / raw)
To: pgsql-performance
fweimer@bfk.de (Florian Weimer) writes:
>> So, that web site seems to list products starting at about 32GB in a
>> separate rack-mounted box with redundant everything. I'd be more
>> interested in just putting the WAL on an SSD device, so 500MB or 1GB
>> would be quite sufficient. Can anyone point me towards such a device?
>
> A dedicated RAID controller with battery-backed cache of ssuficient
> size and two mirrored disks should not perform that bad, and has the
> advantage of easy availability.
That won't provide as "souped up" performance as "WAL on SSD," and
it's from technical people wishing for things that some of those
things actually emerge...
It appears that the SSD market place is going pretty "nuts" right now
as vendors are hawking flash-based SSD devices that are specifically
targeted at replacing disk drives for laptops.
I agree that there would be a considerable value for DBMS applications
in having availability of a device that combines the strengths of both
Flash (persistence) and DRAM (sheer volume of IOPs) to provide
something better than they offered alone. I expect that the standard
size for this is more likely to be 32GB than 1GB, what with modern
shrinkage of physical sizing...
--
let name="cbbrowne" and tld="linuxfinances.info" in String.concat "@" [name;tld];;
http://www3.sympatico.ca/cbbrowne/spiritual.html
"When we write programs that "learn", it turns out that we do and they
don't." -- Alan J. Perlis
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-23 20:50 ` Re: Making the most of memory? Brian Hurt <bhurt@janestcapital.com>
2008-01-24 14:15 ` Re: Making the most of memory? Matthew <matthew@flymine.org>
2008-01-24 14:26 ` Re: Making the most of memory? Florian Weimer <fweimer@bfk.de>
2008-01-24 16:23 ` Re: Making the most of memory? Chris Browne <cbbrowne@acm.org>
@ 2008-01-25 08:18 ` Florian Weimer <fweimer@bfk.de>
0 siblings, 0 replies; 21+ messages in thread
From: Florian Weimer @ 2008-01-25 08:18 UTC (permalink / raw)
To: Chris Browne <cbbrowne@acm.org>; +Cc: pgsql-performance
* Chris Browne:
>> A dedicated RAID controller with battery-backed cache of ssuficient
>> size and two mirrored disks should not perform that bad, and has the
>> advantage of easy availability.
>
> That won't provide as "souped up" performance as "WAL on SSD," and
> it's from technical people wishing for things that some of those
> things actually emerge...
For WAL (I/O which is mostly sequential), the proposed approach isn't
that bad. You can easily get more than 15,000 write transactions per
second, with a single thread. Good luck finding a SSD NAS with a
60 usec round-trip time. 8->
Something which directly speaks SATA or PCI might offer comparable
performance, but SSD alone isn't sufficient.
--
Florian Weimer <fweimer@bfk.de>
BFK edv-consulting GmbH http://www.bfk.de/
Kriegsstraße 100 tel: +49-721-96201-1
D-76133 Karlsruhe fax: +49-721-96201-99
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
@ 2008-01-23 21:06 ` Craig James <craig_james@emolecules.com>
5 siblings, 0 replies; 21+ messages in thread
From: Craig James @ 2008-01-23 21:06 UTC (permalink / raw)
To: Guy Rouillier <guyr-ml1@burntmail.com>; pgsql-performance
Guy Rouillier wrote:
> Scott Marlowe wrote:
>> I assume you're talking about solid state drives? They have their
>> uses, but for most use cases, having plenty of RAM in your server will
>> be a better way to spend your money. For certain high throughput,
>> relatively small databases (i.e. transactional work) the SSD can be
>> quite useful.
>
> Unless somebody has changes some physics recently, I'm not understanding
> the recent discussions of SSD in the general press. Flash has a limited
> number of writes before it becomes unreliable. On good quality consumer
> grade, that's about 300,000 writes, while on industrial grade it's about
> 10 times that. That's fine for mp3 players and cameras; even
> professional photographers probably won't rewrite the same spot on a
> flash card that many times in a lifetime. But for database
> applications, 300,000 writes is trivial. 3 million will go a lot longer,
> but in non-archival applications, I imagine even that mark won't take
> but a year or two to surpass.
One trick they use is to remap the physical Flash RAM to different logical addresses. Typical apps update a small percentage of the data frequently, and the rest of the data rarely or never. By shuffling the physical Flash RAM around, the media lasts a lot longer than a simple analysis might indicate.
Craig
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
@ 2008-01-24 00:54 ` Greg Smith <gsmith@gregsmith.com>
2008-01-24 08:05 ` Re: Making the most of memory? Steinar H. Gunderson <sgunderson@bigfoot.com>
5 siblings, 1 reply; 21+ messages in thread
From: Greg Smith @ 2008-01-24 00:54 UTC (permalink / raw)
To: Guy Rouillier <guyr-ml1@burntmail.com>; +Cc: pgsql-performance
On Wed, 23 Jan 2008, Guy Rouillier wrote:
> Flash has a limited number of writes before it becomes unreliable. On
> good quality consumer grade, that's about 300,000 writes, while on
> industrial grade it's about 10 times that.
The main advance that's made SSD practical given the write cycle
limitation is increasing sophisticated wear leveling:
http://en.wikipedia.org/wiki/Wear_levelling
The best devices now use static wear levelling; overviews at
http://en.wikipedia.org/wiki/Static_Wear_Leveling and
http://www.storagesearch.com/siliconsys-art1.html
The basic idea is that the number of writes to each block is tracked, and
as it approaches the limit that block gets swapped with one that has been
more read-only. So essentially the number of writes before failure
approaches something closer to 1M x number of blocks. This means that as
the size of the device goes up, so does its longevity. If you believe the
hype, the combination in the increase in size of designs with these more
sophisticated wear-levelling approaches has now crossed the line where
it's more likely a standard moving-parts hard drive will fail first if you
compare it to a similarly sized SDD doing the same job (a standard
mechanical drive under heavy write load also wears out faster than one
doing less work).
--
* Greg Smith gsmith@gregsmith.com http://www.gregsmith.com Baltimore, MD
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-24 00:54 ` Re: Making the most of memory? Greg Smith <gsmith@gregsmith.com>
@ 2008-01-24 08:05 ` Steinar H. Gunderson <sgunderson@bigfoot.com>
0 siblings, 0 replies; 21+ messages in thread
From: Steinar H. Gunderson @ 2008-01-24 08:05 UTC (permalink / raw)
To: pgsql-performance
On Wed, Jan 23, 2008 at 07:54:24PM -0500, Greg Smith wrote:
> (a standard mechanical drive under heavy write load also wears out faster
> than one doing less work).
Wasn't this one of the myths that was dispelled in the Google disk paper a
while ago?
/* Steinar */
--
Homepage: http://www.sesse.net/
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
@ 2008-01-24 01:45 ` Scott Marlowe <scott.marlowe@gmail.com>
2008-01-24 16:09 ` Re: Making the most of memory? Chris Browne <cbbrowne@acm.org>
5 siblings, 1 reply; 21+ messages in thread
From: Scott Marlowe @ 2008-01-24 01:45 UTC (permalink / raw)
To: Guy Rouillier <guyr-ml1@burntmail.com>; +Cc: pgsql-performance
On Jan 23, 2008 1:57 PM, Guy Rouillier <guyr-ml1@burntmail.com> wrote:
> Scott Marlowe wrote:
> > I assume you're talking about solid state drives? They have their
> > uses, but for most use cases, having plenty of RAM in your server will
> > be a better way to spend your money. For certain high throughput,
> > relatively small databases (i.e. transactional work) the SSD can be
> > quite useful.
>
> Unless somebody has changes some physics recently, I'm not understanding
> the recent discussions of SSD in the general press. Flash has a limited
> number of writes before it becomes unreliable. On good quality consumer
Actually, I was referring to all SSD systems, some of which are based
on flash memory, some on DRAM, sometimes backed by hard drives.
There's always a use case for a given piece of tech.
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-24 01:45 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
@ 2008-01-24 16:09 ` Chris Browne <cbbrowne@acm.org>
0 siblings, 0 replies; 21+ messages in thread
From: Chris Browne @ 2008-01-24 16:09 UTC (permalink / raw)
To: pgsql-performance
scott.marlowe@gmail.com ("Scott Marlowe") writes:
> On Jan 23, 2008 1:57 PM, Guy Rouillier <guyr-ml1@burntmail.com> wrote:
>> Scott Marlowe wrote:
>> > I assume you're talking about solid state drives? They have their
>> > uses, but for most use cases, having plenty of RAM in your server will
>> > be a better way to spend your money. For certain high throughput,
>> > relatively small databases (i.e. transactional work) the SSD can be
>> > quite useful.
>>
>> Unless somebody has changes some physics recently, I'm not understanding
>> the recent discussions of SSD in the general press. Flash has a limited
>> number of writes before it becomes unreliable. On good quality consumer
>
> Actually, I was referring to all SSD systems, some of which are based
> on flash memory, some on DRAM, sometimes backed by hard drives.
>
> There's always a use case for a given piece of tech.
Yeah, I could see an SSD making use of a mixture of technologies...
- Obviously, it needs a pile of RAM.
- Then, have a battery that can keep the RAM backed up for [a while].
- If power goes out, then contents of RAM get copied out to the "flash"
memory.
In this context, "flash" has several merits over disk drives.
Notably, the absence of moving mechanical parts means:
- Hopefully lower power consumption than a disk drive
- Less fragility than a disk drive
- Quite likely the "flash" will be smaller than a disk drive
The fact that the number of writes may be limited should only be an
important factor if power goes out *INCREDIBLY* frequently, as data
only gets written upon power loss.
The combination of RAM + battery + flash looks like a real winner,
when they are combined using a protocol that takes advantage of their
strengths, and which doesn't rest on their weaknesses.
--
let name="cbbrowne" and tld="cbbrowne.com" in String.concat "@" [name;tld];;
http://cbbrowne.com/info/advocacy.html
Roses are red
Violets are blue
Some poems rhyme
But this one doesn't.
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Re: Making the most of memory? Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Re: Making the most of memory? Guy Rouillier <guyr-ml1@burntmail.com>
@ 2008-01-24 14:01 ` Merlin Moncure <mmoncure@gmail.com>
5 siblings, 0 replies; 21+ messages in thread
From: Merlin Moncure @ 2008-01-24 14:01 UTC (permalink / raw)
To: Guy Rouillier <guyr-ml1@burntmail.com>; +Cc: pgsql-performance
On Jan 23, 2008 2:57 PM, Guy Rouillier <guyr-ml1@burntmail.com> wrote:
> Unless somebody has changes some physics recently, I'm not understanding
> the recent discussions of SSD in the general press. Flash has a limited
> number of writes before it becomes unreliable. On good quality consumer
> grade, that's about 300,000 writes, while on industrial grade it's about
> 10 times that. That's fine for mp3 players and cameras; even
wrong. at 1 million writes (which better flash drives can do) wear
leveling, this can be disproved with a simple back of napkin
calculation...
the major problem with flash drives in the server space is actually
random write performance...if random write performed as well as random
read for flash ssd, you would be able to replace a stack of 15k sas
drives with a single flash ssd in terms of iops.
merlin
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
@ 2008-01-23 14:59 ` Bill Moran <wmoran@collaborativefusion.com>
4 siblings, 0 replies; 21+ messages in thread
From: Bill Moran @ 2008-01-23 14:59 UTC (permalink / raw)
To: Joshua Fielek <jfielek@centriccrm.com>; +Cc: pgsql-performance
In response to Joshua Fielek <jfielek@centriccrm.com>:
>
> Hey folks --
>
> For starters, I am fairly new to database tuning and I'm still learning
> the ropes. I understand the concepts but I'm still learning the real
> world impact of some of the configuration options for postgres.
>
> We have an application that has been having some issues with performance
> within postgres 8.1.9 and later 8.2.5. The upgrade to 8.2.5 gained us a
> nice little performance increase just off the improved query
> optimization, but we are still having other performance issues.
>
> The database itself is not that large -- a db_dump of the sql file as
> text is only about 110MB. I haven't checked the exact size of the actual
> data base, but the entire data directory is smaller than the available
> memory at about 385MB including logs and config files. This is a single
> database with a relatively small number of client connections (50 or so)
> making a fair number of smaller queries. This is not a massive data
> effort by any means at this time, but it will be growing.
>
> We have available currently ~4GB (8GB total) for Postgres. We will be
> moving to a server that will have about 24GB (32GB total) available for
> the database, with the current server becoming a hot backup, probably
> with slony or something similar to keep the databases in sync.
>
> I've been monitoring the memory usage of postgres on the current system
> and it seems like none of the threads ever allocate more than about
> 400MB total and about 80-90MB shared memory. It seems to me that since
> we have a very large chunk of memory relative to the database size we
> should be loading the entire database into memory. How can we be sure
> we're getting the most out of the memory we're allocating to postgres?
> What can we do to improve the memory usage, looking for performance
> first and foremost, on both the larger and smaller systems?
Every system is a little different. I recommend you do some profiling.
First off, Install the pg_buffercache add-on. This gives you an easy
view to see how much of your shared_buffers are being used, with a
query like:
select count(*) from pg_buffercache where reldatabase is not null;
There is also a lot of interesting information in the pg_stat_database
table, i.e.:
select sum(blks_hit) from pg_stat_database;
Which gives you the # of reads that were satisfied from shared_buffers,
or
select sum(blks_read) from pg_stat_database;
which gives you the # of reads that had to go to disk.
There are lots of other stats you can graph, but those are some that I
find particularly telling as to how things are being used.
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
@ 2008-01-23 19:06 ` Rich <rhdyes@gmail.com>
4 siblings, 0 replies; 21+ messages in thread
From: Rich @ 2008-01-23 19:06 UTC (permalink / raw)
To: Joshua Fielek <jfielek@centriccrm.com>; pgsql-performance
Josh what about the rest of your system? What operating system? Your
hardware setup. Drives? Raids? What indices do you have setup for
these queries? There are other reasons that could cause bad queries
performance.
On Jan 22, 2008 11:11 PM, Joshua Fielek <jfielek@centriccrm.com> wrote:
>
> Hey folks --
>
> For starters, I am fairly new to database tuning and I'm still learning
> the ropes. I understand the concepts but I'm still learning the real
> world impact of some of the configuration options for postgres.
>
> We have an application that has been having some issues with performance
> within postgres 8.1.9 and later 8.2.5. The upgrade to 8.2.5 gained us a
> nice little performance increase just off the improved query
> optimization, but we are still having other performance issues.
>
> The database itself is not that large -- a db_dump of the sql file as
> text is only about 110MB. I haven't checked the exact size of the actual
> data base, but the entire data directory is smaller than the available
> memory at about 385MB including logs and config files. This is a single
> database with a relatively small number of client connections (50 or so)
> making a fair number of smaller queries. This is not a massive data
> effort by any means at this time, but it will be growing.
>
> We have available currently ~4GB (8GB total) for Postgres. We will be
> moving to a server that will have about 24GB (32GB total) available for
> the database, with the current server becoming a hot backup, probably
> with slony or something similar to keep the databases in sync.
>
> I've been monitoring the memory usage of postgres on the current system
> and it seems like none of the threads ever allocate more than about
> 400MB total and about 80-90MB shared memory. It seems to me that since
> we have a very large chunk of memory relative to the database size we
> should be loading the entire database into memory. How can we be sure
> we're getting the most out of the memory we're allocating to postgres?
> What can we do to improve the memory usage, looking for performance
> first and foremost, on both the larger and smaller systems?
>
> Here's the salient config items for the 8GB system:
>
> max_connections = 200 # realistically we expect 50-150 open
> shared_buffers = 38000
> sort_mem = 1048576
> work_mem = 32000
> maintenance_work_mem = 32000
> max_fsm_pages = 480001 # probably too large for the max_fsm_*
> max_fsm_relations = 20000 # items; one Db with ~400 tables.
> effective_cache_size = 212016 # ~2GB, could probably double this
>
>
> Thanks,
> J
> --
> Joshua J. Fielek
> Sr. Software Engineer
> Concursive Corporation
> 223 East City Hall Ave., Suite 212
> Norfolk, VA 23510
> Phone : (757) 627-3002x6656
> Mobile : (757) 754-4462
> Fax : (757) 627-8773
> Email : jfielek@concursive.com
> http://www.concursive.com
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: You can help support the PostgreSQL project by donating at
>
> http://www.postgresql.org/about/donate
>
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
@ 2008-01-24 09:19 ` Heikki Linnakangas <heikki@enterprisedb.com>
4 siblings, 0 replies; 21+ messages in thread
From: Heikki Linnakangas @ 2008-01-24 09:19 UTC (permalink / raw)
To: Joshua Fielek <jfielek@centriccrm.com>; +Cc: pgsql-performance
Joshua Fielek wrote:
> We have an application that has been having some issues with performance
> within postgres 8.1.9 and later 8.2.5. The upgrade to 8.2.5 gained us a
> nice little performance increase just off the improved query
> optimization, but we are still having other performance issues.
What kind of performance issues are you having? A slow query?
What kind of transactions are you running? Read-only? A lot of updates?
How many transactions per minute?
> We have available currently ~4GB (8GB total) for Postgres. We will be
> moving to a server that will have about 24GB (32GB total) available for
> the database, with the current server becoming a hot backup, probably
> with slony or something similar to keep the databases in sync.
>
> I've been monitoring the memory usage of postgres on the current system
> and it seems like none of the threads ever allocate more than about
> 400MB total and about 80-90MB shared memory. It seems to me that since
> we have a very large chunk of memory relative to the database size we
> should be loading the entire database into memory. How can we be sure
> we're getting the most out of the memory we're allocating to postgres?
> What can we do to improve the memory usage, looking for performance
> first and foremost, on both the larger and smaller systems?
How are you measuring the amount of memory used? Which operating system
are you using?
Those numbers don't seem unreasonable to me, though I would've expected
a bit over ~300 MB of shared memory to be used given your shared_buffers
setting.
On a database of ~400MB in size , I doubt you'll ever find use for more
than 1-2 gigs of RAM.
Others have asked about your I/O system, but if the database stays in
memory all the time, that shouldn't matter much. Except for one thing:
fsyncs. Perhaps you're bottlenecked by the fact that each commit needs
to flush the WAL to disk? A RAID array won't help with that, but a RAID
controller with a battery-backed up cache will. You could try turning
fsync=off to test that theory, but you don't want to do that in production.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
@ 2008-01-24 18:01 ` Merlin Moncure <mmoncure@gmail.com>
2008-01-24 18:21 ` Re: Making the most of memory? Merlin Moncure <mmoncure@gmail.com>
4 siblings, 1 reply; 21+ messages in thread
From: Merlin Moncure @ 2008-01-24 18:01 UTC (permalink / raw)
To: Joshua Fielek <jfielek@centriccrm.com>; +Cc: pgsql-performance
On Jan 22, 2008 11:11 PM, Joshua Fielek <jfielek@centriccrm.com> wrote:
> The database itself is not that large -- a db_dump of the sql file as
> text is only about 110MB. I haven't checked the exact size of the actual
> data base, but the entire data directory is smaller than the available
> memory at about 385MB including logs and config files. This is a single
> database with a relatively small number of client connections (50 or so)
> making a fair number of smaller queries. This is not a massive data
> effort by any means at this time, but it will be growing.
>
> We have available currently ~4GB (8GB total) for Postgres. We will be
> moving to a server that will have about 24GB (32GB total) available for
> the database, with the current server becoming a hot backup, probably
> with slony or something similar to keep the databases in sync.
The database is cached in RAM. As soon as the database files are read
for the first time, they will stay cached in the o/s basically forever
(in either o/s file cache or postgresql buffer cache) as long as there
are no other demands on memory...not likely in your case. This also
means extra ram is not likely to help performance much if at all.
I'll give you a little hint about postgresql.conf...tuning shared
buffers rarely has a huge impact on performance...the o/s will
possible issues you might be having:
*) sync issues: asking drives to sync more often they can handle.
possible solutions...faster/more drives or ask database to sync less
(fsync off, or better transaction management)
*) cpu bound issues: poorly designed queries, or poorly designed
tables, bad/no indexes, etc
*) unrealistic expectations of database performance
*) not maintaining database properly, vacuum, etc
*) mvcc issues
maybe post your transaction load, and/or some slow queries you are dealing with.
merlin
^ permalink raw reply [nested|flat] 21+ messages in thread
* Re: Making the most of memory?
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-24 18:01 ` Re: Making the most of memory? Merlin Moncure <mmoncure@gmail.com>
@ 2008-01-24 18:21 ` Merlin Moncure <mmoncure@gmail.com>
0 siblings, 0 replies; 21+ messages in thread
From: Merlin Moncure @ 2008-01-24 18:21 UTC (permalink / raw)
To: Joshua Fielek <jfielek@centriccrm.com>; +Cc: pgsql-performance
On Jan 24, 2008 1:01 PM, Merlin Moncure <mmoncure@gmail.com> > I'll
give you a little hint about postgresql.conf...tuning shared
> buffers rarely has a huge impact on performance...the o/s will
oops. i meant to say the o/s will cache the files just fine...the
setting that _does_ affect query performance is work_mem, but this
applies to queries on a case by case basis.
merlin
^ permalink raw reply [nested|flat] 21+ messages in thread
end of thread, other threads:[~2008-01-25 08:18 UTC | newest]
Thread overview: 21+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2008-01-23 04:11 Making the most of memory? Joshua Fielek <jfielek@centriccrm.com>
2008-01-23 05:20 ` Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 18:44 ` Scott Marlowe <scott.marlowe@gmail.com>
2008-01-23 19:57 ` Guy Rouillier <guyr-ml1@burntmail.com>
2008-01-23 20:40 ` A.M. <agentm@themactionfaction.com>
2008-01-23 20:50 ` Brian Hurt <bhurt@janestcapital.com>
2008-01-24 14:15 ` Matthew <matthew@flymine.org>
2008-01-24 14:26 ` Florian Weimer <fweimer@bfk.de>
2008-01-24 16:23 ` Chris Browne <cbbrowne@acm.org>
2008-01-25 08:18 ` Florian Weimer <fweimer@bfk.de>
2008-01-23 21:06 ` Craig James <craig_james@emolecules.com>
2008-01-24 00:54 ` Greg Smith <gsmith@gregsmith.com>
2008-01-24 08:05 ` Steinar H. Gunderson <sgunderson@bigfoot.com>
2008-01-24 01:45 ` Scott Marlowe <scott.marlowe@gmail.com>
2008-01-24 16:09 ` Chris Browne <cbbrowne@acm.org>
2008-01-24 14:01 ` Merlin Moncure <mmoncure@gmail.com>
2008-01-23 14:59 ` Bill Moran <wmoran@collaborativefusion.com>
2008-01-23 19:06 ` Rich <rhdyes@gmail.com>
2008-01-24 09:19 ` Heikki Linnakangas <heikki@enterprisedb.com>
2008-01-24 18:01 ` Merlin Moncure <mmoncure@gmail.com>
2008-01-24 18:21 ` Merlin Moncure <mmoncure@gmail.com>
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox