diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-07-29 11:59:33 +0500 |
|---|---|---|
| committer | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-07-29 11:59:33 +0500 |
| commit | 2f0dda384d9683a35d86e2c7968e3f7001a33496 (patch) | |
| tree | 02f34ffda07839b7a9dc5cd17b30c78623fadbf0 /weed/server | |
| parent | 32d0413be1fbf114268284b7cf6415a518195212 (diff) | |
| download | seaweedfs-2f0dda384d9683a35d86e2c7968e3f7001a33496.tar.xz seaweedfs-2f0dda384d9683a35d86e2c7968e3f7001a33496.zip | |
vacuum show LA
Diffstat (limited to 'weed/server')
| -rw-r--r-- | weed/server/volume_grpc_vacuum.go | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/weed/server/volume_grpc_vacuum.go b/weed/server/volume_grpc_vacuum.go index 0ab782b02..9b0b9d9f3 100644 --- a/weed/server/volume_grpc_vacuum.go +++ b/weed/server/volume_grpc_vacuum.go @@ -2,12 +2,17 @@ package weed_server import ( "context" - "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb" "github.com/chrislusf/seaweedfs/weed/storage/needle" + "github.com/prometheus/procfs" + "github.com/prometheus/procfs/blockdevice" + "math" + "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 +34,24 @@ 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() + bd, bdErr := blockdevice.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.PercentLoadAvg_1M = uint32(math.Round(fsLa.Load1 * 100 / float64(numCPU))) + } + } + if bdErr == nil { + if bdStats, err := bd.ProcDiskstats(); err == nil { + for _, stat := range bdStats { + glog.V(0).Infof("vacuum id: processed ProcDiskstats: %+v", req.VolumeId, stat) + } + } + } if sendErr = stream.Send(resp); sendErr != nil { return false } |
