diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2022-08-01 09:33:24 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-01 09:33:24 -0700 |
| commit | 25b9062152ef636a890f97ccdb62324b9729a5a3 (patch) | |
| tree | 5f1b270aee2dddeaaa48739bef371e7daa9987a0 /weed/server | |
| parent | f0e0073b84a58cc83895b4cb919d424a7833e7ec (diff) | |
| parent | fc651227669963420cbf8f72a661eec7dcb70dd7 (diff) | |
| download | seaweedfs-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.go | 11 |
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 } |
