2012-05-10 96 views
0

我在Ubuntu 12.04上使用ext4。我寫了一個python程序,它的體積小(大部分是512字節),讀寫有點隨機的訪問模式。我發現隨着文件變得越來越大。需要越來越多的時間來完成相同數量的I/O。這種關係是線性的。換句話說,我得到O(n )其中n是I/O的累積數量。當文件變大時,小尺寸文件的讀取/寫入速度會變慢嗎?

我不知道是否有一個內在原因,爲什麼隨着文件大小的增加,小I/O速度會變慢。

還有一個觀察:當我安裝了一個ramdisk,並對我的文件I/O執行了ramdisk時,我並沒有注意到這種性能下降。

+0

fyi,O(2n)= O(n) – aioobe

+0

我的意思是n平方。 - 不知道如何在這裏做上標。 – dividebyzero

+0

然後我不明白這個關係是如何線性的。 – aioobe

回答

0

取決於你是如何做IO的,這可能是你試圖在保存之前調用太多內存。

+0

我正在創建小的512字節塊,並立即將它們寫入文件。 – dividebyzero

0

當您從1024個字節的大文件中讀取512個字節時,整個文件在緩存中。隨着文件大小的增加,文件的較小部分在緩存中,並且越來越頻繁地從磁盤讀取數據。即隨着文件的增長,你會得到更多的緩存未命中。也許這就是你正在經歷的。

+0

我認爲這可能是由於尋求。因爲我在做隨機文件訪問。搜索花費的時間隨文件大小而增加。是的,系統無法將所有內容都保存在文件緩存中。 – dividebyzero

+0

@dividebyzero尋求與HDD不太相關。嘗試在SDD驅動器上進行相同的測試以確保。 –

相關問題