Re: SessionStore size - Bloat in sessionstore.js from Google and others causing major UI freezes
Taras Glek <[email protected]> Wed, 17 Aug 2011 10:59:37 -0700
| Newsgroups | gmane.comp.mozilla.performance |
|---|---|
| Message-ID | <[email protected]> |
On 07/19/2011 02:29 PM, Randell Jesup wrote: > On 7/19/2011 11:46 AM, Mike Shaver wrote: >>> e) Push the processing of the per-tab data over to a background >>> thread/process. >>> >>> May play into work with Electrolysis. Not necessarily at odds with >>> other options above. Fetching data from each tab would be the >>> primary UI-blocker, >> >> IMO, that's not really OK long term (e10s-term) -- the tabs will need >> to report their state back to chrome, so that the blocking goes the >> other way. > > Right - I didn't know the E10s architecture yet (on my list...) ;-) > >>> Others? Any ideas out there? >> >> File-per-tab containing all the data for that tab, maybe? Or two >> files per tab, to avoid re-writing the big sessionstorage data every >> time, if it doesn't change that often. This would let us write out >> the current tab more frequently than background tabs, as well. > > [ Hi Mike. Long time no chat :-) ] > > That can be done with many of these ideas, especially the DB-based ones. > And file-per-tab is pretty much the same as a DB, it's just > filesystem-as-dumb-DB. :-) Not that it's necessarily bad. So just to clarify. Conceptually it may be the same as a db. In practice keeping independent items in a file is a very bad idea. Ie if you have 7 tabs saved and then you close tab 3, you get in an ugly situation. A database will try to pretend it's ok at expense of serious fragmentation, requiring a vacuum, etc. I think a sessionrestore directory with a json(or something else) per tab is the only sane solution here. Let the filesystem do what it's good at. The other benefit of file-per-tab is that they can be fsynced independently without blocking io on other tab stores. > > Kyle (in .platform - that will teach me to cross-post) and Taras > suggested LevelDB over SQLite (we don't really need much in the way of > complexity here, mostly just safety against crashes and large blob > storage - which may speak to files, since filesystems are good at that). > > An intern has expressed interest in trying some of the options proposed. > I dropped some dumb testcode in the bug to help. First step should be adding telemetry to record sizes of json files and time to read/write them. Taras >