linux - 两个c程序同时操作硬盘,一个读,一个写,结果发现读比写要慢的多。这种情况(磁盘接近满负荷写)下如何提高读的速度。
天蓬老师
天蓬老师 2017-04-17 15:04:06
0
3
504

有两个程序要操作硬盘,一个读,一个写。
两个程序不同时运行时,都能达到硬盘的性能上限。180M/s。
但当两个程序同时跑起来时,读取速度却大幅下降速度大概只有60M左右。写的速度受影响要小很多平均能到120-160M/s吧。在两个同时抢占硬盘时,有哪些方法去做平衡读写速度的差异?提高读取的速度。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(3)
黄舟

從硬碟的角度來說,讀寫存取應該是互斥的,所以是單一進程/執行緒的。

CPU內部有task scheduler調度讀寫程序,微觀上如果兩者的優先權相同,且發生頻率相同,有可能是寫的速度是讀的一半左右,所以按照寫-讀-寫-讀round -robin的時間輪轉演算法來安排讀寫程式在CPU中的執行順序的話,最後寫能佔有2/3的CPU/硬碟時間,所以頻寬降為2/3左右。

試試看讀寫程式進行 IPC 進程間通信,透過同步互斥的方式協調兩者的執行?

具體還是要看應用場景,讀寫的資料有沒有相關性,發生的頻率和profile。

迷茫

是不是有什麼其他的操作阻塞讀取操作了? 一般對於普通的機械式硬碟,讀取的速度一定是要快些的。
建議檢查下在讀完資料之後,是否立即處理了,還是有後續的操作可能阻塞了讀取操作

洪涛

讀寫的原理作用我就不說了,建議一下,如果是阿里雲的,可以弄一個阿里雲的固態硬碟當網站系統,讀寫那速度比機械硬碟是不能相比的

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!