master
Alexey Kostin 2019-02-28 01:05:35 +03:00
parent 3d86dbc33b
commit 4f672577a1
4 changed files with 26 additions and 23 deletions

View File

@ -71,23 +71,23 @@ func bench(cephconn *Cephconnection, osddevice Device, buffs *[][]byte, startbuf
red := color.New(color.FgHiRed).SprintFunc() red := color.New(color.FgHiRed).SprintFunc()
darkred := color.New(color.FgRed).SprintFunc() darkred := color.New(color.FgRed).SprintFunc()
green := color.New(color.FgHiGreen).SprintFunc() green := color.New(color.FgHiGreen).SprintFunc()
darkgreen := color.New(color.FgGreen).SprintFunc() darkgreen := color.New(color.FgGreen).SprintFunc() //todo delete darkgreen
buffer.WriteString(fmt.Sprintf("Bench result for %v\n", osddevice.Name)) buffer.WriteString(fmt.Sprintf("Bench result for %v\n", osddevice.Name))
infos := map[string]string{ infos := map[string]string{
"front_addr": strings.Split(osddevice.Info.FrontAddr, "/")[0], "front_addr": strings.Split(osddevice.Info.FrontAddr, "/")[0],
"ceph_release/version": osddevice.Info.CephRelease + "/" + osddevice.Info.CephVersionShort, "ceph_release/version": osddevice.Info.CephRelease + "/" + osddevice.Info.CephVersionShort,
"cpu": osddevice.Info.CPU, "cpu": osddevice.Info.CPU,
"hostname": osddevice.Info.Hostname, "hostname": osddevice.Info.Hostname,
"default_device_class": osddevice.Info.DefaultDeviceClass, "default_device_class": osddevice.Info.DefaultDeviceClass,
"devices": osddevice.Info.Devices, "devices": osddevice.Info.Devices,
"distro_description": osddevice.Info.DistroDescription, "distro_description": osddevice.Info.DistroDescription,
"journal_rotational": osddevice.Info.JournalRotational, "journal_rotational": osddevice.Info.JournalRotational,
"rotational": osddevice.Info.Rotational, "rotational": osddevice.Info.Rotational,
"kernel_version": osddevice.Info.KernelVersion, "kernel_version": osddevice.Info.KernelVersion,
"mem_swap_kb": osddevice.Info.MemSwapKb, "mem_swap_kb": osddevice.Info.MemSwapKb,
"mem_total_kb": osddevice.Info.MemTotalKb, "mem_total_kb": osddevice.Info.MemTotalKb,
"osd_data": osddevice.Info.OsdData, "osd_data": osddevice.Info.OsdData,
"osd_objectstore": osddevice.Info.OsdObjectstore, "osd_objectstore": osddevice.Info.OsdObjectstore,
} }
var infokeys []string var infokeys []string
width := []int{0, 0, 0, 0, 0, 0} width := []int{0, 0, 0, 0, 0, 0}
@ -96,23 +96,23 @@ func bench(cephconn *Cephconnection, osddevice Device, buffs *[][]byte, startbuf
} }
sort.Strings(infokeys) sort.Strings(infokeys)
for n, key := range infokeys { for n, key := range infokeys {
if width[n % 3] < len(key) { if width[n%3] < len(key) {
width[n % 3] = len(key) width[n%3] = len(key)
} }
if width[3 + n % 3] < len(infos[key]) { if width[3+n%3] < len(infos[key]) {
width[3 + n % 3] = len(infos[key]) width[3+n%3] = len(infos[key])
} }
} }
buffer.WriteString( buffer.WriteString(
darkgreen("osdname") + strings.Repeat(" ", width[2]-len("osdname")+2) + darkgreen("osdname") + strings.Repeat(" ", width[2]-len("osdname")+2) +
red(osddevice.Name) + strings.Repeat(" ", width[5]-len(osddevice.Name)+2)) red(osddevice.Name) + strings.Repeat(" ", width[5]-len(osddevice.Name)+2))
for infonum, key := range infokeys { for infonum, key := range infokeys {
if (infonum % 3) == 2 { if (infonum % 3) == 2 {
buffer.WriteString("\n") buffer.WriteString("\n")
} }
buffer.WriteString( buffer.WriteString(
darkgreen(key) + strings.Repeat(" ", width[infonum % 3]-len(key)+2) + darkgreen(key) + strings.Repeat(" ", width[infonum%3]-len(key)+2) +
yellow(infos[key]) + strings.Repeat(" ", width[3 + infonum % 3]-len(infos[key])+2)) yellow(infos[key]) + strings.Repeat(" ", width[3+infonum%3]-len(infos[key])+2))
} }
buffer.WriteString("\n\n") buffer.WriteString("\n\n")
@ -120,7 +120,7 @@ func bench(cephconn *Cephconnection, osddevice Device, buffs *[][]byte, startbuf
// iops = 1s / latency // iops = 1s / latency
iops := 1000000 / latencytotal iops := 1000000 / latencytotal
// avg speed = iops * block size / 1 MB // avg speed = iops * block size / 1 MB
avgspeed := (1000000 / float64(latencytotal) * float64(params.blocksize) / 1024 / 1024) avgspeed := 1000000 / float64(latencytotal) * float64(params.blocksize) / 1024 / 1024
avgline := fmt.Sprintf("Avg iops: %-5v Avg speed: %.3f MB/s\n\n", iops, avgspeed) avgline := fmt.Sprintf("Avg iops: %-5v Avg speed: %.3f MB/s\n\n", iops, avgspeed)
switch { switch {
case iops < 80: case iops < 80:
@ -232,7 +232,7 @@ func main() {
} }
if params.parallel == true { if params.parallel == true { //todo make flag prepare, check objects
go func() { go func() {
wg.Wait() wg.Wait()
close(results) close(results)

View File

@ -70,7 +70,7 @@ func Route() Params {
log.Println("Can't convert defined block size. 4K block size will be used") log.Println("Can't convert defined block size. 4K block size will be used")
params.objectsize = 4194304 params.objectsize = 4194304
} }
if params.objectsize/params.blocksize < 2 { if params.objectsize/params.blocksize < 2 { //todo not fatal error. warning about offsets
log.Fatalf("Current block size: %v\nCurrent object size: %v\nObject size must be at least 2 times bigger than block size", params.blocksize, params.objectsize) log.Fatalf("Current block size: %v\nCurrent object size: %v\nObject size must be at least 2 times bigger than block size", params.blocksize, params.objectsize)
} }
return params return params

View File

@ -117,6 +117,7 @@ func GetOsdForLocations(params Params, osdcrushdump OsdCrushDump, osddump OsdDum
osddevices := []Device{} osddevices := []Device{}
bucketitems := GetCrushHostBuckets(osdcrushdump.Buckets, rootid) bucketitems := GetCrushHostBuckets(osdcrushdump.Buckets, rootid)
//todo check osd up and in
if params.define != "" { if params.define != "" {
if strings.HasPrefix(params.define, "osd.") { if strings.HasPrefix(params.define, "osd.") {
for _, hostbucket := range bucketitems { for _, hostbucket := range bucketitems {

View File

@ -386,3 +386,5 @@ type OsdMap struct {
Up []int64 `json:"up"` Up []int64 `json:"up"`
UpPrimary int64 `json:"up_primary"` UpPrimary int64 `json:"up_primary"`
} }
//todo check types (int64 -> uint64)