Spice 架構簡單梳理

2021-10-01 21:01:43 字數 1254 閱讀 5513

簡介

spice是乙個開放遠端計算方案,提供客戶端遠端訪問顯示和裝置(例如:鍵盤、滑鼠、聲音)。其主要應用場景是遠端訪問虛擬機器,儘管其他用途也是支援的而且已經有許多發展階段。

當使用者嘗試去分流一些對於cpu和gpu不敏感的任務的時候,spice提供乙個類桌面的使用者體驗。

spice基本模組:

spice server是以libspice的方式呈現給qemu,通過spice protocol,spice server與qemu互動,同時與遠端的spice client通訊。server通過channel與client通訊,每個channel是乙個單獨的執行緒,負責乙個特定的功能。qxl裝置作為乙個pci裝置為qemu所使用,以提高guest圖形效能。

spice client作為遠端訪問的客戶端程式,主要用來連線、控制、通訊和顯示。一般來說,通過解析命令列引數、執行主訊息迴圈、處理事件等來實現。

spice agent是乙個可選元件,主要用來提公升使用者體驗和管理guest端的事務。qemu通過vdi port device的輸入輸出環與guest通訊,server從vdi port輸入環讀取訊息到讀緩衝區,由message port決定是由server處理還是**給client。server和client產生的訊息則放入寫入佇列,寫入到vdi port device的輸出環。

上圖顯示的是使用qemu和spice時的圖形命令流。從guest端的gdi或者圖形引擎執行渲染命令開始,圖形引擎將命令傳遞給qxl driver,qxl driver將渲染命令轉換成qxl命令,傳送到qxl device的命令環,libspice則從中讀取命令新增到圖形命令樹中。同時,還維護乙個到client端的命令佇列,用來更新client端的顯示。簡單的理解就是,spice server在host端完成圖形的渲染,然後壓縮傳送給client端,client端再解壓縮顯示更新。提公升了使用者的圖形體驗。

spice協議詳解 三 spice架構和通訊

一.相關概念 channel 通道 client和server通過通道進行互動。每個通道型別專用於一種特殊資料型別傳輸。每個通道用乙個專用的tcp套接字,可能是安全的 用ssl加密 或不安全的。在客戶端每個通道有乙個專用的執行緒。因此通過不同的執行緒優先順序,每個通道被安排不同的傳輸功能,通道包括 ...

CPU架構名稱梳理

今天要出個mono測試包,發現在64位機型上無法執行。mono版本不能匯出64位的版本,匯出的工程中,只留下了armeabi v7a的庫檔案。按理說,這樣應該沒問題,因為64位的架構是向下相容的。後來發現,apk解壓出來,居然自動加入了幾個arm64 v8a的庫檔案。這就導致系統認為可以直接使用ar...

crontab 簡單梳理

基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 延遲一秒,需要用到 sleep 1 這個引數,注意是分號 比...