mirror of
				https://github.com/minio/minio.git
				synced 2025-11-04 02:01:05 +01:00 
			
		
		
		
	Publish storage functions latency to help compare the performance 
of different disks in a single deployment.
e.g.:
```
minio_node_disk_latency_us{api="storage.WalkDir",disk="/tmp/xl/1",server="localhost:9001"} 226
minio_node_disk_latency_us{api="storage.WalkDir",disk="/tmp/xl/2",server="localhost:9002"} 1180
minio_node_disk_latency_us{api="storage.WalkDir",disk="/tmp/xl/3",server="localhost:9003"} 1183
minio_node_disk_latency_us{api="storage.WalkDir",disk="/tmp/xl/4",server="localhost:9004"} 1625
```
		
	
			
		
			
				
	
	
		
			350 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			350 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package cmd
 | 
						|
 | 
						|
// Code generated by github.com/tinylib/msgp DO NOT EDIT.
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/tinylib/msgp/msgp"
 | 
						|
)
 | 
						|
 | 
						|
func TestMarshalUnmarshalAccElem(t *testing.T) {
 | 
						|
	v := AccElem{}
 | 
						|
	bts, err := v.MarshalMsg(nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	left, err := v.UnmarshalMsg(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
 | 
						|
	}
 | 
						|
 | 
						|
	left, err = msgp.Skip(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkMarshalMsgAccElem(b *testing.B) {
 | 
						|
	v := AccElem{}
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.MarshalMsg(nil)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkAppendMsgAccElem(b *testing.B) {
 | 
						|
	v := AccElem{}
 | 
						|
	bts := make([]byte, 0, v.Msgsize())
 | 
						|
	bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkUnmarshalAccElem(b *testing.B) {
 | 
						|
	v := AccElem{}
 | 
						|
	bts, _ := v.MarshalMsg(nil)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		_, err := v.UnmarshalMsg(bts)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestEncodeDecodeAccElem(t *testing.T) {
 | 
						|
	v := AccElem{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
 | 
						|
	m := v.Msgsize()
 | 
						|
	if buf.Len() > m {
 | 
						|
		t.Log("WARNING: TestEncodeDecodeAccElem Msgsize() is inaccurate")
 | 
						|
	}
 | 
						|
 | 
						|
	vn := AccElem{}
 | 
						|
	err := msgp.Decode(&buf, &vn)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	buf.Reset()
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	err = msgp.NewReader(&buf).Skip()
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkEncodeAccElem(b *testing.B) {
 | 
						|
	v := AccElem{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	en := msgp.NewWriter(msgp.Nowhere)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.EncodeMsg(en)
 | 
						|
	}
 | 
						|
	en.Flush()
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkDecodeAccElem(b *testing.B) {
 | 
						|
	v := AccElem{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	rd := msgp.NewEndlessReader(buf.Bytes(), b)
 | 
						|
	dc := msgp.NewReader(rd)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		err := v.DecodeMsg(dc)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestMarshalUnmarshalLastMinuteLatencies(t *testing.T) {
 | 
						|
	v := LastMinuteLatencies{}
 | 
						|
	bts, err := v.MarshalMsg(nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	left, err := v.UnmarshalMsg(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
 | 
						|
	}
 | 
						|
 | 
						|
	left, err = msgp.Skip(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkMarshalMsgLastMinuteLatencies(b *testing.B) {
 | 
						|
	v := LastMinuteLatencies{}
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.MarshalMsg(nil)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkAppendMsgLastMinuteLatencies(b *testing.B) {
 | 
						|
	v := LastMinuteLatencies{}
 | 
						|
	bts := make([]byte, 0, v.Msgsize())
 | 
						|
	bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkUnmarshalLastMinuteLatencies(b *testing.B) {
 | 
						|
	v := LastMinuteLatencies{}
 | 
						|
	bts, _ := v.MarshalMsg(nil)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		_, err := v.UnmarshalMsg(bts)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestEncodeDecodeLastMinuteLatencies(t *testing.T) {
 | 
						|
	v := LastMinuteLatencies{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
 | 
						|
	m := v.Msgsize()
 | 
						|
	if buf.Len() > m {
 | 
						|
		t.Log("WARNING: TestEncodeDecodeLastMinuteLatencies Msgsize() is inaccurate")
 | 
						|
	}
 | 
						|
 | 
						|
	vn := LastMinuteLatencies{}
 | 
						|
	err := msgp.Decode(&buf, &vn)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	buf.Reset()
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	err = msgp.NewReader(&buf).Skip()
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkEncodeLastMinuteLatencies(b *testing.B) {
 | 
						|
	v := LastMinuteLatencies{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	en := msgp.NewWriter(msgp.Nowhere)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.EncodeMsg(en)
 | 
						|
	}
 | 
						|
	en.Flush()
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkDecodeLastMinuteLatencies(b *testing.B) {
 | 
						|
	v := LastMinuteLatencies{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	rd := msgp.NewEndlessReader(buf.Bytes(), b)
 | 
						|
	dc := msgp.NewReader(rd)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		err := v.DecodeMsg(dc)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestMarshalUnmarshallastMinuteLatency(t *testing.T) {
 | 
						|
	v := lastMinuteLatency{}
 | 
						|
	bts, err := v.MarshalMsg(nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	left, err := v.UnmarshalMsg(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after UnmarshalMsg(): %q", len(left), left)
 | 
						|
	}
 | 
						|
 | 
						|
	left, err = msgp.Skip(bts)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if len(left) > 0 {
 | 
						|
		t.Errorf("%d bytes left over after Skip(): %q", len(left), left)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkMarshalMsglastMinuteLatency(b *testing.B) {
 | 
						|
	v := lastMinuteLatency{}
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.MarshalMsg(nil)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkAppendMsglastMinuteLatency(b *testing.B) {
 | 
						|
	v := lastMinuteLatency{}
 | 
						|
	bts := make([]byte, 0, v.Msgsize())
 | 
						|
	bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		bts, _ = v.MarshalMsg(bts[0:0])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkUnmarshallastMinuteLatency(b *testing.B) {
 | 
						|
	v := lastMinuteLatency{}
 | 
						|
	bts, _ := v.MarshalMsg(nil)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.SetBytes(int64(len(bts)))
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		_, err := v.UnmarshalMsg(bts)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestEncodeDecodelastMinuteLatency(t *testing.T) {
 | 
						|
	v := lastMinuteLatency{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
 | 
						|
	m := v.Msgsize()
 | 
						|
	if buf.Len() > m {
 | 
						|
		t.Log("WARNING: TestEncodeDecodelastMinuteLatency Msgsize() is inaccurate")
 | 
						|
	}
 | 
						|
 | 
						|
	vn := lastMinuteLatency{}
 | 
						|
	err := msgp.Decode(&buf, &vn)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	buf.Reset()
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	err = msgp.NewReader(&buf).Skip()
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkEncodelastMinuteLatency(b *testing.B) {
 | 
						|
	v := lastMinuteLatency{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	en := msgp.NewWriter(msgp.Nowhere)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		v.EncodeMsg(en)
 | 
						|
	}
 | 
						|
	en.Flush()
 | 
						|
}
 | 
						|
 | 
						|
func BenchmarkDecodelastMinuteLatency(b *testing.B) {
 | 
						|
	v := lastMinuteLatency{}
 | 
						|
	var buf bytes.Buffer
 | 
						|
	msgp.Encode(&buf, &v)
 | 
						|
	b.SetBytes(int64(buf.Len()))
 | 
						|
	rd := msgp.NewEndlessReader(buf.Bytes(), b)
 | 
						|
	dc := msgp.NewReader(rd)
 | 
						|
	b.ReportAllocs()
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		err := v.DecodeMsg(dc)
 | 
						|
		if err != nil {
 | 
						|
			b.Fatal(err)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |