mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-14 00:57:28 -06:00
[feature] simpler cache size configuration (#2051)
* add automatic cache max size generation based on ratios of a singular fixed memory target
Signed-off-by: kim <grufwub@gmail.com>
* remove now-unused cache max-size config variables
Signed-off-by: kim <grufwub@gmail.com>
* slight ratio tweak
Signed-off-by: kim <grufwub@gmail.com>
* remove unused visibility config var
Signed-off-by: kim <grufwub@gmail.com>
* add secret little ratio config trick
Signed-off-by: kim <grufwub@gmail.com>
* fixed a word
Signed-off-by: kim <grufwub@gmail.com>
* update cache library to remove use of TTL in result caches + slice cache
Signed-off-by: kim <grufwub@gmail.com>
* update other cache usages to use correct interface
Signed-off-by: kim <grufwub@gmail.com>
* update example config to explain the cache memory target
Signed-off-by: kim <grufwub@gmail.com>
* update env parsing test with new config values
Signed-off-by: kim <grufwub@gmail.com>
* do some ratio twiddling
Signed-off-by: kim <grufwub@gmail.com>
* add missing header
* update envparsing with latest defaults
Signed-off-by: kim <grufwub@gmail.com>
* update size calculations to take into account result cache, simple cache and extra map overheads
Signed-off-by: kim <grufwub@gmail.com>
* tweak the ratios some more
Signed-off-by: kim <grufwub@gmail.com>
* more nan rampaging
Signed-off-by: kim <grufwub@gmail.com>
* fix envparsing script
Signed-off-by: kim <grufwub@gmail.com>
* update cache library, add sweep function to keep caches trim
Signed-off-by: kim <grufwub@gmail.com>
* sweep caches once a minute
Signed-off-by: kim <grufwub@gmail.com>
* add a regular job to sweep caches and keep under 80% utilisation
Signed-off-by: kim <grufwub@gmail.com>
* remove dead code
Signed-off-by: kim <grufwub@gmail.com>
* add new size library used to libraries section of readme
Signed-off-by: kim <grufwub@gmail.com>
* add better explanations for the mem-ratio numbers
Signed-off-by: kim <grufwub@gmail.com>
* update go-cache
Signed-off-by: kim <grufwub@gmail.com>
* library version bump
Signed-off-by: kim <grufwub@gmail.com>
* update cache.result{} size model estimation
Signed-off-by: kim <grufwub@gmail.com>
---------
Signed-off-by: kim <grufwub@gmail.com>
This commit is contained in:
parent
e8a20f587c
commit
00adf18c24
32 changed files with 2115 additions and 2330 deletions
22
internal/cache/util.go
vendored
22
internal/cache/util.go
vendored
|
|
@ -20,10 +20,8 @@ package cache
|
|||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"codeberg.org/gruf/go-cache/v3/result"
|
||||
errorsv2 "codeberg.org/gruf/go-errors/v2"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
|
|
@ -56,26 +54,6 @@ func (*nocopy) Lock() {}
|
|||
|
||||
func (*nocopy) Unlock() {}
|
||||
|
||||
// tryStart will attempt to start the given cache only if sweep duration > 0 (sweeping is enabled).
|
||||
func tryStart[ValueType any](cache *result.Cache[ValueType], sweep time.Duration) {
|
||||
if sweep > 0 {
|
||||
var z ValueType
|
||||
msg := fmt.Sprintf("starting %T cache", z)
|
||||
tryUntil(msg, 5, func() bool {
|
||||
return cache.Start(sweep)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// tryStop will attempt to stop the given cache only if sweep duration > 0 (sweeping is enabled).
|
||||
func tryStop[ValueType any](cache *result.Cache[ValueType], sweep time.Duration) {
|
||||
if sweep > 0 {
|
||||
var z ValueType
|
||||
msg := fmt.Sprintf("stopping %T cache", z)
|
||||
tryUntil(msg, 5, cache.Stop)
|
||||
}
|
||||
}
|
||||
|
||||
// tryUntil will attempt to call 'do' for 'count' attempts, before panicking with 'msg'.
|
||||
func tryUntil(msg string, count int, do func() bool) {
|
||||
for i := 0; i < count; i++ {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue