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()
darkred := color.New(color.FgRed).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))
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,
"cpu": osddevice.Info.CPU,
"hostname": osddevice.Info.Hostname,
"cpu": osddevice.Info.CPU,
"hostname": osddevice.Info.Hostname,
"default_device_class": osddevice.Info.DefaultDeviceClass,
"devices": osddevice.Info.Devices,
"distro_description": osddevice.Info.DistroDescription,
"journal_rotational": osddevice.Info.JournalRotational,
"rotational": osddevice.Info.Rotational,
"kernel_version": osddevice.Info.KernelVersion,
"mem_swap_kb": osddevice.Info.MemSwapKb,
"mem_total_kb": osddevice.Info.MemTotalKb,
"osd_data": osddevice.Info.OsdData,
"osd_objectstore": osddevice.Info.OsdObjectstore,
"devices": osddevice.Info.Devices,
"distro_description": osddevice.Info.DistroDescription,
"journal_rotational": osddevice.Info.JournalRotational,
"rotational": osddevice.Info.Rotational,
"kernel_version": osddevice.Info.KernelVersion,
"mem_swap_kb": osddevice.Info.MemSwapKb,
"mem_total_kb": osddevice.Info.MemTotalKb,
"osd_data": osddevice.Info.OsdData,
"osd_objectstore": osddevice.Info.OsdObjectstore,
}
var infokeys []string
width := []int{0, 0, 0, 0, 0, 0}
@ -96,23 +96,23 @@ func bench(cephconn *Cephconnection, osddevice Device, buffs *[][]byte, startbuf
}
sort.Strings(infokeys)
for n, key := range infokeys {
if width[n % 3] < len(key) {
width[n % 3] = len(key)
if width[n%3] < len(key) {
width[n%3] = len(key)
}
if width[3 + n % 3] < len(infos[key]) {
width[3 + n % 3] = len(infos[key])
if width[3+n%3] < len(infos[key]) {
width[3+n%3] = len(infos[key])
}
}
buffer.WriteString(
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 {
if (infonum % 3) == 2 {
buffer.WriteString("\n")
}
buffer.WriteString(
darkgreen(key) + strings.Repeat(" ", width[infonum % 3]-len(key)+2) +
yellow(infos[key]) + strings.Repeat(" ", width[3 + infonum % 3]-len(infos[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))
}
buffer.WriteString("\n\n")
@ -120,7 +120,7 @@ func bench(cephconn *Cephconnection, osddevice Device, buffs *[][]byte, startbuf
// iops = 1s / latency
iops := 1000000 / latencytotal
// 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)
switch {
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() {
wg.Wait()
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")
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)
}
return params

View File

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

View File

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