contributed by < mincch
>
引入 CMWQ 減少創建大量執行緒的開銷,提高伺服器的效率。新增 Directory Listing 功能:讓使用者可以直接瀏覽伺服器上的目錄內容。
引入 Content Cache : 減少重複讀取相同目錄的開銷,提高效能。
RCU : 優化 Directory Cache,因為讀取多、寫入少,所以使用 RCU 來加速讀取。
引入 Timer 機制釋放閒置的快取內容,防止記憶體佔用過大。
使用 Priority Queue 管理 Timer 主動刪除超時的連線,確保伺服器的穩定性。
如果有大量連線需求,會導致需要花費大量時間來創建執行緒,所以引入CMWQ
CMWQ是什麼? 他會先建立 thread,然後根據 CPU 負載來分配工作。Server 將請求分配給 CMWQ,而不是直接分配給某個 thread。這樣可以減少 thread 的創建與刪除成本,提高效能。
增加directory listing,允許用戶透過瀏覽器直接查看目錄內容
而在檔案的讀取佔據了很大的成本,所以使用cache暫存目錄的內容,下次如果有用戶請求一樣的目錄就不用再一個個回傳,直接用cache就好
RCU 用於 directory cache ,讀多寫少,且不介意讀到舊資料
引入Timer: 釋放閒置的目錄或是快取
使用priority queue 實做 timer 管理主動刪除超時的連線
問題:測試情境過於理想,都只重複存取同一網站,只有第一個存取需要花最多時間,接下來的存取都是用cache,但是現實中這種情況基本上不會發生,應測試多個發送對多個url
在KVM基礎上建構精簡可以運作linux核心的虛擬機器,藉由VirtIO具備電腦網路連線的能力
KVM是什麼?
VirtIO是什麼?
虛擬機器可以分為
System VM:提供完整的作業系統(OS)虛擬化,能夠執行完整的 OS(例如 VirtualBox、VMware),提供硬體虛擬化技術。
Process VM:只提供一個獨立的process執行環境,例如 JVM(Java Virtual Machine)。
KVM kernel based Virtual mackine 是linux核心中的虛擬化模組
提供API讓user space呼叫 : CPU虛擬化,記憶體虛擬化…
搭配emulator對周邊裝置的虛擬化及提供使用者介面
KVM-host是基於linux的KVM實現的精簡hypervisor,要讓他具備網路連線的能力
VIrtIO: 一種標準化的 I/O 設備介面,用於虛擬機器(VM)存取虛擬設備,允許 Guest OS 直接存取 Host 設備,提高效能,是一種類似 PCI device,支援網路、磁碟、記憶體共享等功能。
Virtqueue 負責在 VM(Guest OS)和 Host 之間進行資料傳輸,Guest OS 會將 I/O 請求放入 Virtqueue,由 Host 來處理請求。
TUN/TAP : linux 提供的虛擬網路環境