aboutsummaryrefslogtreecommitdiff
path: root/weed/server
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2022-08-01 09:33:24 -0700
committerGitHub <noreply@github.com>2022-08-01 09:33:24 -0700
commit25b9062152ef636a890f97ccdb62324b9729a5a3 (patch)
tree5f1b270aee2dddeaaa48739bef371e7daa9987a0 /weed/server
parentf0e0073b84a58cc83895b4cb919d424a7833e7ec (diff)
parentfc651227669963420cbf8f72a661eec7dcb70dd7 (diff)
downloadseaweedfs-25b9062152ef636a890f97ccdb62324b9729a5a3.tar.xz
seaweedfs-25b9062152ef636a890f97ccdb62324b9729a5a3.zip
Merge pull request #3390 from kmlebedev/gentle_vacuum
vacuum stats of percent util LA
Diffstat (limited to 'weed/server')
-rw-r--r--weed/server/volume_grpc_vacuum.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/weed/server/volume_grpc_vacuum.go b/weed/server/volume_grpc_vacuum.go
index f11764f3a..5252584e1 100644
--- a/weed/server/volume_grpc_vacuum.go
+++ b/weed/server/volume_grpc_vacuum.go
@@ -3,11 +3,15 @@ package weed_server
import (
"context"
+ "github.com/prometheus/procfs"
"github.com/seaweedfs/seaweedfs/weed/glog"
"github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb"
"github.com/seaweedfs/seaweedfs/weed/storage/needle"
+ "runtime"
)
+var numCPU = runtime.NumCPU()
+
func (vs *VolumeServer) VacuumVolumeCheck(ctx context.Context, req *volume_server_pb.VacuumVolumeCheckRequest) (*volume_server_pb.VacuumVolumeCheckResponse, error) {
resp := &volume_server_pb.VacuumVolumeCheckResponse{}
@@ -29,11 +33,16 @@ func (vs *VolumeServer) VacuumVolumeCompact(req *volume_server_pb.VacuumVolumeCo
resp := &volume_server_pb.VacuumVolumeCompactResponse{}
reportInterval := int64(1024 * 1024 * 128)
nextReportTarget := reportInterval
-
+ fs, fsErr := procfs.NewDefaultFS()
var sendErr error
err := vs.store.CompactVolume(needle.VolumeId(req.VolumeId), req.Preallocate, vs.compactionBytePerSecond, func(processed int64) bool {
if processed > nextReportTarget {
resp.ProcessedBytes = processed
+ if fsErr == nil && numCPU > 0 {
+ if fsLa, err := fs.LoadAvg(); err == nil {
+ resp.LoadAvg_1M = float32(fsLa.Load1 / float64(numCPU))
+ }
+ }
if sendErr = stream.Send(resp); sendErr != nil {
return false
}