Open Bug 1884050 Opened 1 year ago Updated 1 year ago

Explore further improvements to atom caches in zones

Categories

(Core :: JavaScript Engine, task, P2)

task

Tracking

()

People

(Reporter: jlink, Assigned: jlink)

References

(Blocks 1 open bug)

Details

Bug 1879143 replaced the data structure used as an atom cache in the zones with one more appropriate for that use case. This change resulted in some good improvements but there might be some additional things that can be done to make it better.

These include:

  1. Evaluate the distribution of cache indices that are used. The current approach of using the lower bits of the hash as the cache index seems to be working reasonably well based on the statistics that I computed. However, as an experiment I tried a different way to compute the cache index from the hash number that used all of the bits and I got somewhat better statistics. This is something that I want to follow up on.
  2. Try a two-way or four-way associative cache. With the current cache size and cache index computation, the cache is not "perfect". That is to say, there are times when we evict an entry that we later look for. Cache associativity is one way to address this problem without "improving" the hash function or increasing the number of entries.
  3. Try not caching the hash value and string length in each cache entry. This will likely result in an unnecessary cache miss on every failed lookup but would cut memory usage per-cache-line in half.
Blocks: sm-runtime
Severity: -- → N/A
Priority: -- → P2
Depends on: 1893690
No longer depends on: 1893690
You need to log in before you can comment on or make changes to this bug.