如何把兩台電腦連接在一起,並行執行?

如何能把兩台或多台電腦並聯上(cpu或gpu並行處理),而使用感覺像是一台電腦,既對使用者透明。這應該使用什麼技術,numa和mpp能實現嗎。另外如果不能還有什麼方式和技術可以實現。


利用虛擬化技術就可以,虛擬化可以將一台電腦虛擬成n台電腦,反過來n台電腦也可以虛擬成一台電腦,接觸了Intel的虛擬化,amd也差不多,區別只有虛擬化相關的機器碼不同而已。利用虛擬化可以將兩台機器上的4核CPU虛擬化成一個8核的CPU,利用EPT內存虛擬化將兩台機器的內存整合,硬碟則可以利用IO虛擬化或者過濾驅動就行。以上雖幾句話就概括了實現的方法,但實際上的代碼量、複雜度都非常高,兩台電腦的通信速度是個非常大的瓶頸,並且陷入VMM後的處理流程代碼在電腦的正常處理中是不存在的,哪怕這段代碼經過極度的優化還是對性能有所損耗的,由於國慶放假在家在手機里找幾張圖解釋一下吧

上圖是準備開啟EPT前創建頁表的代碼,說個題外話修改相應頁的讀寫執行許可權再加上指定進程的過濾可以達到無痕hook內存的效果,任何軟體都檢測不出,虛擬相應寄存器和攔截指定cpuid後任何軟體都不會檢測出已經開啟虛擬化,包括操作系統自己。

下圖是這個頁表內地址相應位的意義。如果題主真的想自己實現所問功能下圖這本書能提供你所需要的全部技術實現方法


謝邀。在伺服器方面有一個叫做負載均衡的技術,多個伺服器共同為一個虛擬 IP 來提供服務,而客戶端只要訪問這個虛擬 IP 就可以了,對於客戶端是完全透明的。現在的大型網站都需要用到這種技術。樓主可以去了解一下 LVS。


OpenAcc把,MapReduce其實也算,但是跟你想要的好像不一樣。


我來猜一下……

既然是用戶「毫無察覺」,那麼首先就是只有一套kvm,那麼比較好實現的應該是主從結構。

主從結構的話,就是其中一個作為master連接滑鼠鍵盤顯示器,另一個作為servant,不對slave執行master發來的指令。

那麼master和slave之間如何通信就是個問題。硬體上比較好做的是用網路,不過這樣有一個問題是,如果要求在slave上做渲染然後回傳,那至少得用10GBE了,如果要用千兆乙太網就必須做有損壓縮,但那滿滿的overhead又不忍直視。想想vnc吧。

所以說互聯線得夠快,不過直接用pcie做互聯的話,線可能太長了………總之我們就假設一下雙機之間有這麼個10~100GBps的互聯鏈路算了。

然後是存儲共享的問題。內存我們按照numa來考慮就差不多了,複製內存也不是不可以的,不過硬碟數據的共享,最好的方法是把硬碟單獨拿出來,master和slave連到同一個硬碟陣列上……比如用san么……這樣master給slave發rpc就不需要附帶太多信息。

軟體層面做到能用的程度的話還不是太麻煩的事情,當然rpc協議想要設計得很好也不簡單,還有對於numa的處理,系統設計的時候還是要考慮得細緻一些。

重點就是要搞定硬碟和顯示傳輸的事情了……如果用於互聯的鏈路真的夠快的話那感覺效果可以很好的。

當然如果你不在slave上渲染的話,同時硬碟數據也不是大問題的話,那我覺得一個正常點的分散式操作系統,再加上一些小小的修改,就夠了。


親自參與和監督過某單位的虛擬化採用vmware陣營的。

在吃飯,簡短說一下。

採用三台聯想rd650 存儲和通信是下掛san光纖交換機 再下掛emc的存儲。

所有,rd650底層安裝esxi操作系統,接入同網路之後進esxi系統進行簡單配置

後面需要用筆記本安裝vcenter 然後花了很長時間折騰vcenter的同步,所有的存儲池都是採用emc,不管rd650自身的陣列。(過程太繁瑣,老不成功,索性叫外包人搞的)

用vcenter 最後分配三台cpu內存等資源。(你可以三台伺服器虛擬出9台,或者所有資源堆出一台電腦)

最後用vcenter像用vmware那樣安裝iso鏡像。


如果只是做計算的話,可以看一下 OpenMP (Home)。


mpi


推薦閱讀:

Windows 10 已經推出 1 年多了到底跟 Windows 7 比怎麼樣?
為什麼電腦的風扇背對 CPU 吹,而人是把風扇面對自己吹?

TAG:操作系統 | 硬體 | 計算機系統 | 計算機科學 | 超級計算機 |