On Oct 19, 2010, at 9:01 AM, Doug wrote: > I'm not going to pretend to understand the SQLite source, but it seems > like having a mutex per PCache1 (ie the param passed in to > pcache1Fetch > and other cache functions) would be a good approach instead of the > global > mutex. But that approach wasn't taken, and I've found everything to > be > very well thought out in SQLite so I'm wondering if anyone can comment > on the why's.
It's so that page buffers can be managed more effectively. If SQLite reaches some internal limit (say the sqlite3_soft_heap_limit() limit), then when a page is required one connection, it can steal the buffer space from some other connections page cache. Dan. > Thanks > Doug > > >> -----Original Message----- >> From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users- >> boun...@sqlite.org] On Behalf Of Pavel Ivanov >> Sent: Monday, October 18, 2010 2:15 PM >> To: General Discussion of SQLite Database >> Subject: Re: [sqlite] Scaling of Cache >> >> Jeff, >> >> I can agree that on Windows mutex performance can be awful especially >> in such frequently called place as pcache1Fetch. So you have only two >> options to solve the problem: >> 1) Split threads into different processes - make it one thread per >> process. >> 2) Make your own implementation of pcache. You can probably just take >> SQLite's implementation and change usage of mutex to spin lock for >> example, or make it work with TLS to make threads completely >> independent. In latter case you have to be sure that each connection >> is used solely in one thread though. >> >> >> Pavel >> >> On Mon, Oct 18, 2010 at 1:24 PM, Powell, Jeff <jeff.pow...@sap.com> >> wrote: >>> I did some profiling of our current application through the Intel >> Parallel Studio tools, and it identified the mutex in pcache1Fetch as >> the primary source of waits. Each thread acts on its own, sharing >> nothing with the other threads, so I would expect that there is zero >> waiting. >>> >>> -Jeff >>> >>> -----Original Message----- >>> From: sqlite-users-boun...@sqlite.org [mailto:sqlite-users- >> boun...@sqlite.org] On Behalf Of Pavel Ivanov >>> Sent: Monday, October 18, 2010 12:03 PM >>> To: General Discussion of SQLite Database >>> Subject: Re: [sqlite] Scaling of Cache >>> >>>> In pcache1Fetch, sqlite mutexes around the cache handling, which >> appears to be causing significant waits/scalability issues in my >> application. If I disable this mutex, the application crashes. >>> >>> Why do you think that this mutex causes significant waits? >>> Anyway ... >>> >>>> Is it possible to cache on a thread-by-thread basis such that no >> mutexes are necessary? >>> >>> You can make your own pcache implementation which will work >>> independently between threads and thus probably consume a lot more >>> memory than it is now. >>> >>> >>> Pavel >>> >>> On Mon, Oct 18, 2010 at 12:25 PM, Powell, Jeff <jeff.pow...@sap.com> >> wrote: >>>> I'm seeing some scaling issues (which I'm hoping someone else has >> encountered before). I have an application which utilizes multiple >> threads, each of which never writes to the database, and none of >> which >> shares its cache. >>>> >>>> In pcache1Fetch, sqlite mutexes around the cache handling, which >> appears to be causing significant waits/scalability issues in my >> application. If I disable this mutex, the application crashes. >>>> >>>> Is it possible to cache on a thread-by-thread basis such that no >> mutexes are necessary? >>>> >>>> -Jeff >>>> >>>> >>>> _______________________________________________ >>>> sqlite-users mailing list >>>> sqlite-users@sqlite.org >>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >>>> >>> _______________________________________________ >>> sqlite-users mailing list >>> sqlite-users@sqlite.org >>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >>> _______________________________________________ >>> sqlite-users mailing list >>> sqlite-users@sqlite.org >>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >>> >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users