如何將 RAID 0 陣列當作內存使用?
raid0組2T的ssd,每個500g,用硬碟充當內存,速度已經2G/s(ddr3速度最低2G/s)。求怎麼將raid0製作成內存?
若問為何要這樣做,皆因數據模型太大,16g完全不夠用……
我修改了題主的問題,理了一下邏輯。
1、我很懷疑這樣跑出錯率太高太高了,要知道伺服器、工作站很大價值就在ECC內存上,Raid0…虛擬內存…聽著就很沒信心,技術上實現用硬碟跑數據,我覺得不是問題。
2、固態的壽命用擦寫次數算,而這種用法的擦寫次數肯定很恐怖,那麼即便臨時能頂上用,報銷的SSD成本都能把你哭死。
3、內存的速度不是2GB/s,是20GB/s(普通DDR3 1600為例),即便是Raid0的SSD,這個速度比起真正的內存,也差了一個數量級。
總結:老老實實加內存吧,先加到頂再想別的。
謝邀
首先常規的解決方案是上伺服器平台,加內存。成品伺服器中例如Dell T630/R640支持雙路CPU,24個內存插槽,最大1.5T內存。當然要求是單條32GB RDIMM,單根售價官網8900,淘寶有賣2200不到的。單路CPU的話容量減半。
如果這個價格無法承受,Intel新推的傲騰,好像有主板廠商做成內存的的(具體忘了是哪家),但應該是實驗性質的產品,並未得到驗證。而且目前零售市場能買到的傲騰最大只有64G,速度也不算太快。
傳統方案,直接把交換文件/交換分區設置在SSD RAID上面就可以。操作系統會自動根據數據的熱度把暫時不需要處理的頁面放到交換文件或者交換分區上的。但因為操作系統的「自動」通常和你處理數據的邏輯不一致,最壞的情況就是操作系統會花費大量的時間進行內存-交換文件的切換。
比較實際的做法是修改數據模型和處理程序,模型要做成可拆分的,處理程序不要一次性載入所有數據,而是應當載入一部分處理一部分,處理完畢結果寫入硬碟再載入下一部分。
玩ML的?做什麼模型需要2T的RAM?
自己研究倒騰的話,買套農企x399或者牙膏x299,16*8=128G RAM應該夠入門學慣用了。
工作需要的話,讓老闆出錢買多路工作站。
Windows和Linux都有把文件映射到內存的功能,你可以試試…但是中間會經過文件系統,系統的緩存管理等等,效率怕是不會高當然最直接的方式就是虛擬內存其實橫豎效率都不會高,因為硬碟無法直接映射到地址空間,必須經過AHCI或者NVME,然後經過硬碟主控才能訪問存儲空間
Linux的話,把這坨硬碟當交換區(swap)掛上就能當內存用了,當你物理內存超了之後,系統會把不是很active的內存頁存到這部分硬碟中。Windows應該配置個虛擬內存也是一樣的。
當然我還是建議你在程序層面顯式的把內存操作轉換成硬碟操作,因為上述方式其實很低效,即便演算法本身不存在什麼隨機讀取,你的硬碟也不可能比內存要快。
最快的硬碟也比不過最慢的內存。加內存吧,這個簡單點。
如果想得到大神的答案,首先你得把標題搞清楚
DDR3-1600的速速應該是12800 MB/s也就是12.8G每秒吧?
RAID0肯定速度不夠啊
帶寬是個問題,
更嚴重的不應該是延遲嗎?
願意花錢的話,可以看看 ScaleMP (In-memory Computing - Big-Data-Analytics)
用到了就卡成狗....何必呢
敝人打算做神經網路高速自動編程系統,定時訪問資料庫查詢最新的命令進行自動編程。
把知識庫放在硬碟的話,每次查詢都需要幾到幾百的ms延遲,所以想將系統在開啟的時候自動載入知識庫,定時同步更新知識庫和接收命令。
現已有30g的知識庫,遲早會到達1t,所以先做好預防。
目前聽了各方大神描述,當前科技暫未達到我的需求水平,所以唯有妥協——採用小框架放置內存,數據依舊保存在資料庫弄個多路伺服器很難么。。ecc條子插滿上百G內存還不夠?
推薦閱讀:
※Diskgenius硬碟檢測結果如何解讀?
※surface Pro 3 作為筆記本,128G硬碟是不是有點小啊?
※你們是怎麼備份硬碟里的數據的呢?
※硬碟數據恢復是什麼原理?