From 8ba7a4b5965a5239810db1c479ae91b6fe3435df Mon Sep 17 00:00:00 2001 From: jiefenghuang Date: Fri, 28 Feb 2025 15:46:17 +0800 Subject: [PATCH 1/2] fix readahead Signed-off-by: jiefenghuang --- cmd/flags.go | 7 ++++--- cmd/mount.go | 2 +- pkg/vfs/reader.go | 5 +---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/cmd/flags.go b/cmd/flags.go index 36068af6dd17..c9edc1d0e5ce 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -177,9 +177,10 @@ func dataCacheFlags() []cli.Flag { Value: "300M", Usage: "total read/write buffering in MiB", }, - &cli.StringFlag{ - Name: "max-readahead", - Usage: "max buffering for read ahead in MiB per read session", + &cli.UintFlag{ + Name: "max-readahead-blocks", + Value: 8, + Usage: "max buffering blocks for read ahead per read session", }, &cli.IntFlag{ Name: "prefetch", diff --git a/cmd/mount.go b/cmd/mount.go index 68bb5936e0d7..f3815ecdee58 100644 --- a/cmd/mount.go +++ b/cmd/mount.go @@ -345,7 +345,7 @@ func getChunkConf(c *cli.Context, format *meta.Format) *chunk.Config { Writeback: c.Bool("writeback"), Prefetch: c.Int("prefetch"), BufferSize: utils.ParseBytes(c, "buffer-size", 'M'), - Readahead: int(utils.ParseBytes(c, "max-readahead", 'M')), + Readahead: int(c.Uint("max-readahead-blocks")) * format.BlockSize * 1024, UploadLimit: utils.ParseMbps(c, "upload-limit") * 1e6 / 8, DownloadLimit: utils.ParseMbps(c, "download-limit") * 1e6 / 8, UploadDelay: utils.Duration(c.String("upload-delay")), diff --git a/pkg/vfs/reader.go b/pkg/vfs/reader.go index e8a858b50f1a..b38b69bd9496 100644 --- a/pkg/vfs/reader.go +++ b/pkg/vfs/reader.go @@ -704,13 +704,10 @@ type dataReader struct { func NewDataReader(conf *Config, m meta.Meta, store chunk.ChunkStore) DataReader { var readAheadTotal = 256 << 20 - var readAheadMax = conf.Chunk.BlockSize * 8 if conf.Chunk.BufferSize > 0 { readAheadTotal = int(conf.Chunk.BufferSize / 10 * 8) // 80% of total buffer } - if conf.Chunk.Readahead > 0 { - readAheadMax = utils.Min(conf.Chunk.Readahead, readAheadTotal) - } + readAheadMax := utils.Min(conf.Chunk.Readahead, readAheadTotal) r := &dataReader{ m: m, store: store, From 2f45502b00528f67aeb564cff4fcdd2d41324be3 Mon Sep 17 00:00:00 2001 From: jiefenghuang Date: Fri, 28 Feb 2025 15:52:50 +0800 Subject: [PATCH 2/2] fix Signed-off-by: jiefenghuang --- cmd/flags.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/flags.go b/cmd/flags.go index c9edc1d0e5ce..93bb07653585 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -73,6 +73,8 @@ func addCategory(f cli.Flag, cat string) { ff.Category = cat case *cli.IntFlag: ff.Category = cat + case *cli.UintFlag: + ff.Category = cat case *cli.Int64Flag: ff.Category = cat case *cli.Uint64Flag: