新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何讓linux服務(wù)器磁盤io性能翻倍

如何讓linux服務(wù)器磁盤io性能翻倍

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

假設(shè)一個(gè)網(wǎng)頁(yè)上有10張圖片,這10張圖片雖然存在10個(gè)文件中,但其實(shí)是幾乎同時(shí)被用戶訪問(wèn)的。

如果能讓這10張圖片存儲(chǔ)在連續(xù)的磁盤空間中,就能把io性能提升10倍(一次尋道就可以讀10個(gè)文件了)

傳統(tǒng)的做法是通過(guò)拼接圖片來(lái)將這10張圖片合并到一張大圖中,再由前端將大圖切成10張小圖。

有了e4defrag后,可以將需連續(xù)訪問(wèn)的文件放在同一個(gè)文件夾下,再定期使用e4defrag進(jìn)行磁盤整理。

實(shí)現(xiàn)自己的文件系統(tǒng)

我們?cè)?jīng)寫過(guò)一款專用文件系統(tǒng),針對(duì)代理,將磁盤io性能提升到3-5倍。

在大部分上,不需要支持“修改文件”這個(gè)功能。一旦文件創(chuàng)建好,就不能再做修改操作,只支持讀取和刪除。在這個(gè)前提下,我們可以消滅所有文件碎片,把磁盤io效率提升到理論極限。

在我們中,每個(gè)文件的緩沖區(qū)最大值設(shè)定為16MB

小于16MB的文件,在服務(wù)器準(zhǔn)備好整個(gè)文件內(nèi)容后,再創(chuàng)建文件。創(chuàng)建文件時(shí)服務(wù)器給出文件大小,文件系統(tǒng)保證為文件分配連續(xù)的空間。

讀寫文件時(shí),服務(wù)器一次性讀寫整個(gè)文件。

大于16MB的文件,服務(wù)器創(chuàng)建文件時(shí)告訴文件系統(tǒng)分配16MB磁盤空間。后續(xù)每次擴(kuò)大文件大小時(shí),要么是16MB,要么就是文件終結(jié)。不允許在文件未終結(jié)的情況下分配非16MB的空間。

讀寫文件時(shí),每次讀寫16MB或者直到文件末尾。

在我們的文件系統(tǒng)中,小文件完全無(wú)碎片,一次尋道就能搞定一個(gè)文件,達(dá)到了理論上最佳的性能。

大文件每次磁頭定位讀寫16MB,性能沒(méi)有達(dá)到100%,但已經(jīng)相當(dāng)好了。

有一個(gè)公式可以衡量磁盤io的效率:

磁盤利用率 = 傳輸時(shí)間/(平均尋道時(shí)間+傳輸時(shí)間)

對(duì)我們當(dāng)時(shí)采用的磁盤來(lái)說(shuō)(1T 7200轉(zhuǎn)sata),16MB連續(xù)讀寫已經(jīng)可以達(dá)到98%以上的磁盤利用率。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: linux 服務(wù)器

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉