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。
是不是有什麼其他的操作阻塞讀取操作了? 一般對於普通的機械式硬碟,讀取的速度一定是要快些的。
建議檢查下在讀完資料之後,是否立即處理了,還是有後續的操作可能阻塞了讀取操作
讀寫的原理作用我就不說了,建議一下,如果是阿里雲的,可以弄一個阿里雲的固態硬碟當網站系統,讀寫那速度比機械硬碟是不能相比的