Repository navigation
Expand file tree
/
Copy pathlmbench.js
More file actions
157 lines (148 loc) · 6.25 KB
/
Copy pathlmbench.js
File metadata and controls
157 lines (148 loc) · 6.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
let points = {
// static 结果处理
'Simple syscall': [0, 1],
'Simple read': [0, 1],
'Simple write': [0, 1],
'Simple stat': [0, 1],
'Simple fstat': [0, 1],
'Simple open/close': [0, 1],
'Select on 100 fd\'s': [0, 1],
'Signal handler installation': [0, 1],
'Signal handler overhead': [0, 1],
'Protection fault': [0, 1],
'Pipe latency': [0, 1],
'Process fork+exit': [0, 1],
'Process fork+execve': [0, 1],
'Process fork+/bin/sh -c': [0, 1],
'File /var/tmp/XXX write bandwidth': [0, 1],
'Pagefaults on /var/tmp/XXX': [0, 1],
'lat_mmap -P 1 512k /var/tmp/XXX': [0, 1], // 暂时做位置匹配
'lat_fs 0k': [0, 1],
'lat_fs 1k': [0, 1],
'lat_fs 4k': [0, 1],
'lat_fs 10k': [0, 1],
'Pipe bandwidth': [0, 1],
'bw_file_rd -P 1 512k io_only /var/tmp/XXX': [0, 1],
'bw_file_rd -P 1 512k open2close /var/tmp/XXX': [0, 1],
'bw_mmap_rd -P 1 512k mmap_only /var/tmp/XXX': [0, 1],
'bw_mmap_rd -P 1 512k open2close /var/tmp/XXX': [0, 1],
'lat_ctx 2': [0, 1],
'lat_ctx 4': [0, 1],
'lat_ctx 8': [0, 1],
'lat_ctx 16': [0, 1],
'lat_ctx 32': [0, 1],
'lat_ctx 64': [0, 1],
'lat_ctx 96': [0, 1],
}
function judge(outputFile) {
outputFile = outputFile.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
let outputIndex = outputFile.indexOf('latency measurements');
outputFile.substring(outputIndex);
outputFile.trim().split('\n').forEach((value, index, array) => {
if(value.endsWith('microseconds')) {
let splitIndex = value.indexOf(':');
let name = value.substring(0, splitIndex).trim();
let result = value.substring(splitIndex + 1).replace('microseconds', '').trim();
if(points[name]) {
let timeSpent = parseFloat(result);
if(timeSpent > 0) {
points[name][0] = points[name][1];
}
}
} else if(value.endsWith('/sec')) {
let splitIndex = value.indexOf(':');
let name = value.substring(0, splitIndex).trim();
if(points[name]) {
points[name][0] = points[name][1];
}
} else if(value.startsWith('0k')) {
let values = value.split(/\s+/);
if(values.length != 4) return;
for(let i = 1; i < values.length; i++) {
if(values[i] == 0) return;
}
points['lat_fs 0k'][0] = points['lat_fs 0k'][1];
} else if(value.startsWith('1k')) {
let values = value.split(/\s+/);
if(values.length != 4) return;
for(let i = 1; i < values.length; i++) {
if(values[i] == 0) return;
}
points['lat_fs 1k'][0] = points['lat_fs 1k'][1];
} else if(value.startsWith('4k')) {
let values = value.split(/\s+/);
if(values.length != 4) return;
for(let i = 1; i < values.length; i++) {
if(values[i] == 0) return;
}
points['lat_fs 4k'][0] = points['lat_fs 4k'][1];
} else if(value.startsWith('10k')) {
let values = value.split(/\s+/);
if(values.length != 4) return;
for(let i = 1; i < values.length; i++) {
if(values[i] == 0) return;
}
points['lat_fs 10k'][0] = points['lat_fs 10k'][1];
} else if(value.startsWith('lat_mmap -P 1 512k /var/tmp/XXX')) {
let splitIndex = value.indexOf(':');
let name = value.substring(0, splitIndex).trim();
let result = value.substring(splitIndex + 1)
if(points[name]) {
let timeSpentArray = result.trim().split(/\s+/);
if(timeSpentArray.length == 2) {
points[name][0] = points[name][1];
}
}
} else if(value.startsWith('bw_file_rd -P 1 512k io_only /var/tmp/XXX')) {
let splitIndex = value.indexOf(':');
let name = value.substring(0, splitIndex).trim();
let result = value.substring(splitIndex + 1)
if(points[name]) {
let timeSpentArray = result.trim().split(/\s+/);
if(timeSpentArray.length == 2) {
points[name][0] = points[name][1];
}
}
} else if(value.startsWith('bw_file_rd -P 1 512k open2close /var/tmp/XXX')) {
let splitIndex = value.indexOf(':');
let name = value.substring(0, splitIndex).trim();
let result = value.substring(splitIndex + 1)
if(points[name]) {
let timeSpentArray = result.trim().split(/\s+/);
if(timeSpentArray.length == 2) {
points[name][0] = points[name][1];
}
}
} else if(value.startsWith('bw_mmap_rd -P 1 512k mmap_only /var/tmp/XXX')) {
let splitIndex = value.indexOf(':');
let name = value.substring(0, splitIndex).trim();
let result = value.substring(splitIndex + 1)
if(points[name]) {
let timeSpentArray = result.trim().split(/\s+/);
if(timeSpentArray.length == 2) {
points[name][0] = points[name][1];
}
}
} else if(value.startsWith('bw_mmap_rd -P 1 512k open2close /var/tmp/XXX')) {
let splitIndex = value.indexOf(':');
let name = value.substring(0, splitIndex).trim();
let result = value.substring(splitIndex + 1)
if(points[name]) {
let timeSpentArray = result.trim().split(/\s+/);
if(timeSpentArray.length == 2) {
points[name][0] = points[name][1];
}
}
} else {
if(value.startsWith('2') || value.startsWith('4') || value.startsWith('8') || value.startsWith('16')
|| value.startsWith('24') || value.startsWith('32') || value.startsWith('64') || value.startsWith('96')) {
let values = value.split(/\s+/);
if(values.length == 2 && points[`lat_ctx ${values[0]}`]) {
points[`lat_ctx ${values[0]}`][0] = points[`lat_ctx ${values[0]}`][1];
}
}
}
})
return points;
}
module.exports.judge = judge;