[英]How to increase my program disk Read speed on Ubuntu?
我有一個C ++程序read_bin
可以讀取磁盤上數百個200MB的二進制文件。 該程序使用ifstream
讀取文件:
std::ifstream is(filename, std::ios::in | std::ios::binary);
is.seekg(startPos, std::ios::beg);
int8_t* buffer = new int8_t [bytesToRead];
is.read(reinterpret_cast<char*>(buffer), bytesToRead);
我在終端中啟動了數百個read_bin
進程,以同時讀取單個二進制文件。
例如
read_bin 001.bin
read_bin 002.bin
read_bin 003.bin
read_bin 004.bin
read_bin 005.bin
...
read_bin 101.bin
它是一個SSD磁盤,但是我使用iotop
監視讀取速度通常為25MB/s
,這非常慢。
Total DISK READ : 25.35 M/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 25.35 M/s | Actual DISK WRITE: 7.84 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2636 be/4 ubuntu 501.71 K/s 0.00 B/s 0.00 % 99.99 % read_bin 001.bin
2631 be/4 ubuntu 501.71 K/s 0.00 B/s 0.00 % 99.99 % read_bin 002.bin
2660 be/4 ubuntu 501.71 K/s 0.00 B/s 0.00 % 99.99 % read_bin 003.bin
2662 be/4 ubuntu 501.71 K/s 0.00 B/s 0.00 % 99.99 % read_bin 004.bin
2665 be/4 ubuntu 501.71 K/s 0.00 B/s 0.00 % 99.99 % read_bin 005.bin
2668 be/4 ubuntu 501.71 K/s 0.00 B/s 0.00 % 99.99 % read_bin 006.bin
我可以看到IO已達到99%。
並運行top
:
top - 21:36:58 up 10 min, 3 users, load average: 95.28, 74.89, 37.27
Tasks: 250 total, 1 running, 188 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.2 us, 0.9 sy, 0.0 ni, 74.9 id, 23.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 30875564 total, 5388416 free, 12671052 used, 12816096 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 17743200 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2633 ubuntu 20 0 147928 133532 3080 D 0.7 0.4 0:00.73 read_bin
2652 ubuntu 20 0 147928 133368 2916 D 0.7 0.4 0:00.72 read_bin
2697 ubuntu 20 0 145604 131764 2884 D 0.7 0.4 0:00.69 read_bin
2701 ubuntu 20 0 145604 131000 2928 D 0.7 0.4 0:00.70 read_bin
2630 ubuntu 20 0 147928 134680 2908 D 0.3 0.4 0:00.72 read_bin
2632 ubuntu 20 0 147928 134292 2772 D 0.3 0.4 0:00.72 read_bin
2634 ubuntu 20 0 147928 134120 2868 D 0.3 0.4 0:00.70 read_bin
我試圖增加buffer bytesToRead
,但是讀取速度仍然非常慢,為25MB/s
。 通常,SSD速度可以達到500MB/s
。
如何修復程序以最大化磁盤讀取速度?
我在Google Cloud上進行了測試。 實際上,他們的磁盤性能限制為25MB / s。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.