Linux

提高明文文件讀取的性能

  • October 17, 2014

在我們的生物資訊學應用程序中,我們有大文件(最大 900MB,通常為 100MB)。這些文件包含基因組的明文表示,本質上是一個包含一系列字元的單行文件。

數據按位置引用,例如第 7 號染色體從位置 1 開始,到位置 158937463 結束。我們通常提取大約 400 個字元的一小部分,例如:從位置 4,120,000 到 4,120,400。

為此,我們有一個用 Ruby 編寫的實用程序:https ://github.com/sfcarroll/bio-fasta-read ,它通過從頭開始讀取文件來工作。

我們多次進行這些讀取,它們正在減慢我們的應用程序。我想知道哪些選項可用於記憶體?源數據永遠不會改變,但范圍會經常改變。我們在具有 128GB RAM 的機器上執行 Ubuntu Server 14 x64。

是否有一些作業系統級別的方法可以提高性能?也許將整個文件載入到記憶體中或以某種方式記憶體請求?

編輯

如果有一些選項(例如以某種方式為文件記憶體分配更多記憶體)會有所幫助,我應該添加,指針將不勝感激。如果需要以特定方式進行調整,我們可以考慮為這些文件讀取使用專用伺服器。

編輯 2 我們正在執行 Xeon E5-1650 Hexa-Core CPU 和雙 SSD(可能會被襲擊),以及 128GB RAM。

linux核心自動進行記憶體管理。載入到 RAM 中的所有內容都會保留在那裡,直到另一個程序需要 RAM 並且不再可用。所以在 linux 核心中 RAM 應該總是滿的。您的系統有 128GB 的​​ RAM,對於 100-1000MB 的文件來說綽綽有餘。

將一個大文件載入到 RAMcat中:

cat huge_file > /dev/null 2>&1

所有輸出都發送到/dev/null,但為此它必須通過系統 RAM。在執行此操作時,您可以觀察如何Cached增加/proc/meminfo

結束時cat,執行 Ruby 應用程序。Ruby 應用程序現在讀取大文件的記憶體版本。

引用自:https://unix.stackexchange.com/questions/162722