From accb4964b7a880b0cb68fcf1262426d3c7793403 Mon Sep 17 00:00:00 2001 From: bingoohuang Date: Fri, 29 May 2020 10:00:07 +0800 Subject: [PATCH] util.BytesToHumanReadable --- unmaintained/see_dat/see_dat.go | 5 +++- unmaintained/see_idx/see_idx.go | 4 ++- weed/server/volume_server_ui/templates.go | 34 ++++++++--------------- weed/util/bytes.go | 16 +++++++++++ 4 files changed, 34 insertions(+), 25 deletions(-) diff --git a/unmaintained/see_dat/see_dat.go b/unmaintained/see_dat/see_dat.go index efc58e751..5b81e48a1 100644 --- a/unmaintained/see_dat/see_dat.go +++ b/unmaintained/see_dat/see_dat.go @@ -2,6 +2,7 @@ package main import ( "flag" + "github.com/chrislusf/seaweedfs/weed/util" "time" "github.com/chrislusf/seaweedfs/weed/glog" @@ -31,7 +32,9 @@ func (scanner *VolumeFileScanner4SeeDat) ReadNeedleBody() bool { func (scanner *VolumeFileScanner4SeeDat) VisitNeedle(n *needle.Needle, offset int64, needleHeader, needleBody []byte) error { t := time.Unix(int64(n.AppendAtNs)/int64(time.Second), int64(n.AppendAtNs)%int64(time.Second)) - glog.V(0).Infof("%d,%s%x offset %d size %d cookie %x appendedAt %v", *volumeId, n.Id, n.Cookie, offset, n.Size, n.Cookie, t) + // I0529 09:56:30 12560 see_dat.go:35] 4,17f03026 offset 8 size 17214(16.81 KiB) cookie 7f03026 appendedAt 2020-05-28 10:39:56.19197 +0800 CST + glog.V(0).Infof("%d,%s%x offset %d size %d(%s) cookie %x appendedAt %v", + *volumeId, n.Id, n.Cookie, offset, n.Size, util.BytesToHumanReadable(uint64(n.Size)), n.Cookie, t) return nil } diff --git a/unmaintained/see_idx/see_idx.go b/unmaintained/see_idx/see_idx.go index 777af1821..84ea47083 100644 --- a/unmaintained/see_idx/see_idx.go +++ b/unmaintained/see_idx/see_idx.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + "github.com/chrislusf/seaweedfs/weed/util" "os" "path" "strconv" @@ -36,7 +37,8 @@ func main() { defer indexFile.Close() idx.WalkIndexFile(indexFile, func(key types.NeedleId, offset types.Offset, size uint32) error { - fmt.Printf("key:%v offset:%v size:%v\n", key, offset, size) + // key:1 offset:1 size:17214(16.81 KiB) + fmt.Printf("key:%v offset:%v size:%v(%v)\n", key, offset, size, util.BytesToHumanReadable(uint64(size))) return nil }) diff --git a/weed/server/volume_server_ui/templates.go b/weed/server/volume_server_ui/templates.go index a3175e9ca..8705bc088 100644 --- a/weed/server/volume_server_ui/templates.go +++ b/weed/server/volume_server_ui/templates.go @@ -2,24 +2,12 @@ package master_ui import ( "fmt" + "github.com/chrislusf/seaweedfs/weed/util" "html/template" "strconv" "strings" ) -func bytesToHumanReadble(b uint64) string { - const unit = 1024 - if b < unit { - return fmt.Sprintf("%d B", b) - } - div, exp := uint64(unit), 0 - for n := b / unit; n >= unit; n /= unit { - div *= unit - exp++ - } - return fmt.Sprintf("%.2f %ciB", float64(b)/float64(div), "KMGTPE"[exp]) -} - func percentFrom(total uint64, part_of uint64) string { return fmt.Sprintf("%.2f", (float64(part_of)/float64(total))*100) } @@ -33,9 +21,9 @@ func join(data []int64) string { } var funcMap = template.FuncMap{ - "join": join, - "bytesToHumanReadble": bytesToHumanReadble, - "percentFrom": percentFrom, + "join": join, + "bytesToHumanReadable": util.BytesToHumanReadable, + "percentFrom": percentFrom, } var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(` @@ -90,8 +78,8 @@ var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(` {{ .Dir }} - {{ bytesToHumanReadble .All }} - {{ bytesToHumanReadble .Free }} + {{ bytesToHumanReadable .All }} + {{ bytesToHumanReadable .Free }} {{ percentFrom .All .Used}}% {{ end }} @@ -151,9 +139,9 @@ var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(` {{ .Id }} {{ .Collection }} - {{ bytesToHumanReadble .Size }} + {{ bytesToHumanReadable .Size }} {{ .FileCount }} - {{ .DeleteCount }} / {{bytesToHumanReadble .DeletedByteCount}} + {{ .DeleteCount }} / {{bytesToHumanReadable .DeletedByteCount}} {{ .Ttl }} {{ .ReadOnly }} @@ -181,9 +169,9 @@ var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(` {{ .Id }} {{ .Collection }} - {{ bytesToHumanReadble .Size }} + {{ bytesToHumanReadable .Size }} {{ .FileCount }} - {{ .DeleteCount }} / {{bytesToHumanReadble .DeletedByteCount}} + {{ .DeleteCount }} / {{bytesToHumanReadable .DeletedByteCount}} {{ .RemoteStorageName }} {{ .RemoteStorageKey }} @@ -209,7 +197,7 @@ var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(` {{ .VolumeId }} {{ .Collection }} - {{ bytesToHumanReadble .ShardSize }} + {{ bytesToHumanReadable .ShardSize }} {{ .ShardIdList }} {{ .CreatedAt.Format "02 Jan 06 15:04 -0700" }} diff --git a/weed/util/bytes.go b/weed/util/bytes.go index d72d199f8..0650919c0 100644 --- a/weed/util/bytes.go +++ b/weed/util/bytes.go @@ -6,6 +6,22 @@ import ( "io" ) +// BytesToHumanReadable returns the converted human readable representation of the bytes. +func BytesToHumanReadable(b uint64) string { + const unit = 1024 + if b < unit { + return fmt.Sprintf("%d B", b) + } + + div, exp := uint64(unit), 0 + for n := b / unit; n >= unit; n /= unit { + div *= unit + exp++ + } + + return fmt.Sprintf("%.2f %ciB", float64(b)/float64(div), "KMGTPE"[exp]) +} + // big endian func BytesToUint64(b []byte) (v uint64) {