84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
有两个程序要操作硬盘,一个读,一个写。两个程序不同时运行时,都能达到硬盘的性能上限。180M/s。但当两个程序同时跑起来时,读取速度却大幅下降速度大概只有60M左右。写的速度受影响要小很多平均能到120-160M/s吧。在两个同时抢占硬盘时,有哪些方法去做平衡读写速度的差异?提高读取的速度。
欢迎选择我的课程,让我们一起见证您的进步~~
从硬盘的角度来说,读写访问应该是互斥的,所以是单进程/线程的。
CPU内部有task scheduler调度读写程序,微观上如果两者的优先级相同,且发生频率相同,有可能是写的速度是读的一半左右,所以按照 写-读-写-读 round-robin的时间轮转算法来安排读写程序在CPU中的执行顺序的话,最后写能占有 2/3的CPU/硬盘时间,所以带宽降为2/3左右。
试试看读写程序进行 IPC 进程间通信,通过同步互斥的方式协调两者的执行?
具体还是要看应用场景,读写的数据有没有相关性,发生的频率和profile。
是不是有什么其他的操作阻塞读操作了? 一般对于普通的机械硬盘,读的速度肯定是要快些的。建议检查下在读完数据之后,是否立即处理了,还是有后续的操作可能阻塞了读操作
读写的原理作用我就不说了,建议一下,如果是阿里云的,可以弄一个阿里云的固态硬盘当网站系统,读写那速度比机械硬盘是不能相比的
从硬盘的角度来说,读写访问应该是互斥的,所以是单进程/线程的。
CPU内部有task scheduler调度读写程序,微观上如果两者的优先级相同,且发生频率相同,有可能是写的速度是读的一半左右,所以按照 写-读-写-读 round-robin的时间轮转算法来安排读写程序在CPU中的执行顺序的话,最后写能占有 2/3的CPU/硬盘时间,所以带宽降为2/3左右。
试试看读写程序进行 IPC 进程间通信,通过同步互斥的方式协调两者的执行?
具体还是要看应用场景,读写的数据有没有相关性,发生的频率和profile。
是不是有什么其他的操作阻塞读操作了? 一般对于普通的机械硬盘,读的速度肯定是要快些的。
建议检查下在读完数据之后,是否立即处理了,还是有后续的操作可能阻塞了读操作
读写的原理作用我就不说了,建议一下,如果是阿里云的,可以弄一个阿里云的固态硬盘当网站系统,读写那速度比机械硬盘是不能相比的