-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_speed.py
More file actions
56 lines (44 loc) · 1.82 KB
/
test_speed.py
File metadata and controls
56 lines (44 loc) · 1.82 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
import os
import time
def test_disk_speed(file_path, file_size, block_size, wait_time):
write_speeds = []
read_speeds = []
for i in range(10):
print(f"Running test {i+1} ...")
# Test write speed
start_time = time.time()
with open(file_path, 'wb') as f:
for _ in range(file_size // block_size):
f.write(os.urandom(block_size))
f.flush()
os.fsync(f.fileno())
write_time = time.time() - start_time
# Calculate write speed
write_speed = file_size / write_time / (1024 * 1024) # MB/s
write_speeds.append(write_speed)
print(f"Write speed: {write_speed:.2f} MB/s")
# Wait for 1 second to make sure everything is written
time.sleep(wait_time)
# Test read speed
start_time = time.time()
with open(file_path, 'rb') as f:
while f.read(block_size):
pass
read_time = time.time() - start_time
# Calculate read speed
read_speed = file_size / read_time / (1024 * 1024) # MB/s
read_speeds.append(read_speed)
print(f"Read speed: {read_speed:.2f} MB/s")
# Remove the test file
os.remove(file_path)
average_write_speed = sum(write_speeds) / len(write_speeds)
average_read_speed = sum(read_speeds) / len(read_speeds)
print(f"Average write speed: {average_write_speed:.2f} MB/s")
print(f"Average read speed: {average_read_speed:.2f} MB/s")
if __name__ == "__main__":
file_path = "/mnt/storage/TemScripting/test_file" # Adjust the path as needed
# file_path = "/mnt/pool1/home/falcon4/share/TemScripting/test_file"
file_size = 256 * 1024 * 1024 # 128MB
block_size = 256 * 1024 # 256 KB
wait_time = 5 # 1 second
test_disk_speed(file_path, file_size, block_size, wait_time)