我的開發機器上有大量的RAM。我可以用這種方式使用tmpfs嗎?
爲了獲得性能提升,我可以將Rails的應用程序源移動到tmpfs
分區,因爲內存中的存儲比HDD快幾個數量級?
我知道tmpfs是其本質的臨時存儲器,但是如果我要寫一些腳本來將源硬盤分區移動到tmpfs並在重新啓動之前將其備份回硬盤,我可以使用它來執行此任務嗎?
理智嗎?
我的開發機器上有大量的RAM。我可以用這種方式使用tmpfs嗎?
爲了獲得性能提升,我可以將Rails的應用程序源移動到tmpfs
分區,因爲內存中的存儲比HDD快幾個數量級?
我知道tmpfs是其本質的臨時存儲器,但是如果我要寫一些腳本來將源硬盤分區移動到tmpfs並在重新啓動之前將其備份回硬盤,我可以使用它來執行此任務嗎?
理智嗎?
使用RAMdisk加速訪問只讀資源是理智的。
對於易碎的資源使用此方法是相當危險的,因爲如果在操作期間失去電源,您將保證丟失數據。如果你不介意丟失數據,或者你實現了某種形式的緩存機制,這樣RAMdisk中的數據在寫入後很快就被複制回硬盤,那麼這種方式對於讀/寫數據來說就沒有問題。
但是,請檢查您正在運行的硬件和操作系統。如果您的SSD磁盤或磁盤以及具有大型緩存的I/O子系統,您可能會發現性能並不差。在操作系統方面,(例如)Windows Vista會使用任何備用RAM來進行磁盤緩存,而且這種方式非常有效,這意味着使用RAMdisk很少或根本沒有性能增益。
RAM磁盤或緩存也只適用於你有足夠的RAM。如果您的PC中沒有足夠的內存,您最終會使用虛擬機,性能會變差,而不是更好。
您可以快速嘗試手動執行此操作,以查看您實現的性能改變類型,然後決定增益是否值得(從HDD複製數據以及涉及額外風險)獲得的痛苦。
是的,只要您不介意丟失數據,如果您的計算機意外重新啓動(例如斷電)。我不知道你的用例是什麼,但是有些情況下性能需求超過了永久安全地保存每個數據的需要,例如,如果你不介意數小時的數據丟失)。如果你的用例屬於這個類別,那麼tmpfs是一個完美的解決方案。
您可以使用這種方式,但它並沒有多大意義:
如果你有足夠的內存,然後將這些文件將在文件系統緩存(即RAM)反正。所以,使用tmpfs你不會贏得任何東西,但是你也不會失去任何東西。
如果你不要有足夠的RAM,tmpfs會被刷新掉。現在,儘管事實上已將拷貝到文件系統的磁盤上,但您的Rails資源仍會佔用寶貴的交換空間。所以,你失去了交換空間,並且你在性能上沒有獲得任何東西(無論是從交換中讀迴文件還是文件系統同樣昂貴)。
如果你不想採取第一次打,直到所有的文件都在緩存中,你可以把這樣的事情在你的開發環境的啓動腳本:
find /usr/lib/ruby/gems/1.9.1/{rails,action,active}* -exec cat '{}' + > /dev/null
這將讀取所有的Rails文件並將它們回顯到/dev/null
,並作爲副作用將它們拖入緩存中。 (做這個,同時讓你的編碼咖啡。)
謝謝!那我試試吧 – user80805 2010-06-20 15:49:30