On 11 Jul 2008, at 17:12, Brian Aker wrote:

Hi!

Lets figure out a memory policy first. I talked to Jay about this for a bit today. What I would like to do is sit down at OSCON and write up a plan for how to tackle memory.

We have (at a least):

1) Short lived, per query.
2) Medium lived, per login session
3) Forever

We also have the issue that some things, like Tables, are not per session and are cached.

Here is my $0.02...

Table/view/schema object definitions should all be persistent (forever). This makes it cheap to check if a table exists without having to hit the disk. An async event notification system should exist so that a storage engine can inform the server of the creation of a new table so that the server can request and cache it.

It may be a good idea to keep open storage handlers on a per-session basis and not shared. Then the problem of sharing/limiting open file handles is pushed down into the storage engines. Of course, a ceiling for max number of open handler instances per session is useful... Max of 63 per connection is reasonable as that is max number of tables in a join. Perhaps specify on a per-engine basis what is max number of file handles that engine may open. Perhaps a small utility helper can be provided to retrofit this facility like what I did with Amira to support 32000 "open" file handles. The current scheme mysqld uses which limits the total number of handler instances doesn't maximize use of available file handles, especially with many storage engines which are not file-per-table and share file handles among multiple handler instances even if they are file-per-table.

A small added bonus if you do this... some memory managers on some OS have limited NUMA knowledge and will then try to allocate objects in memory local or near to the current cpu. As we move to massively parallel system, we will see more and more NUMA-like architectures. Of course, the most common NUMA systems today are all those HyperChannel AMD SMP systems. Having a shared global pool can hurt performance on them.

Regards,
Antony


I would like to define these out, and create a strategy that is written down and someone and go to when they ask "how do I allocate memory?"
And everything should be error checked/type checked.

Until we have a plan though, lets just clean up what we have to make it a bit easier to deal with when we have a plan.

Cheers,
        -Brian


On Jul 11, 2008, at 6:36 AM, Stewart Smith wrote:

On Fri, 2008-07-11 at 12:28 +0100, David LP Travel wrote:
Original 1990ties MySQL allocation always was per query on a stack. And
when the query finished you reset the stack.

Very fast and very simple. When we added things like stored procedures etc that way broke. It looks like drizzle could go back to the original
way...

/me cheers "talloc! talloc!"

:)
--
Stewart Smith ([EMAIL PROTECTED])
http://www.flamingspork.com/

_______________________________________________
Drizzle mailing list
[EMAIL PROTECTED]
http://lists.tangent.org/mailman/listinfo/drizzle

--
_______________________________________________________
Brian "Krow" Aker, brian at tangent.org
Seattle, Washington
http://krow.net/                     <-- Me
http://tangent.org/                <-- Software
_______________________________________________________
You can't grep a dead tree.




_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp


_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to