change preload

This commit is contained in:
YouROK
2020-12-18 10:31:09 +03:00
parent 06e8cf833d
commit 8e97922613
4 changed files with 28 additions and 18 deletions

View File

@@ -9,10 +9,8 @@ import (
type BTSets struct { type BTSets struct {
// Cache // Cache
CacheSize int64 // in byte, def 200 mb CacheSize int64 // in byte, def 200 mb
PreloadBufferSize int64 // in byte, buffer for preload PreloadBuffer bool
ReaderReadAHead int // in percent, 5%-100%, [...S__X__E...] [S-E] not clean
// Reader
ReaderPreload int // in percent, 5%-100%, [...S__X__E...] [S-E] not clean
// Storage // Storage
SaveOnDisk bool // save on disk? SaveOnDisk bool // save on disk?
@@ -52,11 +50,11 @@ func SetBTSets(sets *BTSets) {
return return
} }
if sets.ReaderPreload < 5 { if sets.ReaderReadAHead < 5 {
sets.ReaderPreload = 5 sets.ReaderReadAHead = 5
} }
if sets.ReaderPreload > 100 { if sets.ReaderReadAHead > 100 {
sets.ReaderPreload = 100 sets.ReaderReadAHead = 100
} }
BTsets = sets BTsets = sets
buf, err := json.Marshal(BTsets) buf, err := json.Marshal(BTsets)
@@ -72,8 +70,8 @@ func loadBTSets() {
if len(buf) > 0 { if len(buf) > 0 {
err := json.Unmarshal(buf, &BTsets) err := json.Unmarshal(buf, &BTsets)
if err == nil { if err == nil {
if BTsets.ReaderPreload < 5 { if BTsets.ReaderReadAHead < 5 {
BTsets.ReaderPreload = 5 BTsets.ReaderReadAHead = 5
} }
return return
} }
@@ -84,11 +82,11 @@ func loadBTSets() {
sets.EnableDebug = false sets.EnableDebug = false
sets.DisableUTP = true sets.DisableUTP = true
sets.CacheSize = 200 * 1024 * 1024 // 200mb sets.CacheSize = 200 * 1024 * 1024 // 200mb
sets.PreloadBufferSize = 20 * 1024 * 1024 sets.PreloadBuffer = true
sets.ConnectionsLimit = 20 sets.ConnectionsLimit = 20
sets.DhtConnectionLimit = 500 sets.DhtConnectionLimit = 500
sets.RetrackersMode = 1 sets.RetrackersMode = 1
sets.TorrentDisconnectTimeout = 30 sets.TorrentDisconnectTimeout = 30
sets.ReaderPreload = 70 // 70% preload sets.ReaderReadAHead = 70 // 70% preload
BTsets = sets BTsets = sets
} }

View File

@@ -6,11 +6,10 @@ import (
"sort" "sort"
"time" "time"
"server/log"
sets "server/settings"
"github.com/anacrolix/torrent" "github.com/anacrolix/torrent"
"github.com/anacrolix/torrent/metainfo" "github.com/anacrolix/torrent/metainfo"
"server/log"
sets "server/settings"
) )
var ( var (
@@ -128,3 +127,16 @@ func Shutdown() {
func WriteStatus(w io.Writer) { func WriteStatus(w io.Writer) {
bts.client.WriteStatus(w) bts.client.WriteStatus(w)
} }
func Preload(torr *Torrent, index int) {
if !sets.BTsets.PreloadBuffer {
size := int64(20 * 1024 * 1024)
if size > sets.BTsets.CacheSize {
size = sets.BTsets.CacheSize
}
torr.Preload(index, size)
} else {
size := int64(float32(sets.BTsets.ReaderReadAHead) / 100.0 * float32(sets.BTsets.CacheSize))
torr.Preload(index, size)
}
}

View File

@@ -20,7 +20,7 @@ func (r *Reader) getPieceNum(offset int64) int {
} }
func (r *Reader) getReaderRange() (int64, int64) { func (r *Reader) getReaderRange() (int64, int64) {
prc := int64(settings.BTsets.ReaderPreload) prc := int64(settings.BTsets.ReaderReadAHead)
beginOffset := r.offset - r.cache.capacity*(100-prc)/100 beginOffset := r.offset - r.cache.capacity*(100-prc)/100
endOffset := r.offset + r.cache.capacity*prc/100 endOffset := r.offset + r.cache.capacity*prc/100

View File

@@ -92,7 +92,7 @@ func stream(c *gin.Context) {
} }
// preload torrent // preload torrent
if preload { if preload {
tor.Preload(index, 0) torr.Preload(tor, index)
} }
// return stat if query // return stat if query
if stat { if stat {