aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-06-27 12:51:04 -0700
committerChris Lu <chris.lu@gmail.com>2020-06-27 12:51:04 -0700
commitbef356ce4ca3c95a77123ea6ff5c89b9c2a8ab36 (patch)
tree9cb57645c33183df8b3c2076b3f13401e82d965d
parenta808b3b5df6944a5b3434032b5fdb0fe68211c11 (diff)
downloadseaweedfs-bef356ce4ca3c95a77123ea6ff5c89b9c2a8ab36.tar.xz
seaweedfs-bef356ce4ca3c95a77123ea6ff5c89b9c2a8ab36.zip
since we already know the chunk size, no need to iterate
-rw-r--r--weed/util/chunk_cache/chunk_cache.go26
1 files changed, 20 insertions, 6 deletions
diff --git a/weed/util/chunk_cache/chunk_cache.go b/weed/util/chunk_cache/chunk_cache.go
index 3ae0f4ed5..17b64fb6c 100644
--- a/weed/util/chunk_cache/chunk_cache.go
+++ b/weed/util/chunk_cache/chunk_cache.go
@@ -46,9 +46,11 @@ func (c *ChunkCache) GetChunk(fileId string, chunkSize uint64) (data []byte) {
func (c *ChunkCache) doGetChunk(fileId string, chunkSize uint64) (data []byte) {
- data = c.memCache.GetChunk(fileId)
- if len(data) != 0 && len(data) >= int(chunkSize) {
- return data
+ if chunkSize < memCacheSizeLimit {
+ data = c.memCache.GetChunk(fileId)
+ if len(data) >= int(chunkSize) {
+ return data
+ }
}
fid, err := needle.ParseFileIdFromString(fileId)
@@ -57,9 +59,21 @@ func (c *ChunkCache) doGetChunk(fileId string, chunkSize uint64) (data []byte) {
return nil
}
- for _, diskCache := range c.diskCaches {
- data := diskCache.getChunk(fid.Key)
- if len(data) != 0 && len(data) >= int(chunkSize) {
+ if chunkSize < onDiskCacheSizeLimit0 {
+ data = c.diskCaches[0].getChunk(fid.Key)
+ if len(data) >= int(chunkSize) {
+ return data
+ }
+ }
+ if chunkSize < onDiskCacheSizeLimit1 {
+ data = c.diskCaches[1].getChunk(fid.Key)
+ if len(data) >= int(chunkSize) {
+ return data
+ }
+ }
+ {
+ data = c.diskCaches[2].getChunk(fid.Key)
+ if len(data) >= int(chunkSize) {
return data
}
}