freecache icon indicating copy to clipboard operation
freecache copied to clipboard

why `Get` sometimes become slow

Open sanyfan opened this issue 3 years ago • 4 comments

I allocate 3G memory for cache. The size of cached data is about 10m terms and the cache memory is almost full. When I use cache.Get(), I found sometimes it will cost much time in getting some items.

image

The flame graph shows cache.Get() spent a lot of time in lookup() and entryPtrIdx()

However, after I restart the server and rebuild the cache with the same data(maybe not in the same order), the performance issue disappears. The CPU time of the whole process decreases from more than 10 seconds to 0.X second.

Is there any factor that will affect this performance? The position of data? The data is evicted?

sanyfan avatar Mar 16 '22 08:03 sanyfan

it use Lock in get。 easy way is you can new more cache object for performance。

fare83 avatar Apr 24 '22 06:04 fare83

What's the hardware and OS environment? Are there other processes running on the same machine?

coocood avatar Apr 24 '22 07:04 coocood

What's the hardware and OS environment? Are there other processes running on the same machine?

we have 3 pods, each pod has 2 CPUs and 6G memory. the OS environment is Alpine. According to the log, there is no other request at our test time.

sanyfan avatar Apr 25 '22 03:04 sanyfan

it use Lock in get。 easy way is you can new more cache object for performance。

according to the flame graph, it seems spent little time on Lock

sanyfan avatar Apr 25 '22 03:04 sanyfan