MCPcopy Create free account
hub / github.com/GoEdgeLab/EdgeNode / CheckDiskWritingSpeed

Function CheckDiskWritingSpeed

internal/utils/fs/disk.go:22–70  ·  view source on GitHub ↗

CheckDiskWritingSpeed test disk writing speed

()

Source from the content-addressed store, hash-verified

20
21// CheckDiskWritingSpeed test disk writing speed
22func CheckDiskWritingSpeed() (speedMB float64, err error) {
23 var tempDir = os.TempDir()
24 if len(tempDir) == 0 {
25 tempDir = "/tmp"
26 }
27
28 const filename = "edge-disk-writing-test.data"
29 var path = tempDir + "/" + filename
30 _ = os.Remove(path) // always try to delete the file
31
32 fp, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, 0666)
33 if err != nil {
34 return 0, err
35 }
36
37 var isClosed bool
38 defer func() {
39 if !isClosed {
40 _ = fp.Close()
41 }
42
43 _ = os.Remove(path)
44 }()
45
46 var data = bytes.Repeat([]byte{'A'}, 16<<20)
47 var before = time.Now()
48 _, err = fp.Write(data)
49 if err != nil {
50 return 0, err
51 }
52
53 err = fp.Sync()
54 if err != nil {
55 return 0, err
56 }
57
58 err = fp.Close()
59 if err != nil {
60 return 0, err
61 }
62
63 var costSeconds = time.Since(before).Seconds()
64 speedMB = float64(len(data)) / (1 << 20) / costSeconds
65 speedMB = math.Ceil(speedMB/10) * 10
66
67 isClosed = true
68
69 return
70}
71
72// CheckDiskIsFast check disk is 'fast' disk to write
73func CheckDiskIsFast() (speedMB float64, isFast bool, err error) {

Callers 1

CheckDiskIsFastFunction · 0.85

Calls 4

RemoveMethod · 0.65
CloseMethod · 0.65
WriteMethod · 0.65
SyncMethod · 0.45

Tested by

no test coverage detected